Betrifft PHP&MYSQL --> Dynamische Tabelle & Daten rauslesen

  • geschlossen

  • dAsTyLeR
  • 1069 Aufrufe 3 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Betrifft PHP&MYSQL --> Dynamische Tabelle & Daten rauslesen

    Hey Leutzz.. alles fit??

    Ich habe ein kleines Problem. Ich muss (von der Schule aus) ein Projekt machen. Meines besteht darin, eine Datenbank für einen Verein (Musikverein) zu aufzuziehen und über PHP darauf zuzugreifen. Das hat auch alles funktioniert. Hier ein kleines Beispiel (aus meinem script):

    PHP-Quellcode

    1. <?php
    2. /* Verbindung aufbauen, auswählen einer Datenbank */
    3. $mysqlhost='localhost';
    4. $mysqluser='root';
    5. $mysqlpwd='';
    6. $connection=mysql_connect($mysqlhost,$mysqluser,$mysqlpwd);
    7. $mysqldb="Vereinsverwaltung";
    8. mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
    9. /* ausführen einer SQL Anfrage */
    10. $mitglied_sql = "SELECT * FROM Mitglied";
    11. $mitglied_query = mysql_query($mitglied_sql) or die("Anfrage nicht erfolgreich");
    12. $anzahlzeilen = mysql_num_rows($mitglied_query);
    13. echo "Anzahl der Datensätze: ".$anzahlzeilen;
    14. ?>
    15. <table cellpadding="1" cellspacing="3" border="1">
    16. <tr>
    17. <td>ID</td>
    18. <td>Name</td>
    19. <td>Vorname</td>
    20. <td>Strasse</td>
    21. <td>Plz</td>
    22. <td>Ort</td>
    23. <td>Geburtstag</td>
    24. <td>Eintrittsjahr</td>
    25. <td>Suerpfler</td>
    26. <td>Passiv</td>
    27. <td>Jahresbeitrag</td>
    28. <td>Bezahlt</td>
    29. <td>Zahldatum</td>
    30. </tr>
    31. <?php
    32. while ($mit = mysql_fetch_array($mitglied_query)){
    33. ?>
    34. <tr>
    35. <td><?=$mit['M_ID']?></td>
    36. <td><?=$mit['M_Name']?></td>
    37. <td><?=$mit['M_VName']?></td>
    38. <td><?=$mit['M_Strasse']?></td>
    39. <td><?=$mit['M_Plz']?></td>
    40. <td><?=$mit['M_Ort']?></td>
    41. <td><?=$mit['M_Geburtstag']?></td>
    42. <td><?=$mit['M_Eintrittsjahr']?></td>
    43. <td><?php if($mit['M_Suerpfler']==0)
    44. {
    45. echo("Nein");
    46. }
    47. else
    48. {
    49. echo("Ja");
    50. }
    51. ?></td>
    52. <td><?php if($mit['M_Passiv']==0)
    53. {
    54. echo("Nein");
    55. }
    56. else
    57. {
    58. echo("Ja");
    59. }
    60. ?></td>
    61. <td><?=$mit['M_Jahresbeitrag']?></td>
    62. <td><?php if($mit['M_Bezahlt']==0)
    63. {
    64. echo("Nein");
    65. }
    66. else
    67. {
    68. echo("Ja");
    69. }
    70. ?></td>
    71. <td><?=$mit['M_Zahldatum']?></td>
    72. </tr>
    73. <?php
    74. }
    75. ?>
    76. </table>
    Alles anzeigen


    Die Ausgabe entsprach auch meinen Vorstellungen. Das problem ist, das ich nun eine Dynamische Tabelle erstellen mag, da ja die Abfrage (was ich ausgegeben haben will z.B. nur name und eintrittsjahr) immer unterschiedlich ist. Dann hab ich mal gegoogelt und bin auf folgenden script gekommen, den ich dann auch angewendet habe (und es hat funktioniert):

    PHP-Quellcode

    1. <?php
    2. /* ausführen einer SQL Anfrage */
    3. $mitglied_sql = "SELECT M_ID AS Mitgliedsnummer, M_Name AS Nachname, M_VName AS Vorname FROM Mitglied";
    4. $mitglied_query = mysql_query($mitglied_sql) or die("Anfrage nicht erfolgreich");
    5. /* Ausgabe der Ergebnisse in HTML */
    6. echo "<table border=1>\n";
    7. while ($line = mysql_fetch_array($mitglied_query, MYSQL_ASSOC)) {
    8. echo "\t<tr>\n";
    9. foreach ($line as $col_value) {
    10. echo "\t\t<td>$col_value</td>\n";
    11. }
    12. echo "\t</tr>\n";
    13. }
    14. echo "</table>\n";
    15. /* Freigeben des Resultsets */
    16. mysql_free_result($mitglied_query);
    17. ?>
    Alles anzeigen


    Damit bin ich auch (mehr oder weniger) zufrieden. Das einzige Problem vor dem ich stehe ist, das ich die Attribute (Die Spaltennamen) nicht dynamisch (automatisch) ausgeben lassen kann. Dieser script liefert und den inhalt der Tabellen, aber keinen "kopf". Ich könnte zwar das "von hand" eingeben (html --> statisch) allerdings ist die abfrage ja jedesmal anders und dann würds nicht mehr passen..

    Nun meine Frage :) : Gibt es einen Befehl das man die Attribute dynamisch auslesen und ausgebenlassen kann (und wenn ja, wie ist der??) ?? habe das "ganze Internet" gegoogelt, aber ich find nix :(

    wäre echt sau geil wenn mir jemand da helfen könnte, da ich bald zwischenabgabe habe (in 2 wochen) und diesen schritt (& diverse kleinigkeiten dazu :) ) bis dahin haben muss :)

    mfg sTyLeR ;)

    PS: Ich muss noch dazu sagen, das ich mich nur mittelmäßig auskenne, also wäre ich um eine "teilweise" ausfühliche erklärung/hilfe echt mords dankbar ;)
  • Hi,
    du hast doch alles, was du wissen musst. Ein assoziatives Array und eine foreach-Schleife mit der du die Namen der Schlüssel des Arrays ausgeben kannst.
    Nochmal zur Erinnerung:
    Du verwendest

    Quellcode

    1. foreach (array_expression as $value) Anweisung

    ich würde dir raten

    Quellcode

    1. foreach (array_expression as $key => $value) Anweisung


    Dann kannst du einfach echo $key." hat den Wert ".$value; Und hast Bsp. "Schlüsselname hat den Wert Arraywert"

    Hoffe, das hilft dir
    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.
  • Hey.. vielen vielen dank für die antwort ;)

    Also, ich habe es nun folgendermaßen angewendet:

    PHP-Quellcode

    1. <html>
    2. <body>
    3. <?php
    4. /* Verbindung aufbauen, auswählen einer Datenbank */
    5. $mysqlhost='localhost';
    6. $mysqluser='root';
    7. $mysqlpwd='';
    8. $connection=mysql_connect($mysqlhost,$mysqluser,$mysqlpwd);
    9. $mysqldb="Vereinsverwaltung";
    10. mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
    11. /* ausführen einer SQL Anfrage */
    12. $mitglied_sql = "SELECT * FROM Mitglied";
    13. $mitglied_query = mysql_query($mitglied_sql) or die("Anfrage nicht erfolgreich");
    14. /* Ausgabe der Ergebnisse in HTML*/
    15. echo "<table border=1>\n";
    16. while ($line = mysql_fetch_array($mitglied_query, MYSQL_ASSOC))
    17. {
    18. echo "\t<tr>\n";
    19. foreach ($line as $keey => $col_value)
    20. {
    21. echo "\t\t<td>$keey</td>\n";
    22. $ifabfrage=($keey!= "M_ID" && $keey!="M_Plz" && $keey!="M_Eintrittsjahr");
    23. if($ifabfrage)
    24. {
    25. if(is_numeric($col_value)==1)
    26. {
    27. if($col_value==0)
    28. {
    29. echo "\t\t<td> Nein </td>\n";
    30. }
    31. else
    32. {
    33. echo "\t\t<td> Ja </td>\n";
    34. }
    35. }
    36. else
    37. {
    38. echo "\t\t<td>$col_value</td>\n";
    39. }
    40. }
    41. else
    42. {
    43. echo "\t\t<td>$col_value</td>\n";
    44. }
    45. }
    46. echo "\t</tr>\n";
    47. }
    48. echo "</table>\n";
    49. /* Freigeben des Resultsets */
    50. mysql_free_result($mitglied_query);
    51. ?>
    52. </body>
    53. </html>
    Alles anzeigen


    Nun, konnte ich anhand der attributnamen die ID, PLZ Und das Eintrittsjahr von den einträgen "Ja/Nein" (soll ja "boolean" sein) ausschließen.

    Allerdings wenn ich die ausgabe nun mache, ist sie nicht ganz meinen erwartungen entsprechend. Sie sieht ungefäir so aus:

    Attributname1 | Inhalt1 von 1 | Attributname2 | Inhalt1 von 2
    Attributname1 | Inhalt2 von 1 | Attributname2 | Inhalt2 von 2
    Attributname1 | Inhalt3 von 1 | Attributname2 | Inhalt3 von 2
    ................... | ................. | ................... | .................


    und so weiter... wie bekomme ich des hin, das die attribut namen nur einmal ausgegeben werden, und zwar über die spalte von dem inhalt? habe mehrere varianten ausprobiert, aber ging nicht :(

    vielen dank im voraus...

    mfg sTyLeR ;)

    ------------------------------------------------------------------------------------------------------------

    Alles klar ;) v ielen dank.. es hat sich erledigt ;) habe nun ein neues prob, das post ich aber in nem teuen thread, vielleicht antworten dann ein paar leute mehr ;)

    mfg sTyLeR ;)