30. december 2003 - 02:34Der er
8 kommentarer og 1 løsning
Udtræk skal fordeles på flere tables
Hej hej!
Nu har jeg efterhånden brugt adskillige timer her på eksperten.dk, men har endnu ikke fundet svar på mit problem...
Jeg har et udtræk fra en DB på ca. 1200 rækker der gerne skal fordeles ud i tre tables, så det endelige resultat bliver noget i denne stil...
<TABLE> <TR> <TD>***FØRSTE TABLE MED DE FØRSTE 400 RÆKKER***</TD> <TD>***ANDEN TABLE MED DE NÆSTE 400 RÆKKER***</TD> <TD>***TREDJE TABLE MED DE SIDSTE 400 RÆKKER***</TD> <TR> </TABLE>
Mit udtræk ser ud som følger...
$result = mysql("$dbname", "SELECT * FROM postnumre ORDER BY nummer ASC LIMIT 1200"); while ($row = mysql_fetch_row($result)) { $ZIP_NUMB = $row[0]; $ZIP_NAME = $row[1];
$result2 = mysql("$dbname","SELECT zip FROM medlemmer WHERE zip = '$ZIP_NUMB' AND country = 'Danmark'"); $no_pr_zip = mysql_numrows($result2);
Efter ti år i London, Madrid, Paris og Utrecht kommer Sabios AI-fokuserede program af arrangementer om kundeoplevelser, ‘Disrupt’, for første gang til Danmark.
<?php require 'db.php'; // Forbindelse til din database $res = mysql_query("SELECT a.*, count(*) AS antal FROM postnumre a LEFT JOIN medlemmer b ON a.zip = b.zip // brug DIT feltnavn WHERE b.country='Danmark' GROUP BY b.zip"); $ialt = mysql_num_rows($res); $tre = round($ialt/3); $k = $ialt-($tre*3); while ($row = mysql_fetch_assoc($res)) { $nummer[] = $row['zip']; // brug DIT feltnavn $navn[] = $row['name']; // brug DIT feltnavn $antal[] = $row['antal']; } ?> <table> <tr> <td> <table> <? for ($i=0;$i<$tre+$k;$i++) { echo "<tr><td>$nummer[$i] $navn[$i]</td><td>$antal[$i]</td></tr>"; } ?> </table> </td> <td> <table> <? for ($i=$tre+$k;$i<($tre*2)+$k;$i++) { echo "<tr><td>$nummer[$i] $navn[$i]</td><td>$antal[$i]</td></tr>"; } ?> </table> </td> <td> <table> <? for ($i=($tre*2)+$k;$i<$ialt;$i++) { echo "<tr><td>$nummer[$i] $navn[$i]</td><td>$antal[$i]</td></tr>"; } ?> </table> </td> <tr> </table>
Detox>> Så fik jeg endelig tid til at prøve det, og det virker som det skal. Mange tak! Dog har jeg en lille bøn...
Som det ser ud nu, får jeg et resultat på 8 rækker, fordelt på tre tables, hvilket i princippet er godt nok. Mit problem nu er at, der er to rækker i det første table og tre i de næste to (kan du følge mig?). Det vil jeg gerne have lavet om, således at det sidste table altid vil indeholde det mindste antal rækker, da reultatet gerne skal kunne printes ud. Er det muligt??
Jeg er ikke helt sikker på hvordan man gør det nemmest. Du kan prøve med:
<?php require 'db.php'; // Forbindelse til din database $res = mysql_query("SELECT a.*, count(*) AS antal FROM postnumre a LEFT JOIN medlemmer b ON a.zip = b.zip WHERE b.country='Danmark' GROUP BY b.zip"); $ialt = mysql_num_rows($res); $tre = ceil($ialt/3); while ($row = mysql_fetch_assoc($res)) { $nummer[] = $row['zip']; // brug DIT feltnavn $navn[] = $row['name']; // brug DIT feltnavn $antal[] = $row['antal']; } ?> <table> <tr> <td> <table> <? for ($i=0;$i<$tre;$i++) { echo "<tr><td>$nummer[$i] $navn[$i]</td><td>$antal[$i]</td></tr>"; } ?> </table> </td> <td> <table> <? for ($i=$tre;$i<($tre*2);$i++) { echo "<tr><td>$nummer[$i] $navn[$i]</td><td>$antal[$i]</td></tr>"; } ?> </table> </td> <td> <table> <? for ($i=($tre*2);$i<$ialt;$i++) { echo "<tr><td>$nummer[$i] $navn[$i]</td><td>$antal[$i]</td></tr>"; } ?> </table> </td> <tr> </table>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.