2010-11-17 2 views
0

J'utilise mysql_fetch_array pour extraire des données à partir d'un résultat mysql Set:Placez les enregistrements les uns à côté des autres dans des colonnes en utilisant mysql_fetch_array?

while($row = mysql_fetch_array($qry_result)){ 

Ensuite, je voudrais placer les données en colonnes dans un tableau, mais un maximum de deux colonnes à chaque ligne.

Donc, en utilisant une table:

<table> 
    <tr> 
     <td>Record Here</td> 
     <td>Record Here</td> 
    </tr> 
    <tr> 
     <td>Record Here</td> 
     <td>Record Here</td> 
    </tr> 
    <tr> 
     <td colspan="2">Record Here</td> 
    </tr> 

Comme vous le voyez ci-dessus, je veux boucler les résultats et créer des colonnes de table dans la boucle.

Ceci afin que les enregistrements s'alignent deux et deux sur une page de résultats. Rappelez-vous, s'il y a un nombre impair d'enregistrements, alors la dernière colonne de table aurait besoin d'un colspan de 2, ou peut-être simplement utiliser une colonne vide?

Quelqu'un sait-il comment faire?

Si j'utilise une boucle for à l'intérieur de la boucle while, je mettrais juste les mêmes enregistrements x fois pour chaque boucle while. Confondre ...

Des idées?

Merci

+0

u veulent la séquence d'enregistrement horizontale ou verticale? – stillstanding

+0

Vous pouvez récupérer deux enregistrements à la fois, ou placer vos résultats dans un tableau en premier, ce qui peut faciliter le traitement. – mpen

+0

Horizontal ..... –

Répondre

0

Quelque chose comme cela devrait fonctionner ...

<table> 
<?php 
while(true) { 
    $row1 = mysql_fetch_array($qry_result); 
    if($row1 === false) break; 
    $row2 = mysql_fetch_array($qry_result); 

    if($row2 !== false) { 
     echo "<tr><td>$row1</td><td>$row2</td></tr>"; 
    } else { 
     echo "<tr><td coslspan=\"2\">$row1</td></tr>"; 
     break; // output the final row and then stop looping 
    } 
} 
?> 
</table> 
1

Mettre en place un (1-indexé) compteur dans la boucle while. Ajoutez ensuite (après la boucle):

if ($counter%2) 
    echo '<td></td>'; 

Cela laissera une cellule vide supplémentaire dans votre tableau si la dernière colonne contient seulement une ligne.

+0

Vous voulez expliquer un peu plus en détail? Compteur 1 indexé? –

+0

Commencez par '$ counter = 1' une fois qu'un enregistrement MySQL est lu (1-indexé), contrairement aux tableaux PHP qui commencent à l'index 0 (indexé 0). – stillstanding

0
<table> 
    <tr> 
<? 
$i=1; 
$num = mysql_num_rows($qry_result); 
while($row = mysql_fetch_array($qry_result)){ 
if($i%2==1) 
?> 
<tr> 
<? 
?> 
     <td <? if($i==$num && $i%2==1)echo 'colspan="2"';?>><?=$row['keyName']?></td> 
<? 
if($i%2==0) 
{ 
<? 
</tr> 
?> 
} 

$i++; 
} 
?> 

Questions connexes