Afficher requete SQL sur 2 colonnes

Résolu
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
Configuration: Windows Vista
Firefox 3.5.3

5 réponses

  1. 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> 

    1. 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> 
      1. 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?
        1. 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 :)
          1. 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 ;