Afficher requete SQL sur 2 colonnes

Résolu
doctorpower Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
M@dien Messages postés 439 Date d'inscription   Statut Membre Dernière intervention   -
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. M@dien Messages postés 439 Date d'inscription   Statut Membre Dernière intervention   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
  2. M@dien Messages postés 439 Date d'inscription   Statut Membre Dernière intervention   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> 
    0
  3. doctorpower Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   68
     
    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?
    0
  4. doctorpower Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   68
     
    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 :)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. M@dien Messages postés 439 Date d'inscription   Statut Membre Dernière intervention   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 ;
    0