Tableau PHP et Affichage par colonnes verticales
11 messages
• Page 1 sur 1
- max6
- WRInaute discret

- Messages: 168
- Inscription: 18 Mai 2003
Tableau PHP et Affichage par colonnes verticales
Bonjour
Me voila devant un probleme que je n'arrive décidement pas a gérer .
Je souhaite afficher les résultats d'une requete sql en 3 colonnes mais avec un affichage de haut en bas et non de gauche a droite comme on trouve partout , a croir que personne ne sait le faire , dailleurs apres avoir poster ma question dans plusieurs forum les seuls réponses que j'ai c'est ton code est crade , etc ... mais sans réponses pour autant ... bref , je pense qu'ici on saura me répondre .
Voici une partie de mon code , apres ca je bloque , je n'arrive pas saisir comment aller plus loin :
Ce code affiche evidemment ce que je lui demande soit 30 enregistrements sur 30 lignes ce qui est parfaitement normal .
Comment arreter le compteur a $i<$tier et afficher les 10 enregistrements de haut en bas puis passer a col+1 et ainsi de suiTE
Je vous remercie par avance de votre aide .
Max
Me voila devant un probleme que je n'arrive décidement pas a gérer .
Je souhaite afficher les résultats d'une requete sql en 3 colonnes mais avec un affichage de haut en bas et non de gauche a droite comme on trouve partout , a croir que personne ne sait le faire , dailleurs apres avoir poster ma question dans plusieurs forum les seuls réponses que j'ai c'est ton code est crade , etc ... mais sans réponses pour autant ... bref , je pense qu'ici on saura me répondre .
Voici une partie de mon code , apres ca je bloque , je n'arrive pas saisir comment aller plus loin :
- Code: Tout sélectionner
<?
//ma connexion
$requete = mysql_query("SELECT * FROM matable where clause = 'cequeje veu' ORDER BY nom LIMIT 0,30");
$nbreponse = mysql_num_rows($requete);
$nbrcol = 3;
$tier = ceil($nbreponse/$nbrcol);
while ($result = mysql_fetch_array($requete))
{
$tableau[] = $result["nom"];
}
for ($i=0; $i<$tier ; $i++)
{
echo "$tableau[$i]<br>";
}
mysql_close() ;
?>
Ce code affiche evidemment ce que je lui demande soit 30 enregistrements sur 30 lignes ce qui est parfaitement normal .
Comment arreter le compteur a $i<$tier et afficher les 10 enregistrements de haut en bas puis passer a col+1 et ainsi de suiTE
Je vous remercie par avance de votre aide .
Max
- mumbly
- WRInaute discret

- Messages: 70
- Inscription: 23 Nov 2005
Tu peux faires comme ca
- Code: Tout sélectionner
$requete = mysql_query("SELECT * FROM matable where clause = 'cequeje veu' ORDER BY nom LIMIT 0,30");
$nbreponse = mysql_num_rows($requete);
$tier = ceil($nbreponse/$nbrcol);
while ($result = mysql_fetch_array($requete))
{
$tableau[] = $result["nom"];
}
for ($i=0; $i<$nbreponse ; $i++)
{
if($i == $tier)
{echo "</td><td>";$tier=$tier*2;}
echo $tableau[$i]."<br>";
}
echo "</td></tr></table>";
mysql_close() ;
- max6
- WRInaute discret

- Messages: 168
- Inscription: 18 Mai 2003
Tu vas pas me croire certainement mais ca fait 3 jours que je suis dessus .
L'incrémentation de $j j'avais essayé mais sans succés ca me donnait toujours 31 résultats au lieu des 30 que je demandais ...
J'ai meme essayé ac data seek qui placait le pointeur+1 a chaque boucle ... sans succés .
Autant des codes me paraissent simple autant d'autre ont du mal a rentrer .
Je vais essayé les solutions proposés et merci
L'incrémentation de $j j'avais essayé mais sans succés ca me donnait toujours 31 résultats au lieu des 30 que je demandais ...
J'ai meme essayé ac data seek qui placait le pointeur+1 a chaque boucle ... sans succés .
Autant des codes me paraissent simple autant d'autre ont du mal a rentrer .
Je vais essayé les solutions proposés et merci
- max6
- WRInaute discret

- Messages: 168
- Inscription: 18 Mai 2003
En fait j'avais fait comme ca , ca me donnait $i =30 donc ca affichait 31 enregistrements dont 1 en double .
J'ai laché l'affaire car je n'ai jms compris pk :
Si tu teste ac tes données tu verras ce que ca donne .
En tout cas le code de mumbly marche impecc , etant donné que parfois le tier n'est pas forcement un nombr pair j'ai fait des td valign top et ca regle e soucis .
Merci encore
J'ai laché l'affaire car je n'ai jms compris pk :
- Code: Tout sélectionner
for ($i=0, $j=0; $i<$tier ; $j++)
{
if($j == $nbcol)
{
$j=0;
$i++;
}
echo "$nom";
}
Si tu teste ac tes données tu verras ce que ca donne .
En tout cas le code de mumbly marche impecc , etant donné que parfois le tier n'est pas forcement un nombr pair j'ai fait des td valign top et ca regle e soucis .
Merci encore
- alainp
- WRInaute discret

