Afficher requete SQL sur 2 colonnes [Résolu/Fermé]

Signaler
Messages postés
361
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
4 décembre 2011
-
M@dien
Messages postés
437
Date d'inscription
mercredi 29 juillet 2009
Statut
Membre
Dernière intervention
23 septembre 2010
-
Bonjour,

je debute en php et j'essaye d'afficher le resultat d'une requete SQL sur 2 colonnes d'un tableau, je pense avoir saisi le principe,
j'ai une variable qui compte le nombre de lignes dans le tableau, quand $i est superieur a la moitie du nombre de ligne, je cree une nouvelle cellule dans le tableau,

Mais je n'arrive toujours pas a l'appliquer, voici le code que j'utilise:

<table>
<tr>
<td>
<?php
$retour = mysql_query('SELECT COUNT(*) AS nb_album FROM album');
$donnees = mysql_fetch_array($retour);
$nb = $donnees['nb_album']/2;

$return = mysql_query('SELECT * FROM album ORDER BY artist');
while ($data = mysql_fetch_array($return))
{
for($i=1;$i<=$nb;$i++)
{
if($i>$nb) echo '</td><td>';
?>
<ul>
<li><a href="<?php echo $data['artist'];?>"><?php echo $data['artist'];?></a></li>
</ul>
<?php
}
}
?>
</td>
</tr>
</table>

Merci d'avance pour votre aide

5 réponses

Messages postés
437
Date d'inscription
mercredi 29 juillet 2009
Statut
Membre
Dernière intervention
23 septembre 2010
74
Hum. je ne vois pas l'intérêt de la boucle for.

Par contre j'ai fait 2 erreurs d'étourderie...

essaye avec ça?:

<table>
<tr>
<td>
<ul>
<?php
$i=0;
$return = mysql_query('SELECT * FROM album ORDER BY artist');
$nb = ceil(mysql_num_rows($return )/2);
while ($data = mysql_fetch_array($return))
{
    if ($i++ == $nb) { ?></ul></td><td><ul><?php }
    ?><li><a href="<?php echo $data['artist'];?>"><?php echo $data['artist'];?></a></li><?php 
}
?>
</ul>
</td>
</tr>
</table> 

2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 87096 internautes nous ont dit merci ce mois-ci

Messages postés
437
Date d'inscription
mercredi 29 juillet 2009
Statut
Membre
Dernière intervention
23 septembre 2010
74
Bonjour,

je te propose ça:
<table>
<tr>
<td>
<ul>
<?php
$retour = mysql_query('SELECT COUNT(*) AS nb_album FROM album');
$donnees = mysql_fetch_array($retour);
$nb = ceil($donnees['nb_album']/2);
$i=0;

$return = mysql_query('SELECT * FROM album ORDER BY artist');
while ($data = mysql_fetch_array($return))
{
    if ($i = $nb) { echo '</ul></td><td><ul>'; }
    ?><li><a href="<?php echo $data['artist'];?>"><?php echo $data['artist'];?></a></li><?php 
}
?>
</ul>
</td>
</tr>
</table> 
Messages postés
361
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
4 décembre 2011
53
merci d'avoir repondu M@dien, j'ai essaye avec ta methode mais ca ne marche pas, le tableau ne s'affiche plus.
Je crois qu'il manque la boucle For dans le code, ou suis-je sense la placer?
Messages postés
361
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
4 décembre 2011
53
nikel, ca marche parfaitement, mais la liste n'est pas vraiment divisee en deux, c'est peut etre a cause des doublons
merci a toi :)
Messages postés
437
Date d'inscription
mercredi 29 juillet 2009
Statut
Membre
Dernière intervention
23 septembre 2010
74
S'il y a des doublons, tu peux faire un 'SELECT DISTINCT * FROM album ORDER BY artist'

il y a peut-être à modifier la ligne $nb = ceil(mysql_num_rows($return )/2); pour tomber pile à la moitié. comme par exemple un $nb = ceil(mysql_num_rows($return )/2) + 1 ;