Rechercher : dans
Par :

Afficher requete SQL sur 2 colonnes

Dernière réponse le 25 sep 2009 à 09:05:00 doctorpower, le 24 sep 2009 à 00:21:04 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Afficher requete SQL sur 2 colonnes » dans :
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...
Exécution de requêtes avec JDBC VoirExécution d'une requête SQL Pour exécuter une requête SQL, il s'agit dans un premier temps de créer un objet Statement, pouvant être obtenu à partir de l'objet Connection. Un objet ResultSet permettra de récupérer les données en provenance de...

1

M@dien, le 24 sep 2009 à 09:45:35

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> 
Pour plus de rapidité, expliquez bien votre problème, cela évitera des échanges inutiles.
Si vous ne prenez pas le temps d'écrire en français correct, 
on ne prendra peut-être pas le temps de vous répondre...
Pensez-y.

Répondre à M@dien

2

doctorpower, le 24 sep 2009 à 13:03:37

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?

Répondre à doctorpower

3

M@dien, le 24 sep 2009 à 14:10:34
  • +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> 

Pour plus de rapidité, expliquez bien votre problème, cela évitera des échanges inutiles.
Si vous ne prenez pas le temps d'écrire en français correct, 
on ne prendra peut-être pas le temps de vous répondre...
Pensez-y.

Répondre à M@dien

4

doctorpower, le 24 sep 2009 à 17:38:26

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 :)

Répondre à doctorpower

5

 M@dien, le 25 sep 2009 à 09:05:00
  • +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 ;
Pour plus de rapidité, expliquez bien votre problème, cela é­vitera des échanges inutiles.
Si vous ne prenez pas le temps d'écrire en français correct,­ 
on ne prendra peut-être pas le temps de vous répondre...
Pensez-y.

Répondre à M@dien