PHP - Dynamische HTML-Tabellen

Benutzer-621

abgemeldet
20 April 2006
744
64
Moin,
Ich hatte vor längerer Zeit selbst ne Funktion für dynamische HTML-Tabellen erstellt, diese aber ausversehn gelöscht und nun brauch ich "sie" wieder, weiß aber net mehr wie ich wieder anfangen soll. Sie soll eingesetzt werden wo man die Daten aus der DB ausgibt. Kann mir vllt. jemand helfen, bzw. einen Lösungsweg nennen, damit ich weiter komme.

MfG
 
Zuletzt bearbeitet:
Du willst also Daten aus der DB auslesen und diese dann in einer Tabelle ausgeben?
Zum Beispiel: du hast 1mal 10 Werte und dann 20 Werte in der DB. So müsste ja die Tabelle dynamisch sein?
Wenn ja; dieses Script könnt ich dir gleich geben...
 
topfklao schrieb:
Du willst also Daten aus der DB auslesen und diese dann in einer Tabelle ausgeben?
Zum Beispiel: du hast 1mal 10 Werte und dann 20 Werte in der DB. So müsste ja die Tabelle dynamisch sein?
Wenn ja; dieses Script könnt ich dir gleich geben...

meinte eigentlich HTML-Tabellen :D.
 
tester schrieb:
meine ja HTML-Tabellen, die die Datensätze nicht jedesmal im tr-Tag ausgeben, sondern bis zu max. Spaltenanzahl im td-Tag.
Ok; dann probier ich dir mal was zu schreiben. einen Moment bitte!

~
edit:
PHP:
echo "<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='100%'>
  <tr>
    <td width='50%'>Überschrift 1</td>
    <td width='50%'>Überschrift 2</td>
  </tr>
";

## Auslesen aus DB: Es werden z.B. 4 Werte ausgegeben:
$sql = mysql_query("select * from `db` where `id`<'1'");
$anzahl = mysql_num_rows($sql);

echo "$anzahl"; // würde 4 ausgeben^^

//und das erzeugt deine tabelle:
for($i=1;$i=<$anzahl;$i++){
$go = mysql_fetch_array($sql);
echo "<tr>
    <td width='50%'>$go[vorname]</td>
    <td width='50%'>$go[nachname]</td>
  </tr>";
}


echo "</table>";
Als Ergebnis kommt dann die "dynamische Tabelle" mit 5 Werten (also die Überschriftzeile und dann halt die 4 verschiedenen Vor- und Nachnamen):.

Müsste gehen??? Habs aber ned probiert..

Hoff ich konnte dir weiterhelfen!
 
Zuletzt bearbeitet:
Hab hier mal Bsp. is aber noch keine Funktion und wahrscheinlich auch net fehlefrei.

PHP:
  $datensaetze = mt_rand(1000,2000); 
  $spalten = mt_rand(7,49); 

  for($i = 0; $i < $datensaetze; $i++) 
    { 

      if($i == 0) 
        echo("<table border=\"1\">\n"); 

      if($i % $spalten == 0) 
        echo("<tr>"); 

      if($i % $spalten == 0) 
        echo("<td>".$i."</td>"); 

      if($i % $spalten > 0 && $i % $spalten < $spalten) 
        echo("<td>".$i."</td>"); 

      if($i % $spalten == $spalten - 1) 
        echo("</tr>\n"); 

      if($i == $datensaetze - 1) 
        echo("</table>"); 

    }
 
Zuletzt bearbeitet:
Dann versuch ich mal was aus deiner Frage zu machen ^^. Wär meine Variante, muss nicht richtig sein, ist vielleicht slampiges PHP, aber ich geb wenigstens zu, ich bin Amateur :p

Die Funktion bekommt eine komplette Query
PHP:
tabelle("SELECT * FROM 'xxx'");  

function tabelle ($query) {
  $query_id = mysql_query($query);
  $spalten = mysql_num_fields($query);
  $kopf_gesetzt = false;

  echo '<table border="0" caellpadding="0" cellspacing="0">\n'; 
  while ($row = mysql_fetch_array($query_id)) {
    $j = 0;
    foreach ($row AS $key => $value) {
      $j++;
      if ($j == 1) {
        echo '  <tr>\n';
      }
      if ($j == $spalten) {
        echo '  </tr>\n';
        if ($kopf_gesetzt == false) {
          $kopf_gesetzt = true;
          echo '  <tr>\n'
          foreach ($td_temp AS $temp_value) {
            echo '    <td>' . $temp_value . '</td>\n';
          }
          echo '  </tr>\n';
        }
      }
      if ($kopf_gesetzt == false) {
        echo '    <th>' . $key . '</th>\n';
        $td_temp[] = $value;
      } else {
        echo '    <td>' . $value . '</td>\n';
      }
    }
  }
  echo '</table>\n';
}

Nicht ausprobiert / ohne garantie. Es "sollte" eine Tabelle mit fettgedrucktem header, welcher den spaltennamen der db entspricht und allen werten rauskommen. Für LIMIT einfach in der Query LIMIT 0,xx hinzufügen.