While-Schleife gibt nur ersten Wert aus.

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

  • While-Schleife gibt nur ersten Wert aus.

    Guten Abend,

    ich arbeite gerade an einer Kommentar Funktion für meine Seite.

    Ich habe gerade erst damit angefangen, also wollte ich als erstes, erstmal die Kommentare ausgeben lassen.

    Mein Script dazu sieht so aus:

    PHP-Code:
    <?php
        $sql_query 
    "SELECT * FROM news_comment WHERE news_id = '".$_GET['nid']."'";
        
    $sql_res mysql_query($sql_query) OR die(mysql_error());
        while(
    $sql_array mysql_fetch_array($sql_res)) {
            if(
    $sql_array['user_id']=='0') {
                echo 
    "<div id='news_detail_content_comment_box'>\n";
                echo 
    "    <div id='news_detail_content_comment'>\n";
                echo 
    "        ".$sql_array['comment_text'];
                echo 
    "    </div>\n";
                echo 
    "</div>\n";
            } else {
                
    $sql_query "SELECT * FROM user WHERE id = '".$sql_array['user_id']."'";
                
    $sql_res mysql_query($sql_query) OR die(mysql_error());
                
    $user mysql_fetch_array($sql_res);
                echo 
    "    <div id='news_detail_content_comment_rectangle'></div>\n";
                echo 
    "    <div id='news_detail_content_comment_box'>\n";
                if(
    $user['userpic']!=='') { 
                    echo 
    "    <img id='news_detail_content_comment_userpic' src='img/".$user['userpic']."'>\n";
                }
                if(!isset(
    $_SESSION['user_id'])) {
                    
    $user_nachname $user['name'];
                    echo 
    "    <h1>".$user['vorname']."&nbsp;".$user_nachname[0].".</h1>\n";
                } else {
                    echo 
    "    <h1>".$user['vorname']."&nbsp;".$user['name']."</h1>\n";
                }
                echo 
    "        ".$sql_array['comment_text'];
                echo 
    "</div>\n";            
            }
        }
    ?>
    Nun zur Erklärung:

    if($sql_array['user_id']=='0') {, soll dazu dienen, heraus zu finden ob der Kommentar von einem Gast oder einem User geschrieben wurde.

    if(!isset($_SESSION['user_id'])) {, dient dazu, heraus zu finden ob man eingeloggt ist oder nicht. Eingeloggte User dürfen den vollen Nachnamen sehen, Gäste nur den Anfangsbuchstaben.


    Nun die Ausgabe ist auch richtig, nur leider wird nur ein Kommentar ausgegeben.

    Könnt ihr mir helfen?

    MfG oelgemeyer

  • #2
    Hi oelgemeyer,

    vor der while-Schleife initialisierst du die Variable $sql_res mit einem Abfrageergebnis . . .
    PHP-Code:
    $sql_query "SELECT * FROM news_comment WHERE news_id = '".$_GET['nid']."'"
    $sql_res mysql_query($sql_query) OR die(mysql_error()); 
    . . . dann beginnt die while-Schleife . . .
    PHP-Code:
    while($sql_array mysql_fetch_array($sql_res)) { . . . 
    . . . und innerhalb der while-Schleife wird die Variable $sql_res mit einem neuen Abfrageergebnis überschrieben . . .
    PHP-Code:
    } else { 
                
    $sql_query "SELECT * FROM user WHERE id = '".$sql_array['user_id']."'"
                
    $sql_res mysql_query($sql_query) OR die(mysql_error()); 
    Jetzt ist der erste Durchlauf beendet und deine while-Schleife beginnt von vorne . . .
    PHP-Code:
    while($sql_array mysql_fetch_array($sql_res)) { . . . 
    . . . , aber: $sql_res enthält jetzt nicht mehr das Ergebnis deiner ursprünglichen Abfrage, sondern das, was du innerhalb der while-Schleife abgefragt hast.


    Ich denke mal, das dürfte der(ein) Fehler sein.

    Gruß
    Günni

    Kommentar


    • #3
      Ja klar! Danke!
      Das hört sich logisch an. Werde es sofort mal testen.

      Danke für die gute und schnelle Antwort!

      EDIT: Danke sehr! Das war der(ein^^) Fehler.
      Zuletzt geändert von oelgemeyer; 12.11.2012, 08:59.

      Kommentar

      Lädt...
      X