tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Yaslaw
ERLEDIGT
JA
ANTWORTEN
13
ZUGRIFFE
424
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    xplOoosive xplOoosive ist offline Rookie
    Registriert seit
    Jan 2012
    Beiträge
    7
    Hallo,
    habe folgendes Problem in meinem Script, welches ich für ein Forum erstellt habe:
    Es sollen zu dem jeweiligen Thema die Kommentare aus der Tabelle 'thread_comments' abgerufen werden und für jedes Kommentar der jeweilige Inhalt der Spalte 'createdby' (der Benutzer der den Kommentar erstellt hat)in der Variable '$akt_user_result' gespeichert werden. Dies klappt auch soweit, jedoch kann ich '${$result_userinfo_comment_string.$x}' nicht in einem Array auslesen:

    PHP-Code:
    $usercomment "SELECT * FROM thread_comments WHERE topic = '$akt_thread';";
    $result_usercomment_2 mysql_query($usercomment);
    $x=0;
    while (
    $werte mysql_fetch_array($result_usercomment_2))
        {
            
            
    $akt_user_result $werte['createdby'];
            
            
        
       
    $result_userinfo_comment_string "result_userinfo_comment";
       
    $userinfo_comment_string "userinfo_comment";
       ${
    $userinfo_comment_string.$x}="SELECT Nachname, Vorname, Beitraege, dabeiseit FROM benutzerdaten WHERE Nickname = '$akt_user_result' ;";
       ${
    $result_userinfo_comment_string.$x}=mysql_query((${$userinfo_comment_string.$x}));
       
    $test mysql_fetch_array((${$result_userinfo_comment_string.$x}));
       while (
    $bla=mysql_fetch_array((${$result_userinfo_comment_string.$x})))
       echo 
    $bla['Nachname'];
       echo 
    $akt_user_result;
    $x++;

    (zur Info: der befehl 'echo $akt_user_result;' klappt, jedoch 'echo $bla['Nachname'];' nicht...)
    ich glaube, es liegt an der Verschachtelung der Variablen, gebe ich aber ein 'echo $test; ' kommt das Ergebnis 'Array'.
    Geändert von xplOoosive (10.01.12 um 15:38 Uhr) Grund: deklarierung von $x fehlte
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    item: Ich sehe nirgens das $x gesetzt wird

    item: $test kannst du mit var_dump() anschauen

    item: Verscuhe dein Code zu vereinfachen. Die variablen zusammengesetzten Variablennamen verwirren extrem. Wenn du unbedingt das SQL-Result von jedem durchgang der Schleife behalten musst, würd ich es mit einem array machen.
    PHP-Code:
    $result_userinfo_comment[$x] = mysql_query($sql_userinfo_comment[$x]); 
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Das $x kann eigentlich auch leer bleiben. Was das Problem genau ist, hab ich auch noch nicht gefunden. Aber:
    Zitat Zitat von Yaslaw Beitrag anzeigen
    item: $test kannst du mit var_dump() anschauen

    item: Verscuhe dein Code zu vereinfachen. Die variablen zusammengesetzten Variablennamen verwirren extrem. Wenn du unbedingt das SQL-Result von jedem durchgang der Schleife behalten musst, würd ich es mit einem array machen.
    PHP-Code:
    $result_userinfo_comment[$x] = mysql_query($sql_userinfo_comment[$x]); 
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  4. #4
    xplOoosive xplOoosive ist offline Rookie
    Registriert seit
    Jan 2012
    Beiträge
    7
    Danke schonmal!!
    Es gibt jedoch noch ein Problem, und zwar bei der Ausgabe der Daten:
    PHP-Code:
    <?php
    $x
    =0;
        
        while (
    $werte mysql_fetch_array($result_usercomment_2))
        {
            
            
    $akt_user_result $werte['createdby'];
            
            
        
       
    $userinfo_comment[$x] = "SELECT Nachname, Vorname, Beitraege, dabeiseit FROM benutzerdaten WHERE Nickname = '$akt_user_result';";
       
    $result_userinfo_comment[$x] = mysql_query($userinfo_comment[$x]);
       
    $test mysql_fetch_array($result_userinfo_comment[$x]);
       
    $blaa=var_dump($test);
       echo 
    $blaa;
       

              
            
        
    $x++;
    //...
    $akt_thread $_GET["thread"];
    $usercomment "SELECT * FROM thread_comments WHERE topic = '$akt_thread';";
    $result_usercomment_2 mysql_query($usercomment);                                                              
    $x=0;   
                       while ((
    $comment_info mysql_fetch_array($result_userinfo_comment[$x])) AND ($comment mysql_fetch_array($result_usercomment_2)))
               {
                   echo 
    "blaaa";
               
    ?>
               <tr><td><h2 id="intro"><u>Infos</u></h2>
               
               
               <?php print "Name: ".$comment_info['Vorname']." ".$comment_info['Nachname']; ?><br />
               <?php print "Bisherige Beitr&auml;ge: ".$comment_info['Beitraege']; ?><br />
               <?php print "Dabei seit: ".$comment_info['dabeiseit']; ?></td><td id="intro">
               <?php //print $comment['comment']; ?></p></td></tr>
               <?php 
               
               $x
    ++;
               }         
        }
    in der Tabelle sollen links die Infos über den jeweiligen User angezeigt werden und rechts der jewelige Kommentar. Es erscheint jedoch kein Kommentar.. Kann es sein, dass es daran liegt, dass mysql_fetch_array($result_usercomment_2) mehrere Strings enthält und mysql_fetch_array($result_userinfo_comment[$x]) nur einen ? Der Befehl echo "blaaa" wird auch nicht ausgeführt, was daraufhin deutet, dass die Bedingung der while-schleife wohl nicht erfüllt ist.
    der befehl var_dump($test) lieferte bei mir das folgende ergebnis:
    PHP-Code:
    array(8) {
      [
    0]=>
      
    string(3"abc"
      
    ["Nachname"]=>
      
    string(3"abc"
      
    [1]=>
      
    string(3"abc"
      
    ["Vorname"]=>
      
    string(3"abc"
      
    [2]=>
      
    string(2"24"
      
    ["Beitraege"]=>
      
    string(2"24"
      
    [3]=>
      
    string(22"03.01.2012 - 15:17 Uhr"
      
    ["dabeiseit"]=>
      
    string(22"03.01.2012 - 15:17 Uhr"
    }
    array(
    8) {
      [
    0]=>
      
    string(3"abc"
      
    ["Nachname"]=>
      
    string(3"abc"
      
    [1]=>
      
    string(3"abc"
      
    ["Vorname"]=>
      
    string(3"abc"
      
    [2]=>
      
    string(2"24"
      
    ["Beitraege"]=>
      
    string(2"24"
      
    [3]=>
      
    string(22"03.01.2012 - 15:17 Uhr"
      
    ["dabeiseit"]=>
      
    string(22"03.01.2012 - 15:17 Uhr"
    }
    array(
    8) {
      [
    0]=>
      
    string(3"abc"
      
    ["Nachname"]=>
      
    string(3"abc"
      
    [1]=>
      
    string(3"abc"
      
    ["Vorname"]=>
      
    string(3"abc"
      
    [2]=>
      
    string(2"24"
      
    ["Beitraege"]=>
      
    string(2"24"
      
    [3]=>
      
    string(22"03.01.2012 - 15:17 Uhr"
      
    ["dabeiseit"]=>
      
    string(22"03.01.2012 - 15:17 Uhr"

    seltsam finde ich hier jedenfalls, dass in jedem index der string zweimal vorhanden ist...
    Geändert von xplOoosive (10.01.12 um 18:44 Uhr)
     

  5. #5
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Das jedes 2 mal vorhanden ist, leigt an der Funktion mysql_fetch_array()
    mysql_fetch_array — Liefert einen Datensatz als assoziatives Array, als numerisches Array oder beides
    Ansonsten mit mysql_fetch_assoc() (Zugriff über Keys) oder mysql_fetch_row() (Zugriff über Index) arbeiten

    Die Bedinung (echo "BlaBla"): Du arbeitest dort mit =. Ergi weist du Werte zu. Zum vergleichen solltest du == verwenden. Zudem mischst du dort irgendwei ein while() mit einem if() oder osnstwas. Was soll die folgende Zeile genau bewirken? Warum weisst du dem $comment die Resourse von letzten SQL-Aufruf zu?
    PHP-Code:
    while (($comment_info mysql_fetch_array($result_userinfo_comment[$x])) AND ($comment $result_usercomment_2)){
        ..

    xplOoosive bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  6. #6
    xplOoosive xplOoosive ist offline Rookie
    Registriert seit
    Jan 2012
    Beiträge
    7
    Gut, ich denke ich werde es mal mit mysql_fetch_row() probieren.
    Ich habe die while-schleife jedoch erstmal falsch kopiert, habe sie nochmal neu eingegeben:
    PHP-Code:
    while (($comment_info mysql_fetch_array($result_userinfo_comment[$x])) AND ($comment mysql_fetch_array($result_usercomment_2))) 
    Was mir jedoch neu ist, ist dass ich == verwenden muss. Ich habe bis jetzt immer nur ein = benutzt z.B. bei anderen Abfragen von Arrays, wo es auch geklappt hat.
     

  7. #7
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Zum Zuweisen ist = schon richtig. Ich dachte zuerst du willst Vergleichen.


    Das mit den 2 Zuweisungen im while() ist aber nicht wirklich Sinnvoll oder?
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  8. #8
    xplOoosive xplOoosive ist offline Rookie
    Registriert seit
    Jan 2012
    Beiträge
    7
    Ich habe die while schleife nun mal getrennt:
    PHP-Code:
    <?php $e=0;   
                echo 
    $result_userinfo_comment[$e];                           
                       while (
    $comment_info mysql_fetch_array($result_userinfo_comment[$e]))
               {
                   
               
    ?>
               <tr><td><h2 id="intro"><u>Infos</u></h2>
               
               
               <?php print "Name: ".$comment_info['Vorname']." ".$comment_info['Nachname']; ?><br />
               <?php print "Bisherige Beitr&auml;ge: ".$comment_info['Beitraege']; ?><br />
               <?php print "Dabei seit: ".$comment_info['dabeiseit']; ?></td><td id="intro">
               <?php $e++;
               }
               while (
    $comment mysql_fetch_array($result_usercomment_2))
               {
                   
                    print 
    $comment['comment']; ?></p></td></tr>
               <?php 
                   
               
    }
    Klappen tut es aber immer noch nicht. echo $result_userinfo_comment[$e] gibt resource id#10 zurück, stimmt also. Die while-schleifen werden jedoch nicht aufgerufen.
     

  9. #9
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Also. Da hast du ein rechtes Chaos im Code.
    Du hast im ersten SQL wahrscheinlich genau ein Eintrag der rauskommt. Due greifst dann mit mysql_fetch_array() die Zeile ab. Somit ist der Zeiger in der Ersten Resource am Ende. Nachher willst du nochmals zgrieffen. Aber der Zeiger ist bereits am Ende und somit kommt bei $comment_info = mysql_fetch_array($result_userinfo_comment[$e] false zurück.

    Ich versuch hier das ganze mal ein wenig zu vereinfachen. Dazu muss ich verstehen was du machen willst.

    1) Du suchst die Userinformationen für einen bestimmten User aus

    2) Du suchst alle Kommentare zu einem Thread

    3) Hier kommen die Fragezeichen. Du gibst alle Kommentare aus mit den Userinformationen des zuvor ausgewählten Users. Also nicht mit dem User der die Kommentare geschrieben hat.

    Bitte erklär mal den Punkt 3) genau, was da abgehen soll.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  10. #10
    xplOoosive xplOoosive ist offline Rookie
    Registriert seit
    Jan 2012
    Beiträge
    7
    Im Punkt 3 sollen eigentlich die Infos über die User, die die Kommentare geschrieben haben mit dem jeweiligen Kommentar zusammen ausgegeben werden. Gibt es denn nicht noch eine andere Möglichkeit, die Daten auszulesen ohne die schleife while ($.. = mysql_fetch_array/assoc/row($...)) ?
    Denn das Problem hierbei ist ja der Arraycounter, sagst du.
    Geändert von xplOoosive (11.01.12 um 17:03 Uhr)
     

  11. #11
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Vergiss mal das technische. Das kommt von Alleine wenn man weiss was man will. Da scheint immer noch das Problem zu sein.

    Bei 3). Da hast ja nur ein User ausgelesen. Also nix mit mehreren Usern.
    Oder willst du alle Kommentare und da die Userinfos der dazugehörigen Usern auslesen? Also Thread 123 hat 3 Kommentare. Bei jedem Kommentar ist die user_id (oder Nick-Name?) mitgespeichert. Nun willst ud die 3 Kommentare mit dem jeweiligen User ausgeben.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  12. #12
    xplOoosive xplOoosive ist offline Rookie
    Registriert seit
    Jan 2012
    Beiträge
    7
    ich glaube ich habe die Lösung gefunden:
    reset ($array) - Setzt den internen Zeiger eines Arrays auf sein erstes Element
     

  13. #13
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Überleg dir trotzdem was du willst. Glaub mir, mit deinem Code läufst du so oder so in Probleme rein. Deine Schleife mit den 2 mysql_fetch_ drin geht nur einmal durch...

    Es ist dir überlassen, ob du klaren Code haben willst oder das klapprige Gestell welches du im Moment hast.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  14. #14
    xplOoosive xplOoosive ist offline Rookie
    Registriert seit
    Jan 2012
    Beiträge
    7
    Habe es jetzt doch geschafft, indem ich die Ergebnisse der jeweligen mysql-Abfragen in mehreren variablen gespeichert habe, damit der arraycounter nicht auf null ist. Außerdem habe ich auch die einzelnen kommentare in einem array gespeichert... also vielen dank ! (:
     

Ähnliche Themen

  1. C# (XNA!) - Array kann nicht ausgelesen werden
    Von Willywaffel im Forum .NET Café
    Antworten: 4
    Letzter Beitrag: 28.02.10, 18:25
  2. Es werden nicht alle Daten aus DB ausgelesen
    Von newwarrior im Forum PHP
    Antworten: 4
    Letzter Beitrag: 11.07.05, 18:24
  3. Antworten: 1
    Letzter Beitrag: 12.01.05, 22:37
  4. Sessionvariablen werden nicht ausgelesen!
    Von DrBrain_1000 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 28.10.02, 22:51
  5. umbrüche werden nicht ausgelesen...
    Von DJiTRONIC im Forum PHP
    Antworten: 1
    Letzter Beitrag: 14.06.02, 14:37