Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] While Schleife

Einklappen

Neue Werbung 2019

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

  • [Erledigt] While Schleife

    Hallo ich bis schon wieder!

    Was muss ich tun um in folgender Funktion ein ergebnis zu bekommen?
    PHP-Code:
    function ausgeben($row){
      
      
    $res mysql_query("SELECT * FROM `tabelle` ");
      while(
    $row mysql_fetch_array($res)){
      } return 
    $row;
       
    }
    echo 
    ausgeben ($row); 
    Oder anders gefragt: warum ist das Ergebnis immer NULL??

    andere Funktionen hab ich auch schon zu laufen bekommen, an While scheitere ich immer wieder.
    Hilfe!!!
    Gruss A.


  • #2
    Überleg mal, warum dieser Teil funktioniert
    PHP-Code:
    while($row 
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      sags mir bitte

      Kommentar


      • #4
        1. dein return ist außerhalb der Schleife.
        2. nach dem return wird die Funktion beendet.
        "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

        Kommentar


        • #5
          Nein, das ist nicht der Grund. Nicht so richtig. Die Funktion ist allerdings auch nicht wirklich sinnvoll.

          PHP-Code:
          while ($row fetch_*) {
            
          // do smthng with $row

          funktioniert so:

          1. while läuft so lange, wie der innere Ausdruck true ergibt
          2. $row = fetch_* weist $row den Wert von fetch_* zu. Dieser ist ein Array, solange ein Datensatz vorhanden ist. Danach false.
          3. Der gesamte Ausdruck liefert den Inhalt von $row zurück. Das ist bei jeder Zuweisung so.
          4. $row ist zwar nicht true, sondern array(irgendwas), wird aber beim Vergleich mit true nach bool gecastet. Massgeblich sind hier PHP's Vergleichsmasstäbe für den ==-Operator
          5. Solange die Schleife läuft, ist im inneren $row ein Array. Danach wird der Body nicht mehr durchlaufen. Der zuweisende Ausdruck wurde aber noch einmal ausgeführt, um dioe Schleifenbedingung zu bilden. Was zu $row == false, Rückgabe != true, Schleifenabbruch führt.
          6. $row ist ergo false und wird auch so zurückgegeben
          7. Die Funktion macht dehalb keinen Sinn, weil Du sowieso nur den letzten der durchlaufenen Werte zurückbekämst, wenn sie denn so liefe, wie Du Dir das vorstellst.
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            PHP-Code:
            function ausgeben($x){
              
              
            $res mysql_query("SELECT * FROM `znr` ");// WHERE kpl == '$kplneu'
              
            while($row mysql_fetch_array($res)){

             
            $x $row["kpl"];

              } return 
            $row;
            }
            ausgeben ($x); 

            wenn var_dump innerhalb der While schleife steht sehe ich das was da ist. also ein ergebnis innerhalb der function gibt es nur nicht ausserhalb.

            ich will das ergebnis einer tabellen abfrage außerhalb der function haben.


            wo ist mein fehler?

            Kommentar


            • #7
              Jetzt hast Du totales Kraut produziert. Ich erkenne auch keinen tieferen Sinn in so einer Funktion.
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Dein Anliegen gehört zu den absoluten Grundlagen, die bereits tausendfach diskutiert wurden. Lies deshalb bitte entsprechende im Netz frei erhältliche Anleitungen und lerne Grundlagen.
                Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                Kommentar


                • #9
                  Zitat von nikosch Beitrag anzeigen
                  Nein, das ist nicht der Grund. Nicht so richtig. Die Funktion ist allerdings auch nicht wirklich sinnvoll.

                  PHP-Code:
                  while ($row fetch_*) {
                    
                  // do smthng with $row

                  funktioniert so:

                  1. while läuft so lange, wie der innere Ausdruck true ergibt
                  2. $row = fetch_* weist $row den Wert von fetch_* zu. Dieser ist ein Array, solange ein Datensatz vorhanden ist. Danach false.
                  3. Der gesamte Ausdruck liefert den Inhalt von $row zurück. Das ist bei jeder Zuweisung so.
                  4. $row ist zwar nicht true, sondern array(irgendwas), wird aber beim Vergleich mit true nach bool gecastet. Massgeblich sind hier PHP's Vergleichsmasstäbe für den ==-Operator
                  5. Solange die Schleife läuft, ist im inneren $row ein Array. Danach wird der Body nicht mehr durchlaufen. Der zuweisende Ausdruck wurde aber noch einmal ausgeführt, um dioe Schleifenbedingung zu bilden. Was zu $row == false, Rückgabe != true, Schleifenabbruch führt.
                  6. $row ist ergo false und wird auch so zurückgegeben
                  7. Die Funktion macht dehalb keinen Sinn, weil Du sowieso nur den letzten der durchlaufenen Werte zurückbekämst, wenn sie denn so liefe, wie Du Dir das vorstellst.

                  ALTER FALTER!!
                  hast du studiert?
                  ich wollte eigentlich das ganze Array $row haben im dem der Tabellen inhalt steht.
                  Was eigentlich kein Problem darstellt, leider ist das Ergebnis nur innerhalb der Schleife gültig, gell?
                  ich will es aber weiterverwenden.
                  Jetzt kommst du wieder, oder?

                  Kommentar


                  • #10
                    Zitat von nikosch Beitrag anzeigen
                    Jetzt hast Du totales Kraut produziert. Ich erkenne auch keinen tieferen Sinn in so einer Funktion.
                    ja verzweiflung macht sich breit

                    Kommentar


                    • #11
                      ALTER FALTER!!
                      hast du studiert?
                      Selbst wenn nicht, ist das genau das, was Du wissen musst, um zu verstehen, wie PHP arbeitet. Grundlagenkapitel zu Ausdrücken im Manual kann ich nur empfehlen.
                      --

                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                      --

                      Kommentar

                      Lädt...
                      X