Reihenweise Daten in einer Tabelle ausgeben

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

  • Reihenweise Daten in einer Tabelle ausgeben

    Hallo und einen schönen 1. Mai alle zusammen.

    Da dies mein erster Beitrag ist, werfe ich mal ein freundliches Hallo allerseits in die Runde

    Bei mir geht es um das Thema Spalten- bzw. Riehenweise Daten in einer Tabelle ausgeben. Ich habe auch schon einige Beiträge hier im Forum dazu gefunden. Jedoch beziehen diese sich lediglich auf die Sortierung im Stil von:

    a b c
    d e f
    g h i

    Was meiner einer benötigt, wäre die Sortierung im Sinne von:

    a d g
    b e h
    c f i

    Klein Google hatte leider auch nichts passendes dazu beizutragen
    Vielleicht kann mir ja einer von euch auf die Sprünge helfen

    lg
    mod
    Zuletzt geändert von modifier; 01.05.2005, 11:41.

  • #2
    Hi!

    Reden wir jetzt von Tabellendaten die aus der DB gelesen werden und dann in dem von dir gewählten Format ausgegeben werden sollen?

    Kommentar


    • #3
      Hallo Schnoop,

      Ich lese die Daten aus einer MySQL Datenbank aus.
      Die Auflistung wonach ich suche, sollte wie folgt aussehen:

      PHP-Code:
      <?
      while ($row = mysql_fetch_array($result))
          {
              echo "a d g";
              echo "b e h";
              echo "c f i";
          }        
      ?>
      lg
      mod

      Kommentar


      • #4
        Es wäre jetzt interessant zu wissen ob du die genau Anzahl von Spalten und Zeilen kennst.

        Kommentar


        • #5
          Jedoch beziehen diese sich lediglich auf die Sortierung im Stil von:

          a b c
          d e f
          g h i
          falsch. auch zu deiner gewünschten form der ausgabe findest du hier entsprechende posts.

          http://www.php-resource.de/forum/sea...der=descending
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Hallo Abraxax,

            habe mir das durchgelesen, vielen Dank für den Hinweis.
            Wenn ich das aber test was dort steht, kommt wieder die Falsche Auflistung dabei raus

            PHP-Code:
            <?
            $nSpalten=5;
            $nSpalte=0;
            $lneedTR=false;
            $sql = "select kat, name from msc_kat order by name";
            $ergebnis = mysql_query($sql);
            echo "<table>\n";
            while($row = mysql_fetch_object($ergebnis)) 
            {
                $name      = $row->name;
                if ($nSpalte==0)
                    {
                    echo "<tr>\n";
                    $lneedTR=true;
                    }
                echo "<td>".$name."</td>";
                $nSpalte++;
                if ($nSpalte >= $nSpalten)
                    {
                    $nSpalte=0;
                    echo "\n</TR>";
                    $lneedTR=false;
                    }
            }
            if ($lneedTR)
                {
                while ( ($nSpalten-$nSpalte) > 0)
                    {
                    echo "<td></td>";
                    $nSpalte++;
                    }
                echo "\n</TR>";
                }
            echo "</table>\n";
            ?>
            Entweder lieg ich heut auf dem Schlauch, oder die Gehirnzellen werden alt.
            In den Anderen Posts von deinem Link war ich auch nicht fündig.

            lg
            mod

            Kommentar


            • #7
              woher weisst du wieviele datensätze du hast, um sie entsprechend auf drei spalten aufzuteilen?
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Hmm Gute Frage Vielleicht alle erst mal vorher in einem array speichern oder mit $num_rows = mysql_num_rows($result) definieren?

                ich hab noch was aus deinem link gefunden und versuche gerade damit was hinzubekommen

                PHP-Code:
                function get_tr() {
                  
                $userlist['user']['ranks']['a'] = "aaa";
                  
                $userlist['user']['ranks']['b'] = "bbb";
                  
                $userlist['user']['ranks']['c'] = "ccc";
                  
                $userlist['user']['ranks']['d'] = "ddd";
                  
                $userlist['user']['ranks']['e'] = "eee";
                  
                $userlist['user']['ranks']['f'] = "fff";
                  
                $userlist['user']['ranks']['g'] = "ggg";
                  
                $userlist['user']['ranks']['h'] = "hhh";
                  
                $userlist['user']['ranks']['i'] = "iii";
                  
                $userlist['user']['ranks']['j'] = "jjj";
                  
                $userlist['user']['ranks']['k'] = "kkk";
                  
                $userlist['user']['ranks']['l'] = "lll";
                  
                $userlist['user']['ranks']['m'] = "mmm";
                  
                $userlist['user']['ranks']['n'] = "nnn";
                  
                  
                $lastitem end($userlist['user']['ranks']); 
                  
                reset($userlist['user']['ranks']); 
                  echo 
                'lastitem: '.$lastitem.'<br>';
                  
                  echo 
                '<table border="1">';
                  
                  foreach ( 
                $userlist['user']['ranks'] as $var ) {
                    
                $i++;
                    if ( 
                $i%== ) echo '<tr><td>'.pos($userlist['user']['ranks']).'<td>';
                    else echo 
                '<td>'.$var.'</td>';
                    if ( 
                $i%== ) echo '</tr>';
                  } 
                  echo 
                '</table>';
                // function

                get_tr(); 

                Kommentar


                • #9
                  mysql_num_rows()

                  schmeiße ich jetzt mal nur so in den raum. Genauso wie das wort Grundlagen...

                  Kommentar


                  • #10
                    So ich nochmal

                    Danke TobiaZ, verwende ich ja bereits. Aber die Lösung für die Auflistung scheint trotzdem nicht so einfach zu sein.

                    Folgendes:

                    PHP-Code:
                    <table width="200" border="1">
                      <
                    tr>
                        <
                    td>1</td>
                        <
                    td>4</td>
                        <
                    td>7</td>
                      </
                    tr>
                      <
                    tr>
                        <
                    td>2</td>
                        <
                    td>5</td>
                        <
                    td>8</td>
                      </
                    tr>
                      <
                    tr>
                        <
                    td>3</td>
                        <
                    td>6</td>
                        <
                    td>9</td>
                      </
                    tr>
                    </
                    table
                    Im obrigen Beispiel stehen die Werte richtig drin. Meiner Ansicht nach müsste PHP also die Daten aus der Datenbank in der Reihenfolge 1,4,7 ... 2,5,8 ... und 3,6,9 auslesen.

                    PHP öffnet aber dem scipt nach ja einen <tr> tag dann einen <td> tag und schreibt die daten rein die ich auslese und jenachdem wieviel zeilen ich haben möchte (mysql_num_rows()) schließt PHP dann die tags wieder mit <td><tr>.

                    kommt dann leider aber wie folgt raus:

                    PHP-Code:
                    <table width="200" border="1">
                      <
                    tr>
                        <
                    td>1</td>
                        <
                    td>2</td>
                        <
                    td>3</td>
                      </
                    tr>
                      <
                    tr>
                        <
                    td>4</td>
                        <
                    td>5</td>
                        <
                    td>6</td>
                      </
                    tr>
                      <
                    tr>
                        <
                    td>7</td>
                        <
                    td>8</td>
                        <
                    td>9</td>
                      </
                    tr>
                    </
                    table
                    wo liegt nun hier der Denkfehler?

                    lg
                    mod

                    Kommentar


                    • #11
                      ich würde erst mal alle datensätze in "natürlicher" sortierung in ein array werfen - also a, b, c, d, ...

                      dann gesamtanzahl ermitteln - mysql-num_rows() oder eben count() auf das erzeugte array.

                      daraus die nötige zeilen-/spaltenzahl ermitteln - wobei "nötig" noch von dir zu definieren wäre.
                      einfach anzahl zeilen gleich anzahl spalten? dann würde ich die quadratwurzel aus der elementanzahl ziehen, und auf eine ganze zahl aufrunden.

                      dann einfach zwei for-schleifen verschachteln, und den array-index passend ausrechnen. (nachdenken, nicht nachfragen :-))
                      in der äußeren schleife eine tabellenreihe eröffnen/schließen, in der inneren jeweils eine tabellenzelle.

                      dabei natürlich existenzprüfung, ob arrayelement mit diesem index noch existiert - ansonsten "leere" zelle ausgeben.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        aha, naja gut so erfahren bin ich leider doch nicht mit php um diese erklärung zu verstehen

                        aber erst mal danke an alle die sich die zeit für diesen beitrag genommen haben.

                        ein codebeispiel oder codeansatz damit ich den hintergrund besser verstehe und rumbasteln kann wäre schön und hilfreich.

                        Lieb wärs wenn sich vielleicht einer kurz die Zeit nimmt, wenns nicht zuviel davon beansprucht, denn weiss nicht wie kompliziert dieser code ist.

                        lg
                        micha

                        Kommentar


                        • #13
                          na gut, weil heute so schönes wetter ist, und ich nicht möchte, dass du den ganzen tag drinnen hocken musst ... (deshalb von mir auch jetzt erst mal keine weiteren kommentare, weil ich jetzt auch erstmal die sonne genießen gehen werde.)

                          PHP-Code:
                          <html>
                          <body>
                          <table>
                          <?php
                          // auszugebende werte in "natürlicher" reihenfolge,
                          // hier der einfacheit halber fest vorgegeben
                          $werte = array('a''b''c''d''e''f''g');

                          // ermitteln, wie viele zeilen und spalten die tabelle haben soll
                          // hier wie erwähnt der einfachheit halber zeilenanzahl = spaltenanzahl
                          // sqrt für quadratwurzel und ceil zum aufrunden
                          $dimension ceil(sqrt(count($werte)));

                          // äußere schleife für die zeilen
                          for($z=0$z<$dimension$z++) {
                              
                          // TR für tabellenzeile ausgeben
                              
                          echo "<tr>\n";
                              
                          // innere schleife für spalten
                              
                          for($s=0$s<$dimension$s++) {
                                  
                          // index berechnen: spaltenzähler mal dimension plus zeilenzähler
                                  // sorgt für die ausgabe a, b, c _untereinander_
                                  // andersherum hätten wir die "normale" sortierung, a, b, c _nebeneinander_
                                  
                          $index $s $dimension $z;
                                  
                          // prüfen, ob noch ein arrayelement mit diesem index existiert
                                  
                          if(isset($werte[$index])) {
                                      
                          // wenn ja, element in einer tabellenzelle ausgeben
                                      
                          echo "<td>".$werte[$index]."</td>\n";
                                  }
                                  else {
                                      
                          // wenn nein, dann "leere" zelle ausgeben (hier nur ein -)
                                      
                          echo "<td>-</td>\n";
                                  }
                              }
                              
                          // tabellenzeile wieder schließen
                              
                          echo "</tr>\n";
                          }
                          ?>
                          </table>
                          </body>
                          </html>
                          Zuletzt geändert von wahsaga; 01.05.2005, 18:22.
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            OffTopic:
                            sqrt() ist out?

                            Kommentar


                            • #15
                              Original geschrieben von penizillin
                              sqrt() ist out?
                              aber sowas von ...! :-)

                              war mir eigentlich auch sicher, dass es die geben müsste, war aber zu faul zum nachsehen ...

                              obigen code entsprechend editiert.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X