- Messages: 148
- Inscription: 13 Juin 2003
mumbly a écrit:Tu peux faires comme ca
Bonjour,
Celà fait plusieurs jours que j'essaie d'adapter l'idée de mumbly pour mon problème mais j'ai besoin d'aide.
Celà fonctionne si on utilise la notion de tableau mais je ne peux pas utiliser cette notion
Voilà mon code actuel
- Code: Tout sélectionner
$q1 = mysql_query("SELECT cat, COUNT(*) AS num FROM sites where cat>'' GROUP BY cat ORDER BY cat ASC");
$n1 = mysql_num_rows($q1);
echo "<p><span class="titre">Sélectionnez une catégorie ...</span></p>\n\n";
echo "<div align="center">";
echo "<table class="cadre" width="100%" align="center">\n";
echo "<tr>\n";
echo "<td width="33%">\n";
$i = 0;
while ($r1 = mysql_fetch_array($q1)) {
echo ". <a href="liens.php?cat=".urlencode($r1["cat"])."">".htmlentities($r1["cat"])."</a> (".$r1["num"].")<br>\n";
$i++;
if ($i>17){
echo "</td><td width="33%">\n";
$i = 0;
}
}
echo "<br>\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n\n";
En fonction de certaines quantités de données, çà marche bien mais, parfois, c'est nul
Mon but est de répartir mes données classées en 3 colonnes de haut en bas et de gauche à droite
Si quelqu'un peut me dépanner, merci d'avance
-

xTrade - WRInaute passionné

- Messages: 2289
- Inscription: 11 Déc 2006
Une réponse à l'arrache, cela changera du truc qui me gonfle depuis ce matin
A vue de nez, cela doit bien marcher et faire des trucs du genre (si c'est ce que tu demandes) :
0 4 8
1 5 9
2 6
3 7
Dis moi si cela marche (et un bl en remerciement si tu as un pr 7
)
Edit : petite modification
- Code: Tout sélectionner
$NbElements=count($tableau);
if (($NbElements/3)==round($NbElements/3)) $NbLignes=$NbElements/3;
else $NbLignes=floor($NbElements/3)+1;
for ($i=0;$i<$NbLignes;$i++)
{ echo "<tr>";
for ($col=0;$col<3;$col++)
{ $Pos=$i+$col*$NbLignes;
echo "<td>";
if ($pos<$NbElements) echo $tableau[$pos];
echo "</td>";
}
echo "</tr>";
}
A vue de nez, cela doit bien marcher et faire des trucs du genre (si c'est ce que tu demandes) :
0 4 8
1 5 9
2 6
3 7
Dis moi si cela marche (et un bl en remerciement si tu as un pr 7
Edit : petite modification
Dernière édition par xTrade le Mar Mar 20, 2007 12:06, édité 1 fois.
- alainp
- WRInaute discret

- Messages: 148
- Inscription: 13 Juin 2003
Merci xTrade,
C'est surement très bien mais je ne peux pas me servir de la notion de tableau puisque j'extrai les données de la base et que j'obtiens des enbregistrements sous la forme <a href=\"liens.php?cat=".urlencode($r1["cat"])."\">".htmlentities($r1["cat"])."</a>
J'ai essayé avec une mise en tableau mais çà ne créée pas le lien voulu pour chaque enregistrement
C'est surement très bien mais je ne peux pas me servir de la notion de tableau puisque j'extrai les données de la base et que j'obtiens des enbregistrements sous la forme <a href=\"liens.php?cat=".urlencode($r1["cat"])."\">".htmlentities($r1["cat"])."</a>
J'ai essayé avec une mise en tableau mais çà ne créée pas le lien voulu pour chaque enregistrement
-

xTrade - WRInaute passionné

- Messages: 2289
- Inscription: 11 Déc 2006
alainp a écrit:Merci xTrade,
C'est surement très bien mais je ne peux pas me servir de la notion de tableau puisque j'extrai les données de la base et que j'obtiens des enbregistrements sous la forme <a href="liens.php?cat=".urlencode($r1["cat"])."">".htmlentities($r1["cat"])."</a>
J'ai essayé avec une mise en tableau mais çà ne créée pas le lien voulu pour chaque enregistrement
A ta place, je ferais un truc du genre
- Code: Tout sélectionner
while ($tableau = mysql_fetch_object($q1)) ;
$i=0;
while ($r1 = mysql_fetch_array($q1))
{ $tableau[$i++]="<a href="liens.php?cat=".urlencode($r1["cat"])."">".htmlentities($r1["cat"])."</a>";
}
Puis tu traites le tableau comme je l'ai fais
11 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Création d'un tableau 3 colonnes en php ?
- Affichage d'annonces sur deux colonnes
- Base de données : affichage en deux colonnes
- affichage text en css sur plusieurs colonnes
- PHP: Mélanger un tableau de tableau de manière aléatoire
- PB affichage/masquage d'un tableau avec IE
- php: Lire lignes et colonnes fichier Excel (RESOLU)
- Changer affichage.php?id=14 en affichage/mot-14.html
- Design 2 colonnes ou 3 colonnes
- Tableau PHP
Consultez la description détaillée des produits ou services de Google suivants : Google Flights
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

