Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] While Schleife

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

  • bratkartoffel
    hat ein Thema erstellt [Erledigt] While Schleife.

    [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.

  • nikosch
    antwortet
    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.

    Einen Kommentar schreiben:


  • bratkartoffel
    antwortet
    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

    Einen Kommentar schreiben:


  • bratkartoffel
    antwortet
    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?

    Einen Kommentar schreiben:


  • Manko10
    antwortet
    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.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Jetzt hast Du totales Kraut produziert. Ich erkenne auch keinen tieferen Sinn in so einer Funktion.

    Einen Kommentar schreiben:


  • bratkartoffel
    antwortet
    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?

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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.

    Einen Kommentar schreiben:


  • Destruction
    antwortet
    1. dein return ist außerhalb der Schleife.
    2. nach dem return wird die Funktion beendet.

    Einen Kommentar schreiben:


  • bratkartoffel
    antwortet
    sags mir bitte

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:

Lädt...
X