Requete = casse tete
Résolu
Fetide68
Messages postés
745
Date d'inscription
Statut
Membre
Dernière intervention
-
giheller Messages postés 1882 Date d'inscription Statut Membre Dernière intervention -
giheller Messages postés 1882 Date d'inscription Statut Membre Dernière intervention -
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é...
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é...
A voir également:
- Requete = casse tete
- L'en-tête du document comporte une information qui n’apparaît pas à l'impression car elle est de couleur blanche. de quelle information s'agit-il ? ✓ - Forum Bureautique
- Réparation écran tv samsung cassé ✓ - Forum Téléviseurs
- Écran ordinateur cassé sans choc - Forum Ecran
- Écran pc portable cassé mettre second écran en écran primaire ✓ - Forum PC portable
- Ecran telephone cassé de l'interieur - Forum Wiko
8 réponses
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>";
}
}
?>
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>";
}
}
?>
c'est pas exctement ça mon problème...
voici mon code :
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...
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...
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
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
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
maintenant que c'est fait apres le debut de ta boucle for($i=0
tu met ça
et dans ta table
tu met ça
et voila
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai trouvé en m'inspirant de la méthde à giheller... :
Ca marche bien et c'est très simple, façile à adapter si besoin. Merci à tous !
$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 !
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.
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.