1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Datenübergabe aus array an Tabelle

Dieses Thema im Forum "PHP" wurde erstellt von didek, 4. Mai 2012.

  1. didek

    didek Grünschnabel

    Hallo zusammen,

    komme einfach nicht weiter........

    ich habe folgende Abfrage
    PHP:
    1.  
    2.     $sql_statement= "SELECT userid_comm,comment,user FROM blog_comment  WHERE userid_comm = '$user_id' ";
    3.     $resultset=mysql_query($sql_statement);
    4. while($data=mysql_fetch_array($resultset))
    5. {
    6.     echo "
    7. <table>
    8.     <tr><td>".$data[comment_user]."</td></tr>
    9.        <tr><td>".$data[comment]."</td></tr></table>
    10.     ";
    11. }
    12.  
    das für sich alleine funktioniert auch (er macht eine Tabelle mit 2 Zeilen und zeigt mir zur Zeit alle 4 Einträge die Vorhanden sind an)

    nun möchte ich diese Daten an einer anderen Stelle auf einer Webseite wieder ausgeben
    nur das es sich jetzt nicht um eine Table handelt sonder um ein DIV und das die Daten nun....über die ganze Webseite verstreut angezeigt werden..... auch bei einer Tabelle...er mach also für jeden vorhandenen Datensatz eine neu Tabelle bzw. ein neues DIV ....

    wie bekomme ich das in den Griff********

    danke für euer Hilfe
    Didek
  2. Yaslaw

    Yaslaw n/a Moderator

    Also, mit dem while() gehst du die Zeilen durch. Ergo muss der <table></table> Tag ausserhalb der while liegen
    Code (PHP):
    1. echo "<table>";
    2. while($data=mysql_fetch_array($resultset)){
    3.     echo "<tr><td>".$data[comment_user]."</td></tr>
    4.        <tr><td>".$data[comment]."</td></tr>";
    5. }
    6. echo "</table>";
  3. didek

    didek Grünschnabel

    Hallo Yaslaw,
    danke für deine Nachricht aber so meinte ich das nicht.......


    ich möchte die Daten nicht als einfaches Echo wiederausgeben, sondern an einem bestimmten Punkt des ganzen Scriptes

    z.B:

    PHP:
    1.  
    2.  $sql_statement= "SELECT userid_comm,comment,user FROM blog_comment  WHERE userid_comm = '$user_id' ";
    3.     $resultset=mysql_query($sql_statement);
    4. while($data=mysql_fetch_array($resultset))
    5. {
    6.    $ausgabe =" ".$data[comment]." ";
    7. }  
    8.  
    .....
    ......
    ........irgendwo im Script
    PHP:
    1.  
    2. <div>$ausgabe</div>
    3.  
    auch das bekomme ich auf die reihe.........

    was ich nicht hinbekomme ist, da es sich dabei um ein array handelt und die Ausgabe als $ausgabe nicht alle Datensätze anzeigt die Vorhanden sind....sondern immer nur den letzten...und wenn er alles anzeigt, dann finde ich für jeden Datensatz einen neuen DIV .....
    was ich aber so nicht haben will........
    wie bekomme ich es hin das dieses array an anderer Stelle verfünftig wieder ausgegeben wird?

    Dank für eure Mühe
    didek
  4. Yaslaw

    Yaslaw n/a Moderator

    Dann solltest du das Resultat in einen 2 dimensionalen Array schreiben
    Code (PHP):
    1. //Array initialisieren
    2. $table = array();
    3. while($row=mysql_fetch_array($resultset)){
    4.     //Die einzelnen Zeilen in den Array abspitzen. Zeile 1 hat so die ID 0
    5.     $table[] =$row;
    6. }
    7.  
    8. //irgendwo im Script den comment der 3ten Zeile ausgeben (Index beginnt bei 0!)
    9. echo $table[2]['comment'];
    10.  
    11. //oder als ganze Tabelle
    12. echo "<table>";
    13. foreach($table as $row){
    14.     echo "<tr><td>{$row['comment_user']}</td><td>{$row['comment']}</td></tr>";
    15. }
    16. echo "</table>";
    17.  
  5. didek

    didek Grünschnabel

    Hallo zusammen,

    @Yaslaw, danke für deine Mühe und Hilfe....


    aber ich komme zum verrxxxxx nicht weiter......

    ich habe mal ein Bild von der ganzen Sache gemacht

    Unbenannt-1.jpg

    das ist meine Ausgangssituation.....

    ich habe zwei Tabellen

    Tabelle1
    id (INT14) -> AUTO_INCREMENT (bei Eintrag wird eine Id vergeben)
    user (INT14) -> Name des Users/Webseite
    message -> Inhalt des Eintrages
    date -> Tag des Eintrages
    status -> bei Neueintrag so wie Eingestellt (Online, Offline so wie der User es haben will)
    entry -> bei Neueintrag autom. Neu

    Tabell2
    id (INT14) -> AUTO_INCREMENT (bei Eintrag wird auch hier eine Id vergeben)
    userid_comm (INT14) -> id aus tabelle1
    comment -> hier kann jeder Seitenbesucher einen Kommentar schreiben

    soooo.....

    nun möchte ich wie oben im Bild zu sehen......
    auf der Seite Tabelle1
    die Einträge zeigen die der User (z.B. User1) gemacht hat......

    auf der SeiteTabelle2
    die dazugehörigen Einträge der Webseitenbesucher anzeigen (diese aber als Liste im Feld Comment) nicht so wie er das im Moment macht...für jeden Eintrag eine neue Zeile

    die Abfrage die ich dazu erstellt habe sieht wie folgt aus:
    PHP:
    1.  
    2. $result = mysql_query ('SELECT  T1.*, T2.comment, T2.comment_user, T2.userid_comm,  DATE_FORMAT(T1.date, "%d.%m.%Y, %H:%i") as DatumFormatiert  FROM  blog T1, blog_comment T2 WHERE T2.userid_comm= T1.id ');
    3. while($row = mysql_fetch_array($result)){
    4.     //Die einzelnen Zeilen in den Array abspitzen. Zeile 1 hat so die ID 0
    5. $table[] =$row;
    6. foreach($table as $row){
    7. $user = $row['comment_user'];
    8. $comment = $row['comment'];
    9. }
    10. $published = ($row['status'] == Online) ? "<span style=\"color:green;\">{$row['status']}</span>" : "<span style=\"color:#FF6633;\">{$row['status']}</span>";
    11.         $eintrag1 = ($row['entry'] == Neu AND ($row['status'] == Online)) ? "<span style=\"color:red;font-weight:bold;\">{$row['user']}</span>" : "<span style=\"color:#FF6633;\">{$row['user']}</span>";
    12.         $eintrag2 = ($row['entry'] == Neu AND ($row['status'] == Online)) ? "<span style=\"color:red;\">New</span>" : "{$published}";
    13. $post_list_blog.= "
    14.  
    15.  
    16. <!--- Einträge in Tabelle1 -->
    17. {$eintrag1}
    18. {$row['DatumFormatiert']}
    19. usw....
    20.  
    21.  
    22. <!--- das Feld Comment in Tabelle2 --->
    23. $user, $comment
    24.  
    25. ";
    26. }
    27.  
    28.  

    ich komme so einfach nicht weiter...vielleicht ist meine ganze Überlegung aber auch falsch


    vielleicht hat von euch einer eine Idee.......
    (etwas fertiges zu nehmen was es ja mehr als genug gibt im Internet..... kommt nicht in betracht)


    Danke für eure Mühe und Hilfe

    didek
    Zuletzt bearbeitet: 7. Mai 2012
  6. Yaslaw

    Yaslaw n/a Moderator

    item: Formatiere dein Code und du wirst eingie Dinge sehen
    Hier mal dein Code formatiert:
    Code (PHP):
    1. while($row = mysql_fetch_array($result)){
    2.     //Die einzelnen Zeilen in den Array abspitzen. Zeile 1 hat so die ID 0
    3.         $table[] =$row;
    4.     foreach($table as $row){
    5.         $user = $row['comment_user'];
    6.         $comment = $row['comment'];
    7.     }
    8.     $published = ($row['status'] == Online) ? "<span style=\"color:green;\">{$row['status']}</span>" : "<span style=\"color:#FF6633;\">{$row['status']}</span>";
    9.             $eintrag1 = ($row['entry'] == Neu AND ($row['status'] == Online)) ? "<span style=\"color:red;font-weight:bold;\">{$row['user']}</span>" : "<span style=\"color:#FF6633;\">{$row['user']}</span>";
    10.             $eintrag2 = ($row['entry'] == Neu AND ($row['status'] == Online)) ? "<span style=\"color:red;\">New</span>" : "{$published}";
    11.     $post_list_blog.= "
    12.  
    13.  
    14.         //Eintrage in Tabble1
    15.         {$eintrag1}
    16.         {$row['DatumFormatiert']}
    17.         usw....
    18.  
    19.  
    20.         //das Feld Commet in Tabelle2
    21.          $user, $comment
    22.  
    23.     ";
    24. }
    Also, du siehst wird der foreach bei jedem while-Durchgang ausgeführt. Das sollte glaub nicht sein...

    item: Um die Comments zusammenzunehmen könntest du im SQL ein GROUP_CONCAT() verwenden
  7. didek

    didek Grünschnabel

    Hallo zusammen,

    @Yaslaw...Danke für deine Mühe

    aber ich denke das ich damit noch ein wenig Überfordert bin......werde wohl noch intensiver lesen müssen

    Grüße
    didek
  8. Yaslaw

    Yaslaw n/a Moderator

    Nimm trotzdem den foreach() aus dem while() heraus. Das kann so nicht das sein was du willst

Diese Seite empfehlen