Requete = casse tete

Résolu/Fermé
Fetide68 Messages postés 737 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 14 avril 2023 - 22 sept. 2009 à 16:37
giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 - 24 sept. 2009 à 19:01
Bonjour,

J'essaie de faire en sorte d'afficher un tableau avec les résultats d'une requête de sorte qu'un ligne sur deux soit différente (style a et style b), indépendemment de l'ID (pour pouvoir changer l'order by par la suite)...

voici le code :

echo '<table class="categories" cellspacing="0">';


$reponse = mysql_query ("SELECT * FROM categories ORDER BY id_categorie") or die ("erreur :".mysql_error());
$max = mysql_query("SELECT MAX(id_categorie) FROM categories");

while ($maxi = mysql_fetch_array($max)) {
$j = $maxi[0];
}

echo '<tr class="titre"><td class="id">#</td><td>Catégorie</td><td>'.$j.'</td><td></td></tr>';

for ($i = 0; $i <= $j; $i++) {
while ($donnees = mysql_fetch_array ($reponse)) {
$a = '
<tr class="a">
<td class="id">'.$i.'</td>
<td class="categorie">'.$donnees['categorie'].'</td>
<td class="modifier"><a href="?c=admin&d=cat&cat='.$donnees['id_categorie'].'" title="modifier"><img src="illus/modif.gif" class="modifier" /></a></td>
<td class="supprimer"><a href="include/supprimer.php?a=cat&id='.$donnees['id_categorie'].'" title="supprimer"><img src="illus/del.gif" class="supprimer" /></a></td>
</tr>';
$b = '
<tr class="b">
<td class="id">'.$i.'</td>
<td class="categorie">'.$donnees['categorie'].'</td>
<td class="modifier"><a href="?c=admin&d=cat&cat='.$donnees['id_categorie'].'" title="modifier"><img src="illus/modif.gif" class="modifier" /></a></td>
<td class="supprimer"><a href="include/supprimer.php?a=cat&id='.$donnees['id_categorie'].'" title="supprimer"><img src="illus/del.gif" class="supprimer" /></a></td>
</tr>';

if ($i%2 == 0) echo $a; else echo $b;
}
}

echo '</table>';




J'ai placé le for et les while dans tous les sens, c'est un véritable casse tête et je n'obtien jamais le résultat escompté...

8 réponses

giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
22 sept. 2009 à 18:04
bonsoir,

ce code peut-il vous mettre sur la piste ?
à chaque affichage on multiplie un chiffre par -1 et on affiche une couleur en fonction de cette valeur.
ceci peut vous permettre de changer une option class= dans un td

<?php
$k=1;
for ($j=0;$j<10;$j++){
$t[]=$j;
}
echo "<table>";
for ($i=0;$i<sizeof($t);$i++){
$k=$k*-1;
if ($k<0) {
echo "<tr><td bgcolor='red'><font color='blue'>".$i."</td></tr>";
}
else
{
echo "<tr><td bgcolor='blue'><font color='red'>".$i."</td></tr>";
}

}
?>
0
Fetide68 Messages postés 737 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 14 avril 2023 32
23 sept. 2009 à 11:19
c'est pas exctement ça mon problème...

voici mon code :

$conditions = "WHERE titre LIKE '%amour%'";
	
$requete = mysql_query ("SELECT * FROM films ".$conditions);
$nombre = mysql_query ("SELECT count(*) FROM films ".$conditions);
	
$nbre = mysql_fetch_row($nombre);
	
	
echo '<table>';
	
for ($i = 0; $i < $nbre[0]; $i++) { 
	while ($row = mysql_fetch_row($requete)) {
		if ($i%2 == 0) echo '<tr class="a">'; else echo '<tr class="b">';
			echo '<td>'.$i.'</td>';
			echo '<td>'.$row[2].'</td>';
		echo '</tr>';
	}
}
	
echo '</table>';


La succession de for, while, if ne semble pas fonctionner, pourtant l'ordre dans lequel les actions doivent s'exécuter est celui-là...

Comment font les site pour afficher une ligne sur deux d'un style différent, sans faire le modulo sur l'id (si je fait sur l'id, ça fonctionne, mais si le tri se fait sur autre chose que sur l'id, ça fait con...
0
giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
23 sept. 2009 à 17:29
bonsoir,
pourtant

echo '<table>';
$k=1;
for ($i = 0; $i < $nbre[0]; $i++) {
while ($row = mysql_fetch_row($requete)) {
if ($k<1) echo '<tr class="a">'; else echo '<tr class="b">';
$k=$k*-1
echo '<td>'.$i.'</td>';
echo '<td>'.$row[2].'</td>';
echo '</tr>';
}
}

echo '</table>';

ce qui fait bien une ligne sur deux indépendemment de $i
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
23 sept. 2009 à 21:41
si j'ai bien compris tu veut appliquer un style different une ligne sur deux

c'est assez simple avant ta boucle tu defini tes 2 styles



tu defini bien evidemment tes styles dans un css qui va bien

.pair{
...ce que tu souhaite
}

.impair{
...ce que tu souhaite
}


maintenant que c'est fait apres le debut de ta boucle for($i=0
tu met ça

if ( (i % 2) == 0) 
{
   $class='pair';
} 
else 
{
    $class='impair';
}

et dans ta table
tu met ça

for ($i = 0; $i <= $j; $i++) {
while ($donnees = mysql_fetch_array ($reponse)) {
$a = '
<tr class="'.$class.' ; "> 


et voila
0

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

Posez votre question
Fetide68 Messages postés 737 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 14 avril 2023 32
24 sept. 2009 à 16:50
J'ai trouvé en m'inspirant de la méthde à giheller... :


$nombre = mysql_query ("SELECT count(****CHAMPS****) FROM ****TABLE**** ****+CLAUSES****")

$i = 0;

if($i%2==1) $class="a"; else $class="b";

<tr class="<?php echo $class; ?>">

if ($i <= $nombre[0]) $i++; else $i=0;



Ca marche bien et c'est très simple, façile à adapter si besoin. Merci à tous !
0
giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
24 sept. 2009 à 17:30
bonsoir,

utiliser la division ou ce que je proposais : muliplier par -1 pour avoir un coup sur deux un nombre positif ou un nombre négatif revient au même quant au résultat.
0
Fetide68 Messages postés 737 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 14 avril 2023 32
24 sept. 2009 à 18:10
Exetcement, mais au moins grâce à toi, j'ai compris les deux solutions, et je l'avais trouvée avant de revenir sur le site...
0
giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
24 sept. 2009 à 19:01
bonne soirée
@+
0