Abfrage um in die switch anweisung zu springen

fabilazar

Mitglied
Hallo,
kann mir jmd. sagen mit welcher Abfrage ich in die switch-Anweisung springen kann
Code:
 ...
 if($_FILES[$fname]['error'])
 		{
 			switch($_FILES[$fname]['error'])
 			 {
 				case UPLOAD_ERR_INI_SIZE:
 				$this->error = "Die Datei ist zu groß";
 				return false;
 				case UPLOAD_ERR_FORM_SIZE:
 				$this->error = "Die Datei ist zu groß";
 				return false;
 				case UPLOAD_ERR_PARTIAL:
 		    	$this->error = "Die Datei wurde nur teilweise hochgeladen";
 				return false;
 				case UPLOAD_ERR_NO_FILE:
 		    	$this->error = "Das Hochladen schlug fehl. Es wurde keine Datei angegeben ";
 				return false;
 			 }
 		}
Wenn ich keine Datei hochlade müßte eine Fehlermeldung kommen, nämlich Case UPLOAD_ERR_NO_FILE die kommt aber nicht...
Gruss
 
Hm, vielleicht solltest du dir nochmal anschauen, wie man richtig switch/case schreibt...
Versuchs mal so:

PHP:
switch($_FILES[$fname]['error'])
{
    case 'UPLOAD_ERR_INI_SIZE':
        $this->error = "Die Datei ist zu groß";
        return FALSE;
    break;
    
    case 'UPLOAD_ERR_FORM_SIZE':
        $this->error = "Die Datei ist zu groß";
        return FALSE;
    break;
    
    case 'UPLOAD_ERR_PARTIAL':
        $this->error = "Die Datei wurde nur teilweise hochgeladen";
        return FALSE;
    break;
    
    case 'UPLOAD_ERR_NO_FILE':
        $this->error = "Das Hochladen schlug fehl. Es wurde keine Datei angegeben";
        return FALSE;
    break;
    
    default:
        return TRUE;
    break;
}
 
Nein, daran liegt es nicht.
Sorry, war mein Fehler. Ich meinte auch die If-Anweisung. Was muss ich da für einen Ausdruck haben, damit er in den switch-Block geht.
Gruss
 
Die IF-Anweisung kannst du im Prinzip weglassen, wenn er in dem Switch-Block nichts definiertes findet geht er über default: raus.

Wenn du trotzdem nicht auf die IF-Anweisung verzichten möchtest:

PHP:
if(isset($_FILES[$fname]['error']) && $_FILES[$fname]['error'] != '')
...
 
Danke für deine Hilfe!
Alllerdings hab ich noch irgendwo einen kleinen Fehler, da er nie die Standardfehler- ausgabe macht sondern meine implentierten Fehlermeldungen?
Hier der Code, viel. kannst du mir sagen woran es liegt und es korrigieren:
Code:
 $last = strrchr($_FILES[$fname]['name'], "."); 
 		 
 		if(($last != ".zip") OR
 		(isset($_FILES[$fname]['error']) AND $_FILES[$fname]['error'] != ''))
 			{
 				switch($_FILES[$fname]['error'])
 				 {
 				case 'UPLOAD_ERR_INI_SIZE':
 				$this->error = "Die Datei ist zu groß";
 				return false;
 				case 'UPLOAD_ERR_FORM_SIZE':
 				$this->error = "Die Datei ist zu groß";
 				return false;
 				case 'UPLOAD_ERR_PARTIAL':
 		    	$this->error = "Die Datei wurde nur teilweise hochgeladen";
 				return false;
 				case 'UPLOAD_ERR_NO_FILE':
 		    	$this->error = "Das Hochladen schlug fehl. Es wurde keine Datei angegeben oder es ist kein zip-Archiv";
 				return false;
 				 }
 			}	
 					 
 	    if(!move_uploaded_file($_FILES[$fname]['tmp_name'],	   $this->tmpdir."/".$_FILES[$fname]['name'])) 
 		{
 			$this->error = "Datei wurde nicht kopiert!";
 			return false;
 		}
 		else
 		{
 			$this->tmpfile = $_FILES[$fname]['name'];
 			return true;
 		}
Gruss
 
Hm, ich versteh grade nicht so wirklich was du möchtest?!
Er gibt deine definierten Fehler nicht aus?
Oder wie soll ich das von dir oben geschriebene interpretieren?!

Poste hier doch nochmal den Rest der Klasse...

Nebenbei nochmal was zu deinem "switch/case" ... Am Ende jedes "case:" gehört ein "break;" bevor das nächste "case" kommt. Schau dir mein "switch/case" an und deins, dann wirste den Unterschied sehen...
 
Nein, bei bestimmten Fehlern möchte ich dass er Standardfehlermeldung ausgibt (Ausgabe ist woanders deklariert), und nicht die Fehlermeldungen von mir.
Z.B. Wenn ich keine Datei für den Upload ausgewählt habe, und dann auf upload drücke, dann soll die Standard-Fehlermeldung kommen nämlich Case UPLOAD_ERR_NO_FILE.
Stattdessen bekomme ich jedesmal die Fehlermeldung die ich implementiert habe :
Datei wurde nicht kopiert!
Und er soll schon auf die Standardfehler reagieren!
Gruss
 
Bzgl. Beitrag 2:
Die breaks kann man sich hier getrost sparen – es wird ja schon vorher via return aus der Funktion gesprungen. Ein „Durchfallen“ in den nächsten case-Zweig ist nicht möglich.
 
fabilazar hat gesagt.:
Nein, bei bestimmten Fehlern möchte ich dass er Standardfehlermeldung ausgibt (Ausgabe ist woanders deklariert), und nicht die Fehlermeldungen von mir.
Z.B. Wenn ich keine Datei für den Upload ausgewählt habe, und dann auf upload drücke, dann soll die Standard-Fehlermeldung kommen nämlich Case UPLOAD_ERR_NO_FILE.
Stattdessen bekomme ich jedesmal die Fehlermeldung die ich implementiert habe :
Datei wurde nicht kopiert!
Und er soll schon auf die Standardfehler reagieren!
Gruss
Das wird dann wohl daran liegen, dass du $_FILES[$fname]['error'] mit Zeichenketten vergleichst, obwohl die Variable eigentlich einen Ganzzahlwert enthalten müsste. Ersetze also 'UPLOAD_ERR_INI_SIZE' durch UPLOAD_ERR_INI_SIZE etc.
 
Zurück