Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] dynamische Tabelle aus MySQL-Abfrage

Einklappen

Neue Werbung 2019

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

  • [Erledigt] dynamische Tabelle aus MySQL-Abfrage

    Hallo,

    ich möchte gerne eine Funktion schreiben, die mir aus einer beliebigen MySQL-Abfrage eine dynamische Tabelle mit Überschriften generiert.

    Dazu habe ich bisher folgendes:
    PHP-Code:
    function generateTable($sql){
        
    $result mysql_query($sql);
        
    $row mysql_fetch_assoc($result);
        
        
    //Ausgabe Tabellenheader
        
    echo'<table align="left" cellspacing="0" cellpadding="3" id="anmlist"><thead><tr class="listborder">';
        
        
    // Ausgabe Tabellenüberschriften
        
    foreach (array_keys($row) as $key) {
            echo
    "<th class=\"listborder\">$key</th>";
        }
        
        echo
    '</tr></thead><tbody><tr>';
        
        
    // Ausgabe Tabelleninhalt
        
    while ($row mysql_fetch_assoc($result)) {
            foreach (
    $row as $value) {
                echo
    "<td class=\"listborder\">$value</td>";
            }
            echo
    '</tr>';
        }
        echo
    '</tbody></table>';

    Das funktioniert vom Prinzip her auch, aber leider unterschlägt es mir dabei den ersten Datensatz.

    Wahrscheinlich muss ich innerhalb der while-Schleife testen, ob es sich um den ersten Datensatz handelt, und dann zusätzlich mit array_keys() die Spaltentitel ausgeben, aber leider komm ich gerade nicht drauf, wie ich das machen könnte.

    Weiss jemand Rat?

    Danke,
    maeck


  • #2
    ich würde die Schleife so aufziehen:
    PHP-Code:

        $result 
    mysql_query($sql);
        while(
    $row mysql_fetch_assoc($result)) {

       
        } 
    Die Feldnamen kriegt man ja mit field_list (genaue Syntax weiß ich grade nicht)
    PHP-Code:
    if ($var != 0) {
      
    $var 0;

    Kommentar


    • #3
      Hallo Wolla,
      danke für deine Rückmeldung, aber so habe ich die Schleife ja aufgezogen

      Ich habe dann nur darüber noch ein foreach gemacht, weil ich nicht weiß, wie ich innerhalb der while-schleife abfragen kann, ob ich mich im ersten Datensatz des Arrays befinde, um dann vor der Ausgabe der Werte, erst noch mit array_keys() die Spaltentitel auszugeben.

      Kommentar


      • #4
        Einfacher mit einer do-while Schleife.
        PHP-Code:
        <?php
        function generateTable($dbconnection$sql){
          
        $result mysql_query($sql$dbconnection);
          if (!
        $result) {
            throw new 
        Exception('sinnvoller Text, sinnvolle Exception-Klasse');
          }
          
        $row mysql_fetch_array($resultMYSQL_ASSOC);
          if (
        $row) {
            echo 
        '
              <table align="left" cellspacing="0" cellpadding="3" id="anmlist">
                <thead>
                  <tr class="listborder">
                    <td>'
        join('</td><td>'array_map('htmlentities'array_keys($row))), '</td>
                  </tr>
                </thead>
            '
        ;
            do {
              echo 
        '<tr><td>'join('</td><td>'array_map('htmlentities'$row)), "</td></tr>\n";
            } while (
        $row mysql_fetch_array($resultMYSQL_ASSOC));
          echo
        '</tbody></table>';
          }


        $db mysql_connect(...) or die(mysql_error());
        mysql_select_db(..., $db) or die(mysql_error());
        generateTable($db'SELECT ...');

        Kommentar


        • #5
          @David: Du bist ja echt genial, dass du dir so viel Mühe für mich gemacht hast, herzlichen Dank!!

          Auf die Idee das ganze mit do...while-Schleife und join zu machen bin ich nicht gekommen. Danke auch für das Hinweisen auf die Exceptionbehandlung - die ich leider meistens vergesse

          Vielen Dank nochmal ... es läuft genau so wie ich wollte.

          Schönes Wochenende,
          maeck

          Kommentar


          • #6
            Vielleicht beschraenkst du dich mal auf ein Forum ..
            "Mein Name ist Lohse, ich kaufe hier ein."

            Kommentar


            • #7
              Zitat von Chriz Beitrag anzeigen
              Vielleicht beschraenkst du dich mal auf ein Forum ..
              Hallo Chriz,
              wenn du damit meinen Eintrag bei phpfriend.de meinst: Ich habe dort leider keine Antwort auf meine Frage bekommen und musste dringend dieses Script fertig bekommen. Hier habe ich Hilfe bekommen und habe dann auf phpfriend sogar Bescheid gegeben, dass es gelöst ist

              Was ist so schlimm daran, wenn man mehrere Foren benutzt?
              Gibt es eine Regel die besagt, dass ich nur ein PHP-Forum benutzen darf?

              Gruß maeck

              Kommentar


              • #8
                Ist eine Frage des Respekts den Usern gegenüber. Zumindest einen Link auf das andere Forum solltest Du bei Crosspoistings hinterlassen.
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Zitat von nikosch77-new Beitrag anzeigen
                  Ist eine Frage des Respekts den Usern gegenüber.
                  Was hat das mit Respekt zu tun?? Ich habe doch keinen respektlos behandelt
                  z.B. Ich frage einen Bekannten mir bei einem Problem zu helfen, er hat aber keine Zeit oder keine Ahnung davon. Dann frage ich einen anderen, der mir helfen kann. Muss ich dann dem letzten sagen, dass ich vorher schon einen anderen gefragt habe, weil ich ihn sonst respektlos behandeln würde?

                  Noch was anderes: Was hätte es gebracht, wenn ich hier einen Link zu phpfriend hinterlassen hätte? Dann hätte jemand, der mir helfen wollte, erst auf den Link geklickt und sich dort zwei Seiten durchlesen müssen, bevor er mir antwortet.
                  Was bringt ihm und mir das?

                  Versteht mich nicht falsch ... ich will es wirklich verstehen, aber mir erschließt es sich leider nicht.
                  Aber für den Fall, dass ich durch mein Verhalten jemanden hier respektlos behandelt habe, dann tut mir das wirklich leid.

                  Schöne Grüße,
                  maeck

                  Kommentar


                  • #10
                    Respekt im Sinne von: User in zwei Foren beantworten ohne voneinander zu wissen Deine Fragen und verschwenden vielleicht Ihre Zeit damit, bereits gefundene Lösungen erneut zu erarbeiten.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      Zitat von nikosch77-new Beitrag anzeigen
                      Respekt im Sinne von: User in zwei Foren beantworten ohne voneinander zu wissen Deine Fragen und verschwenden vielleicht Ihre Zeit damit, bereits gefundene Lösungen erneut zu erarbeiten.
                      Okay, das verstehe ich und finde ich sinnvoll.
                      Aber deswegen habe ich sofort auf phpfriend bescheid gegeben, dass das Problem gelöst ist, als ich hier die tolle Antwort bekommen habe.

                      Würdet ihr es besser finden, wenn ich in phpfriend.de noch einen link hierher mache?
                      Oder hätte ich hier einen Link auf den Thread von phpfriend.de machen sollen?

                      maeck

                      Kommentar


                      • #12
                        Ja ist OK, dachte nur du haettest das im PHPForum.de gepostet. Zumindest kam der array_keys soweit ich weiss urspruenglich von mir, weiss aber nicht mehr welches Forum

                        Ist das Problem geloest?
                        "Mein Name ist Lohse, ich kaufe hier ein."

                        Kommentar


                        • #13
                          Nein, ich hab es extra nicht im bei phpfriend gepostet, sondern nur geschrieben, dass es eine Lösung gibt. Ich will mich doch nicht mit fremden Lohrbeeren rühmen

                          Ja, das Problem ist gelöst, Davir (siehe Thread weiter oben) hat mir ein cooles Script geschrieben, was ich noch ein wenig modifiziert habe.
                          Aber der Grundgedanke - auf den ich nicht kam - ist seine Lösung.

                          Schönen Tag,
                          maeck

                          Kommentar

                          Lädt...
                          X