Afficher ma requete sur 3 colonnes

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Afficher ma requete sur 3 colonnes

par fabien_14 » 10 déc. 2008, 19:30

Bonjour,

j'ai fais d'aprés la solution d'@rthur cela marche :)

J'ai un autre problème la suite est ici : http://www.phpfrance.com/forums/voir_re ... php#272581

Merci

Problème reglé :)

par AB » 10 déc. 2008, 19:10

Sinon tu peux enregistrer le résultat de ta requête dans un tableau, réordonner les éléments du tableau, puis afficher le résultat.
//D'après ton exemple le tableau qui enregistre le résultat de ta requête sera
$tab = array( 0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, 5 => 6, 6 => 7, 7 => 8, 8 => 9, 9 => 10, 10 => 11, 11 => 12 );

//Pour un nombre de colonnes fixes tu peux faire
$nb_colonne = 3;

$nb_lignes = ceil(count($tab)/$nb_colonne);

for ($i = 0; $i < $nb_lignes ; $i++)
	{
		$incr = $i;
		
		for($j = 0 ; $j < $nb_colonne ; $j++)
		{	
			if (isset($tab[$incr])){$temp[] = $tab[$incr]; $incr += $nb_lignes;} else  $temp[] = null;
		}
	}

// Il ne te reste plus qu'à lister le tableau $temp qui est réordonné comme dans ton exemple
ça marche dans la mesure du possible, c'est à dire que cette technique rempli le tableau sans créer de trous, excepté pour les derniers éléments de la colonne de droite . Donc pour un tableau de 12 éléments tu ne pourras pas avoir 5 colonnes puisqu'il faut minimum trois lignes et donc 4 colonnes suffiront.
Il faut considérer le nombre de colonnes spécifié comme un nombre maximum.

par @rthur » 09 déc. 2008, 22:46

Ah ah effectivement, j'avais pas fait attention à ton exemple pour l'affichage des résultats... ;)

Une idée :
1) Récupère le nombre de résultats :
$nb_resultats=mysql_num_rows($req);
=> Pour ton exemple : 12

2) Divise par le nombre de colonnes : $d
=> Pour ton exemple : 4 (attention si ça ne tombe pas juste à utiliser round() pour arrondir à l'entier)

Ensuite tu boucles sur le résultat de ta division en affichant:
$i dans la 1ère colonne (où $i est le nombre de fois que tu passe dans la boucle)
($d + $i) dans la 2ème colonne
(2 * $d + $i) dans la 3ème colonne

par fabien_14 » 09 déc. 2008, 22:00

Bonjour,

J'ai reussi a adpater le script :)

cependant cela m'affiche sous cette forme

1 2 3
4 5 6
7 8 9
10 11 12


C'est pôssible de mettre l'affichage comme cela ?

1 5 9
2 6 10
3 7 11
4 8 12


J'ai fais le HTML que je voudrais a la sorti de la requete
<table>

<tr><td >

<ul><li ><a href="#" title="test"> Texte 1</a></li></ul>
<ul><li ><a href="#" title="test"> Texte 2</a></li></ul>	
<ul><li ><a href="#" title="test"> Texte 3</a></li></ul>
</td><td >
		
<ul><li ><a href="#" title="test"> Texte 4</a></li></ul>
<ul><li ><a href="#" title="test"> Texte 5</a></li></ul>	
<ul><li ><a href="#" title="test"> Texte 6</a></li></ul>
		
</td><td >

<ul><li ><a href="#" title="test"> Texte 7</a></li></ul>
<ul><li ><a href="#" title="test"> Texte 8</a></li></ul>	
<ul><li ><a href="#" title="test"> Texte 9</a></li></ul>

</tr>

</table>			
Les ligne "<ul><li ><a href="#" title="test"> Texte 9</a></li></ul>
" etant les résultats de la requete (en loccurence 9 ici)

Merci

par @rthur » 09 déc. 2008, 21:12

Bonsoir,

:arrow: [Tuto]
 Nombre de Colonnes dynamique[/url]

[img]http://www.titanquest-fr.com/forum/images/smiles/ducros.gif[/img] ;)
[img]http://storage.canalblog.com/11/97/80928/14211614_p.jpg[/img]

Afficher ma requete sur 3 colonnes

par fabien_14 » 09 déc. 2008, 20:36

Bonjour,

J'ai une requête est je souhaite afficher le résultat en plusieurs colonnes (3 dans mon cas)

comme ceci

1 5 9
2 6 10
3 7 11
4 8 12

Depuis avant hier je cherche mais pas moyen ...
<?php
$sql = "SELECT id,nom FROM test ORDER BY nom ASC";
$req = mysql_query($sql)or die(mysql_error());
$prems_lettre='1';

while ($res = mysql_fetch_assoc($req))
{
	if(strtolower($res['nom'][0])!= $prems_lettre)
	{
		echo '<span id="'.$res['nom'][0].'"><br />- ',strtoupper($res['nom'][0]),' -</span><br /><br />';
		$prems_lettre = strtolower($res['nom'][0]);
	}
	
	$nom = $res[nom];
	$id_annonceur = $res[id];
	echo "<li><a href=\"$nom\">$res[nom]</a></li><br />";


}
?>
</ul><div>
<?php
}

Merci de votre aide