Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Probleme mit der PHP-Funktion switch!

Frage Entwicklung PHP

Mitglied: 48067

48067 (Level 1)

26.12.2007, aktualisiert 05.02.2008, 5066 Aufrufe, 12 Kommentare

Moin.

Ich habe ein Problem!
In der PHP-Datei file-ext.lib.php habe ich eine Switch-Funktion die wie folgt aussieht:

01.
 
02.
$getext=end(explode(".", $Datei)); 
03.
         
04.
         
05.
        switch ($getext
06.
07.
        case MOV: $ext["name"]="mov"
08.
                  $ext["thumb"]="Include this mov as thumb"
09.
                  $ext["big"]="Inlcude this mov as big vid"
10.
                  $ext["date"]="2007-12-26 13:07"
11.
                  $supportedfile=1; 
12.
                  $isimage=0; 
13.
                  break
14.
                   
15.
        case MPG: $ext["name"]="mpg"
16.
                  $ext["thumb"]=""
17.
                  $ext["big"]=""
18.
                  $ext["date"]="2007-12-26 13:07"
19.
                  $supportedfile=1; 
20.
                  $isimage=0; 
21.
                  break
22.
      default: $ext["name"]=""
23.
                 $ext["thumb"]=""
24.
                 $ext["big"]=""
25.
                 $ext["date"]=""
26.
                 $supportedfile=0; 
27.
                 break
28.
29.
      
Leider kann ich in der index.php die Werte für $supportedfile usw. auslesen. Auch wenn ich den Inhalt dieser Datei in die index.php reinkopiere und das include wegkommentiere kann ich diese Werte nicht auslesen.

Wie kann ich diese Werte nun in der index.php auslesen? (Wenn möglich mit der include-Function)
Bitte helft mir!
Mitglied: runlevel2
26.12.2007 um 17:12 Uhr
Hy,

PHP denkt, bei MOV und MPG handelt es sich um Konstanten und versucht, diese aufzulösen. Einfache Anführungszeichen verwenden, dann gehts! Also:

01.
switch ($getext
02.
03.
        case 'MOV': $ext["name"]="mov";
01.
case 'MPG': $ext["name"]="mpg";
Gruss, runlevel2
Bitte warten ..
Mitglied: masterG
26.12.2007 um 20:38 Uhr
Kann net gehen!
01.
        switch ($getext
02.
03.
        case 'MOV': $ext["name"]="mov"
04.
                  $ext["thumb"]="Include this mov as thumb"
05.
                  $ext["big"]="Inlcude this mov as big vid"
06.
                  $ext["date"]="2007-12-26 13:07"
07.
                  $supportedfile=1; 
08.
                  $isimage=0; 
09.
                  break
10.
                   
11.
        case 'MPG': $ext["name"]="mpg"
12.
                  $ext["thumb"]=""
13.
                  $ext["big"]=""
14.
                  $ext["date"]="2007-12-26 13:07"
15.
                  $supportedfile=1; 
16.
                  $isimage=0; 
17.
                  break
18.
      default: $ext["name"]=""
19.
                 $ext["thumb"]=""
20.
                 $ext["big"]=""
21.
                 $ext["date"]=""
22.
                 $supportedfile=0; 
23.
                 break
24.
      }
Du hast überall bei den Casename das ' ' vergessen
Bitte warten ..
Mitglied: filippg
27.12.2007 um 00:08 Uhr
Hallo,

ich weiss nicht mehr wie streng php das handhabt. Aber die allermeisten Programmiersprachen das so nicht machen: switch ist ein Block, und variablen, die in einem Block definiert werden haben als Scope auch nur den Block und sind außerhalb (also nach dem switch-Block) ungültig. Lösung: Variable vor dem Block definieren, also vor dem switch ein "$supportedfile=0". Gilt natürlich auch für alle anderen Varialben.
Dem mit den Anführungszeichen kann ich nur halb beipflichten: Wenn du die Anführungszeichen weglässt interpretiert php das als Konstante, die ebendiesen Wert hat (also bei MOV eine Konstante mit dem Wert "MOV"). Sauber ist das aber nicht, in sofern mach die Zeichen lieber. Je nach Debuglevel meckert der Interpreter sonst auch.

Filipp
Bitte warten ..
Mitglied: 48067
27.12.2007 um 12:41 Uhr
Moin.

Erstmal Danke für die schnellen Antworten

Ich habe jetzt die leichten Anführungszeichen '' gesetzt und wie von Filipp erklärt die Variablen vor den switch-block gesetzt. Diese Datei habe ich in der index.php included jedoch lassen sich die Variablen dort nicht auslesen und benutzen.

Wo liegt der Fehler?
Bitte warten ..
Mitglied: runlevel2
27.12.2007 um 21:44 Uhr
Hy nochmal,

folgender Test:

Datei test2.php hat folgenden Inhalt:
01.
<?php 
02.
 
03.
$Datei="hallo.MOV"
04.
 
05.
$getext=end(explode(".", $Datei)); 
06.
         
07.
         
08.
        switch ($getext
09.
10.
        case 'MOV': $ext["name"]="mov"
11.
                  $ext["thumb"]="Include this mov as thumb"
12.
                  $ext["big"]="Inlcude this mov as big vid"
13.
                  $ext["date"]="2007-12-26 13:07"
14.
                  $supportedfile=1; 
15.
                  $isimage=0; 
16.
                  break
17.
                   
18.
        case 'MPG': $ext["name"]="mpg"
19.
                  $ext["thumb"]=""
20.
                  $ext["big"]=""
21.
                  $ext["date"]="2007-12-26 13:07"
22.
                  $supportedfile=1; 
23.
                  $isimage=0; 
24.
                  break
25.
      default: $ext["name"]=""
26.
                 $ext["thumb"]=""
27.
                 $ext["big"]=""
28.
                 $ext["date"]=""
29.
                 $supportedfile=0; 
30.
                 break
31.
32.
 
33.
?>
Datei test1.php sieht so aus:

01.
<?php 
02.
 
03.
include("test2.php"); 
04.
 
05.
echo "supportedfile hat den Wert: $supportedfile\n"
06.
 
07.
?>
Bei einem Test auf der Shell bekomme ich folgendes Ergebnis:

[kurt@kurt dev]$ php test1.php
supportedfile hat den Wert: 1

Gruss, Kurt
Bitte warten ..
Mitglied: masterG
03.01.2008 um 10:19 Uhr
Soll das Programm nur über die Shell laufen oder auch am Webserver?!?

masterG
Bitte warten ..
Mitglied: 48067
03.01.2008 um 12:19 Uhr
Soll das Programm nur über die Shell
laufen oder auch am Webserver?!?

masterG

Das Programm soll auch auf einem Webserver laufen. Was ist die Shell??

Nochmal zur Switch-Schleife:

Dürfen kommentare in die Schleife geschrieben werden?
Bitte warten ..
Mitglied: runlevel2
03.01.2008 um 21:09 Uhr
Hallo,

Die Shell ist ein Befehlsinterpreter auf Betriebssystem-Ebene. Damit kann man z. B. PHP-Code ohne Webserver ausführen. Bei Programmlistings hier im Forum ist das oft die einfachste Möglichkeit, das Ergebnis eines Programms zu zeigen. Die Scripten sollten natürlich auch auf dem Webserver funktionieren.

In Schleifen dürfen Kommentare stehen. PHP wertet diese nicht aus.

Gruss, Kurt
Bitte warten ..
Mitglied: 48067
05.02.2008 um 15:22 Uhr
Nach langer Zeit:
Ich hab noch ein Problem!

Ich habe in der gallery.php die Datei ext.lib.php included, wie folgt:

Zeile 9: include "system/ext.lib.php";

Zeile 155: isfilesupported($pfad,$Datei);

Zeile 157: if($supportedfile==1)
{
...
}
else
{No imgages}

Beim Laden passiert nichts außer dass der else teil in kraft tretet (((


Wie löse ich dass problem???


Zur Info: ext.lib.php::

<?php

function isfilesupported($pfad,$Datei)
{

$getext=strtoupper(end(explode(".", $Datei)));

switch ($getext)
{
case 'MOV': $ext["name"]="mov";
$ext["thumb"]="Include this mov as thumb";
$ext["big"]=$Datei."<br><br><br>\n<embed name=\"".$Datei."_embed\" type='video/quicktime' pluginspage='' src='".$pfad."/".$Datei."' displaysize='4' bgcolor='#00' showcontrols='1' showtracker='1' showdisplay='0' showstatusbar='1' volume='100' videoborder3d='1' transparentstart='1' height='300' width='400' autoplay='false'> </embed>";
$ext["date"]="2007-12-26 13:07";
$supportedfile=1;
$isimage=0;
break;

case 'MPG': $ext["name"]="mpg";
$ext["thumb"]="Include this mov as thumb";
$ext["big"]=$Datei."<br><br><br>\n<embed name=\"".$Datei."_embed\" type='video/mpg' pluginspage='' src='".$pfad."/".$Datei."' displaysize='4' bgcolor='#00' showcontrols='1' showtracker='1' showdisplay='0' showstatusbar='1' volume='100' videoborder3d='1' transparentstart='1' height='300' width='400' autoplay='false'> </embed>";
$ext["date"]="2007-12-26 13:07";
$supportedfile=1;
$isimage=0;
break;

case 'MPEG': $ext["name"]="mpeg";
$ext["thumb"]="Include this mov as thumb";
$ext["big"]=$Datei."<br><br><br>\n<embed name=\"".$Datei."_embed\" type='video/mpgeg' pluginspage='' src='".$pfad."/".$Datei."' displaysize='4' bgcolor='#00' showcontrols='1' showtracker='1' showdisplay='0' showstatusbar='1' volume='100' videoborder3d='1' transparentstart='1' height='300' width='400' autoplay='false'> </embed>";
$ext["date"]="2007-12-26 13:07";
$supportedfile=1;
$isimage=0;
break;


case 'JPG': $supportedfile=1;
$isimage=1;
break;

case 'JPEG': $supportedfile=1;
$isimage=1;
break;

case 'PNG': $supportedfile=1;
$isimage=1;
break;

case 'GIF': $supportedfile=1;
$isimage=1;
break;

case 'BMP': $supportedfile=1;
$isimage=1;
break;

default: $ext["name"]="";
$ext["thumb"]="";
$ext["big"]="";
$ext["date"]="";
$supportedfile=0;
break;
}

}
?>
Bitte warten ..
Mitglied: runlevel2
05.02.2008 um 15:57 Uhr
Hy,

die Var $supportedfile ist nur innerhalb der Funktion gültig. Du hast zwei Möglichkeiten.

1) Du machst die Var $supportedfile in der Funktion global gültig. In ext.lib.php:
01.
<?php 
02.
 
03.
function isfilesupported($pfad,$Datei
04.
05.
 
06.
global $supportedfile
07.
 
08.
$getext=strtoupper(end(explode(".", $Datei))); 
09.
10.
11.
.

2) In der Datei gallery.php die Funktion wie folgt aufrufen:
01.
$supportedfile=isfilesupported($pfad,$Datei);
und in ext.lib.php ein return der Var setzen:
01.
02.
03.
 
04.
default: $ext["name"]=""
05.
$ext["thumb"]=""
06.
$ext["big"]=""
07.
$ext["date"]=""
08.
$supportedfile=0; 
09.
break
10.
 
11.
 
12.
13.
 
14.
return $supportedfile
15.
16.
?>
Möglichkeit 2 ist die sauberere Lösung.

Gruss, Kurt
Bitte warten ..
Mitglied: 48067
05.02.2008 um 16:06 Uhr
Danke! Es klappt! Hast du dir PHP selbst beigebracht oder brauchst du es beruflich?
Bitte warten ..
Mitglied: runlevel2
05.02.2008 um 16:22 Uhr
Hy nochmal,

für die PHP-Basics hab ich einen Kurs besucht. Wurde damals vom Arbeitsamt angeboten. Danach kam ich selber weiter. Beruflich kann ich die Sprache gut brauchen (Sysadmin).

Grüße, Kurt
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Router & Routing
gelöst VLAN Probleme mit Alix APU.1D und Switch (81)

Frage von dan0ne zum Thema Router & Routing ...

Microsoft Office
gelöst Excel: Text in Zellbereich prüfen mit Vergleichstext ggf. mit Exact-Funktion (5)

Frage von Michi1 zum Thema Microsoft Office ...

Microsoft Office
Office 2016 Probleme mit Outlook (5)

Frage von killtec zum Thema Microsoft Office ...

JavaScript
AngularJS Variable über Input in Funktion ausführen

Frage von badkilla zum Thema JavaScript ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...