• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Eigene Funktion gibt nicht den Wert zurück, den ich mag

aJunkie

Mitglied
Halli Hallo,

ich weiß nicht, was los ist, aber ich habe hier eine Funktion zum Uploaden von Dateien, was längst nicht fertig ist.

Allerdings wollte ich wenigstens "$meldung[]" als aus der Funktion holen, um sie mit der unteren (zweiten) Funktion auszugeben.

PHP:
    function fileUpload($name,$upload,$thumb) {
        
        $filename     = $_FILES[$name]['name']; # Original Dateiname
        $temp        = $_FILES[$name]['tmp_name']; # Temporärer Dateiname
        
        $extension = end(explode(".", $filename));                    # nach Dateiendung trennen
        $whitelist = array('mp3','wma','rar','jpg','jpeg','gif','png');    # Erlaubte Dateiendungen
        
        if(in_array(strtolower($extension),$whitelist)) { 
        
        # Verzeichnisse erstellen, falls nicht existent
        if(!is_dir($upload)) mkdir($upload);
        
        # Dateiname
        $filename = substr($filename, 0, strlen($filename) - strlen($extension) - 1); # Was macht das nochmal? :D
        $filename = str_replace(' ','_',$filename);                 # Leerzeichen durch _ ersetzen
        $filename = preg_replace("/[^a-zA-Z0-9_-]/",'',$filename);     # Nur Buchstaben, Zahlen, _ und - erlauben
        $filename = substr($filename, 0, 10);                        # Maximalzeichenlänge

        
        move_uploaded_file($temp,"$upload/$filename.$extension") or $meldung[] = 'Datei konnte nicht gespeichert werden!'; # Datei speichern
        
        # Thumb
        if($thumb == 1) { # wenn Thumb erstellt werden soll
        $thumbsDir    = 'thumbs';    
        if(!is_dir("$upload/$thumbsDir")) mkdir("$upload/$thumbsDir");
        }
        
        $meldung[] = 'Datei wurde erfolgreich hochgeladen.';
        
        } else $meldung[] = 'Dateiformat nicht erlaubt!';
        
        return $meldung[]; /*
funktioniert nicht. Ich wollte es dann irgendwo im HTML Teil so ausgeben: meldung($meldung[]);
Aber so funktioniert es: echo meldung($meldung); was aber nicht mein Ziel ist, da es dann an falscher Stelle ausgegeben wird.
*/
    }
PHP:
    # Fehlermeldungen ausgeben
    function meldung($array) {
        echo '<p style="color:red;">';
        
        foreach($array as $name => $wert) {
        echo $wert."<br>\n";
        }
        echo '</p>';
    }
Code:
<?php if(!empty($meldung)) meldung($meldung); ?>

Wie würdet ihr das regeln?

Danke.
 
Zuletzt bearbeitet:
Um das komplette Array zurück zu geben machst du einfach return $meldung; ohne die tollen []
Denn $meldung[] = "Wert" ist ja nur eine andere schreibweise von array_push; Ist also nur zum schreiben da.
Ich kriege auch eine Fehlermeldung wenn ich deine return Methode probiere auszugeben:
Fatal error: Cannot use [] for reading in ....

also wie gesgat einfach return $meldung;
Dann sollte es funktionieren
 
Das habe ich natürlich ausprobiert. Es funktioniert trotzdem nicht. :-/ Es kommt einfach nichts.
Ich fülle $meldung[] mit Inhalt und möchte außerhalb der Funktion $meldung ausgeben bzw. weiterverarbeiten.
 
Zuletzt bearbeitet:
Zurück
Oben