Array aus Funktion zurückgeben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Array aus Funktion zurückgeben

    Hallo, hab wiedermal nen Hänger.

    Meine Funktion gibt das Array nicht zurück. Wer hat Lust mal drüber zu schauen?

    Die Funktion:
    PHP-Code:
    <?php


    function checkinput($wg_seite$inputarr_darf0$inputarr_nicht0) {

     
    // Kontrolliert ob Feld leer war und wenn ja, registriert eine errmsg
        
    $errmsg = array();    
        foreach (
    $inputarr_nicht0 as $key => $value) {

            if (
    $value == "" || $value == NULL){
                
    $errmsg[] = "Bitte Feld ''" $key "'' ausfüllen!<br>";
            }
        }
            
        if (isset(
    $errmsg))    {
                 
    $_SESSION["errmsg"] = $errmsg;
                 
    $_SESSION["name"] = $_POST[name];
                 
    $_SESSION["email"] = $_POST[email];
                 
    $_SESSION["homepage"] = $_POST[homepage];
                 
    $_SESSION["wohnort"] = $_POST[wohnort];
                 
    $_SESSION["text"] = $_POST[text];
            echo
    " <meta http-equiv='refresh' content='0; URL=$wg_seite'>";
            exit;
        
        }

        
    // Wenn keine leeren Felder, dann gehts hier unten weiter
    // ============================================================================================
        
      // Macht aus beiden Arrays (darf0 und nicht0) EIN Array mit Namen $checkeddinput
        
    $checkedinput = array();
        foreach (
    $inputarr_nicht0 as $key => $value) {    
            
    $checkedinput[$key] = htmlspecialchars($value);
        }
        foreach (
    $inputarr_darf0 as $key => $value) {    
            
    $checkedinput[$key] = htmlspecialchars($value);
        }
    // ============================================================================================

        
    return $checkedinput;
        
    }   
    // Ende checkedinput()
    ?>
    Auffangen der Funktion hier:
    PHP-Code:
                  $inputarray = array();
                  
    $inputarray checkinput("gaestebucheintrag.php"$inputarr_darf0$inputarr_nicht0); 
    Ich habe aber leider kein "inputarray" - wo könnte es hängen?

    Erstmal Danke vorab - Stefan

  • #2
    Wie meinst du das: kein Inputarray? Ist es leer, nicht vorhanden... die Keys zwar vorhanden aber kein Value...

    Kommentar


    • #3
      berechtigte Frage. Ich hab keine Ahnung!

      Wenn ich mir den ausgeführten Quelltext anschaue, dann sieht das so aus, als würde alles nach der Funktion nicht mehr ausgeführt (also dort, wo die Funktion aufgefangen wird). Er gibt aber keinen Fehler zurück. Und wenn ich versuche das Array in eine Session zu packen und mit foreach auszulesen, dann kommt ein Fehler in foreach, dass ein invalid argument probleme macht - was (wovon ich ausgehe) an dem nicht existenten Array liegt..

      Kommentar


      • #4
        Gebe es mal mit

        PHP-Code:
        echo"<pre>"print_r($das_array); echo"</pre>"
        aus. Am besten vorher und nachher.
        Zuletzt geändert von pascal007; 13.03.2009, 16:31.

        Kommentar


        • #5
          nothing

          Kommentar


          • #6
            Und error_reporting auf E_ALL und display_errors auf on ...?
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Ja,

              ich hab das Gefühl, in der Function ist etwas falsch ist. Etwas dass keinen Fehler erzeugt aber trotzdem die Funktion vor Beendigung verlässt.
              Oder es ist etwas falsch beim return-Wert...

              Kommentar


              • #8
                Mach doch mal ein paar Ausgaben und schau was wann passiert... mit meiner Methode print_r() und all deinen Arrays wie $checkedinput vor dem Verlassen der Funktion beim Schreiben etc.

                Kommentar


                • #9
                  var_dump eignet sich manchmal noch ein bisschen besser zum Debuggen als print_r - weil es einem auch den Typ von Variablen mit anzeigt; kann insb. bei unerwarteten false-Werten interessant sein.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Ist ja klar, denn:

                    PHP-Code:
                    // oben deklarierst du:
                    $errmsg = array();
                    ...

                    // und dann prüfst du mit:
                    if (isset($errmsg))
                    {
                       ...
                       exit 
                    // <= nur bis hier und nicht weiter

                    d.h. alles was danach kommt wird nie abgearbeitet.

                    Kommentar


                    • #11
                      Original geschrieben von asp2php
                      Ist ja klar, denn:

                      PHP-Code:
                      // oben deklarierst du:
                      $errmsg = array();
                      ...

                      // und dann prüfst du mit:
                      if (isset($errmsg))
                      {
                         ...
                         exit 
                      // <= nur bis hier und nicht weiter

                      d.h. alles was danach kommt wird nie abgearbeitet.

                      Danke für die vielen Antworten.

                      Zu oben:
                      das exit kommt ja nur, wenn der if benutzt wird. Wenn kein Fehler da ist, dann geht er ja nichts ins if rein.



                      Ich habe versucht Ausgaben in die Funktion zu machen, aber ich bekomm nix raus...

                      Kommentar


                      • #12
                        das exit kommt ja nur, wenn der if benutzt wird. Wenn kein Fehler da ist, dann geht er ja nichts ins if rein.
                        Works as designed...
                        Du suchst wahrscheinlich empty!

                        Kommentar


                        • #13
                          denkfehler! du setzt das array mittels
                          PHP-Code:
                          $errmsg = array(); 
                          und überprüfst dann, ob es gesetzt wurde
                          PHP-Code:
                          if (isset($errmsg)) 
                          das bedeutet, dass deine bedingung wahr ist! arbeite statt dessen mit
                          PHP-Code:
                          if (!empty($errmsg)) 
                          peter
                          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                          Meine Seite

                          Kommentar


                          • #14
                            Original geschrieben von Earl of Green

                            Zu oben:
                            das exit kommt ja nur, wenn der if benutzt wird. Wenn kein Fehler da ist, dann geht er ja nichts ins if rein.
                            Dein Code geht aber IMMER in if rein!

                            Lösung: s. Peters Beitrag.

                            Kommentar


                            • #15
                              PHP-Code:
                                 $errmsg = array();    
                              //...
                                  
                              if (isset($errmsg))    {
                              //...
                                      
                              echo" <meta http-equiv='refresh' content='0; URL=$wg_seite'>";
                                      exit; 
                              Erzähle niemandem, dass das Script NICHTS ausgegeben hätte.

                              Musst halt mal in den HTML-Quältext schauen, den du an den Browser gesendet hast.
                              Natürlich ist das etwas schwierig, wenn dem Browser per Meta-Refresh eine sofortige Weiterleitung befohlen wurde ...

                              Ein
                              Code:
                              header('Content-Type: text/plain');
                              ganz am Anfang des Scripts hätte die Ausgaben (ohne weiterzuleiten) ebenfalls sichtbar gemacht.

                              So eine hohe Kunst ist Debugging-by-Echo nicht.
                              Zuletzt geändert von fireweasel; 13.03.2009, 19:55.
                              Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                              Kommentar

                              Lädt...
                              X