afficher une liste sur plusieurs colones

WRInaute passionné
Bonjour

Voilà j'ai une liste d'article assez longue, genre 1000.
Je veux afficher les titres dans un tableau.
Pour pas que le tableau fasse 4000 pixels de hauteur, je voudrais afficher trois colonnes.
Par exemple, première colonne de A à F, deuxième colones de G à R, dernière colone de S à Z.

Et rien qu'en posant la question, je crois que j'ai trouvé la réponse, je vais donc faire trois requêtes pour aller chercher les articles dont la première lettre du titre est compris dans les écarts précédents.

Par contre à vue de nez, je ne vois pas trop quoi indiquer dans la requête WHERE.

A votre avis ?
 
WRInaute accro
Si j'avais 30 enregistrements à mettre sur 3 colonnes, j'essaierais

LIMIT 0,10
LIMIT 10,10
LIMIT 20,10

pour tes 3 requêtes
 
WRInaute passionné
Salut YoyoS, merci pour ta réponse.

Alors ta soluce serait possible, je n'y avais pas pensé, mais le nombre d'article va varier. Et il faudrait que j'ai à peu près le même nombre de ligne dans chaque colone.
Ou alors je compte à l'avance le nombre de ligne, je divise par trois et je passe les LIMIT en variable.

Mais ce serait beaucoup plus simple avec les lettres je crois.
 
WRInaute accro
Meeuuuhhh a dit:
Mais ce serait beaucoup plus simple avec les lettres je crois.
pas vraiment, car s'il n'y a pas la même quantité, cela fera des colonnes de longueurs sensiblement différentes
 
WRInaute passionné
YoyoS a dit:
Si j'avais 30 enregistrements à mettre sur 3 colonnes, j'essaierais

LIMIT 0,10
LIMIT 10,10
LIMIT 20,10

pour tes 3 requêtes

Surtout pas faire 3 requêtes alors qu'une seule suffit...
 
WRInaute discret
Je dirai :

Code:
Tu compte le nombre d'articles -> $nb

Tu affiche tn tablo et ta premiere colonne

Dans ton while ($donnees=mysql_fetch_array($reponse){

$ligne++;
tu affiche ta ligne

if($ligne==$nb/3){
Tu crée une nouvelle colonne
}

}

Ne reste plus qu'à gérer les petits détails comme la fin du tableau etc..
Ca devrait être bon :)
 
WRInaute passionné
Hu hu hu...

Alors je viens de faire un abominable caca, si vous voulez jeter un oeil, bouchez-vous le nez :

Code:
<table>
<tr>

<?php

//une iframe a affichersur les autres sites
$compteur="SELECT id,titre FROM articles";
$compteurR = mysql_query("$compteur");
$total=mysql_num_rows($compteurR);
$marqueur=$total/2; //sur deux colones, ça me semble plus simple
while($R = mysql_fetch_array($compteurR))
$ligne=1;
{
$titre=ucfirst($R['titre']);
echo'
<td><a href="'.$R['id'].'.htm">'.$titre.'</a><br>';
if($ligne==marqueur){echo'
</td><td>
<a href="'.$R['id'].'.htm">'.$titre.'</a><br>
</td>';}


$ligne++
;}
mysql_free_result($compteurR);
?>

</tr>
</table>


En fait ça affiche rien... :oops:

**edit**
D'ailleurs, ce serait plutôt une belle grosse bouse.
:arrow:
 
WRInaute accro
c'est normal, le while ne s'appliquant que sur l'expression qui le suit immédiatement, soit
Code:
$ligne=1;
 
WRInaute passionné
Ah oui...

Ca s'affiche mais il y a, comment dirais-je, comme un léger problème dans la disposition des <td>...
 
Discussions similaires
Haut