Aide petit script PHP comprehension

Fermé
dubuducu Messages postés 391 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 19 mai 2010 - 3 déc. 2008 à 15:04
 Utilisateur anonyme - 3 déc. 2008 à 15:48
Bonjour,
voici mon code : je souhaiterai obtenir un tableau avec plusieurs colonnes.
Dès que l'affichage depasse 3lignes par colonnes, le script rajoute une colonne et ainsi de suite.
$tr = '0';
while ($liste=mysql_fetch_array($result)) 
{ 
   if($tr == '3')
   
   {$tr = '0' ;}
   
   if($tr == '0')
   {
      echo '<td>';
   }
   ?>
   <tr><a href="#<? 
   echo $liste['cat_nom']; 
   ?>">
   <? 
   echo $liste['cat_nom']; 
   ?>
   </a></tr>
   <?
   if($tr == '2')
   {
      echo '</td>';
   }
   $tr++;
}

Pourtant ce script ne m'affiche qu'une seule colonne avec toute les categorie a linterieur
Merci de votre aide
A voir également:

9 réponses

EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
3 déc. 2008 à 15:17
Voilà ton code indenté différemment
// Attention tu utilises des caractères et pas des entiers !!!
$tr = '0';
while ($liste=mysql_fetch_array($result)) 
{
	if($tr == '3')
	{
		$tr = '0' ;
	}
	if($tr == '0')
	{
		echo '<td>';
	}
	?>
	<tr>
		<a href="#<? echo $liste['cat_nom']; ?>"><? echo $liste['cat_nom']; ?></a>
	</tr>
	<?
	if($tr == '2')
	{
		echo '</td>';
	}
	$tr++;
}

J'ai l'impression que c'est n'importe quoi. Tu t'y prends mal. Je vais essayer de te proposer une correction.
En fait tu veux une nouvelle ligne toutes les 3 colonnes c'est ça ?
0
Utilisateur anonyme
3 déc. 2008 à 15:22
Bonjour,

<tr> définit une ligne
<td> définit une colonne
OK mais les td sont mal placés

0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
3 déc. 2008 à 15:26
Oui c'est ce que j'avais remarqué

En HTML pure
ton source HTML devrait ressembler à ça
<tr>
   <td><a href="...">...</a></td><td><a href="...">...</a></td><td><a href="...">...</a></td>
   <td><a href="...">...</a></td><td><a href="...">...</a></td><td><a href="...">...</a></td>
   <td><a href="...">...</a></td><td><a href="...">...</a></td><td><a href="...">...</a></td>
   ...
</tr>


A noter que pour la première ligne tu pourrais aussi utiliser TH (Table Header) au lieu de TD (Table Data)

Bon si j'ai bien compris pas besoin de proposer de correction. :)
0
dubuducu Messages postés 391 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 19 mai 2010 4
3 déc. 2008 à 15:25
je souhaite une nouvelle colonne toutes les 3 lignes par exemple du type :
A D G
B E H etc
C F
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
3 déc. 2008 à 15:28
Ah !
Là c'est plus compliqué parce que les tableaux ont un sens en HTML et toi tu semble vouloir les utiliser dans l'autre sens.
0
Utilisateur anonyme
3 déc. 2008 à 15:30
oui j'ai bien saisi

if (tr==0) { echo "<tr>"; tr++;}
if (tr==2) { echo "</tr>"; tr=0;}
echo "<td>".$mon truc."</td>";
0
dubuducu Messages postés 391 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 19 mai 2010 4
3 déc. 2008 à 15:29
Excusez moi mais je n'ai rien pigé ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubuducu Messages postés 391 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 19 mai 2010 4
3 déc. 2008 à 15:35
@giheller : Votre code me donne A B C D E F G de cette maniere.
if ($tr== '0') 
{ 
echo "<tr>"; 
$tr++;
} 
if ($tr== '2') 
{ 
echo "</tr>"; 
$tr= '0';
} 
echo "<td>".$liste['cat_nom']."</td>"; 
0
Utilisateur anonyme
3 déc. 2008 à 15:38
if (tr==0) { echo "<tr>"; tr++;}

echo "<td>".$mon truc."</td>";
$td++;

if (td==2) { echo "</tr>";$tr=0; $td=0;}

0
dubuducu Messages postés 391 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 19 mai 2010 4
3 déc. 2008 à 15:42
je suis vraiment désolé de paraitre si naif mais je ne pige vraiment rien a votre technique.
if ($tr== '0') 
{ 
echo "<tr>"; 
$tr++; // j'incremente les lignes
} 
if ($tr== '2')  // dès que j'ai deux lignes je remet $tr a zero
{ 
echo "</tr>"; 
$tr= '0';
} 
echo "<td>".$liste['cat_nom']."</td>"; // ici je ne vois pas pourquoi l'affichage des td se fait ici 


Excusez moi encore
0
Utilisateur anonyme
3 déc. 2008 à 15:45
voir le nouveau code envoyé--
JL, 
0
dubuducu Messages postés 391 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 19 mai 2010 4
3 déc. 2008 à 15:44
La c'est parfaitement clair, je teste ce code et je vous tien au courant.
0
dubuducu Messages postés 391 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 19 mai 2010 4
3 déc. 2008 à 15:46
Merci Giheller pour vos lumieres ! Cela fonctionne parfaitement ! Merci une nouvelle fois
0
Utilisateur anonyme
3 déc. 2008 à 15:48
l'idée est quand tr=0 c'est une nouvelle ligne
quand a-t-on une nouvelle ligne ?
quand on a écrit 3 colonnes (donc on compte jusqu'à 3 les colonnes) et on remet tr à zero pour une nouvelle ligne
et td à zero pour recompter jusqu'à 3
(comptage de zero à 2)
0