Top-Themen

Aktuelle Themen (A bis Z)

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!

Mitglied: 48067

48067 (Level 1)

26.12.2007, aktualisiert 05.02.2008, 5183 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 ..
Ähnliche Inhalte
PHP
PHP Mail Funktion
Frage von gamerffPHP5 Kommentare

Hallo Forum, ich versuche grade mit der PHP mail() Funktion ein Kontaktformular zu erstellen. Leider kommt beim absenden immer ...

Switche und Hubs

PTelekom VDSL-Switch und Endgeräte. Funktion?

Frage von pixel24Switche und Hubs4 Kommentare

Hallo zusammen, für meine Fragestellung muss ich etwas ausholen. In einem Seniorenstift (älteres Baujahr) haben wir in den Bebwohnerzimmern ...

LAN, WAN, Wireless

POE-Switch Problem

Frage von slanskyLAN, WAN, Wireless4 Kommentare

Hallo Leute, ich hatte heute folgendes Problem, vielleicht kann mir das jemand erklären. Ich habe 2 POE Switche, einen ...

PHP

PHP PDO Problem

gelöst Frage von Tiggr1994PHP1 Kommentar

Hallo zusammen, Ich versuche gerade PHP zu lernen und bisher klappte es recht gut, jetzt habe ich jedoch ein ...

Neue Wissensbeiträge
iOS
WatchChat für Whatsapp
Tipp von Criemo vor 1 TagiOS3 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor !!!
Tipp von Criemo vor 1 TagiOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Off Topic
Avengers 4: Endgame - Erster Trailer
Information von Frank vor 3 TagenOff Topic2 Kommentare

Ich weiß es ist Off Topic, aber ich freue mich auf diesen Film und vielleicht geht es anderen hier ...

Webbrowser
Microsoft bestätigt Edge mit Chromium-Kern
Information von Frank vor 4 TagenWebbrowser5 Kommentare

Microsoft hat nun in seinem Blog bestätigt, dass die nächste Edge Version kein EdgeHTML mehr für die Darstellung benutzen ...

Heiß diskutierte Inhalte
Windows Netzwerk
Kerio. Kann keine Mails empfangen aber senden. Wer ist schuld. Kerio oder Windows domäne?
gelöst Frage von frosch2Windows Netzwerk25 Kommentare

Hallo, es existiert ein Problem bei uns mit dem mailen. Alle bestehenden Nutzer können mailen. Raus wie rein. Neuen ...

Hosting & Housing
VMware VM mit über 1TB RAM für S4HANA
Frage von Leo-leHosting & Housing21 Kommentare

Hallo zusammen, wer hat Erfahrng und kann mir einen Tipp zum sizing von S4HANA Systemen geben? Wir möchten, zunächst ...

LAN, WAN, Wireless
WLAN und Ausmessung - Eine Glaubensfrage?
Frage von ptr2brainLAN, WAN, Wireless18 Kommentare

Liebe Experten, als Sys-Admin habe ich mir schon öfter die Frage gestellt, ob es sich beim Thema WLAN und ...

Exchange Server
Exchange Server 2010: Keine Eingehenden E-MAils
gelöst Frage von gabeBUExchange Server17 Kommentare

Hallo Zusammen Ich habe das kurzen auf dem Exchange 2010 Server das Problem, dass ich keine externen E-Mails mehr ...