Array, do, while, break, ou continue ?
Résolu
cheese42
Messages postés
890
Statut
Membre
-
Mihawk Messages postés 4753 Statut Contributeur -
Mihawk Messages postés 4753 Statut Contributeur -
Bonjour,
alors voila un problème sur lequel je galère depuis 3 jours, je viens demander un peu d'aide =>
je veux afficher un résultat en forme de tableau, sur 2 colonnes horizontale maximum
et tout le résultat en vertical
je dois afficher comme ceci :
result1 - result2
result3 - result4
result5 - result6
etcetc jusqu'au nombre maximal récupéré en base
pour le moment,
j'ai une requête qui recup le nombre maxi:
<?php
$uuuuuuuuuuu = mysql_query("SELECT COUNT(*) AS nomdelacatego from categoriedescodes WHERE premierelettre = 'A' OR premierelettre = 'B' OR premierelettre = 'C' OR premierelettre = 'D' OR premierelettre = 'E' ORDER BY nomdelacatego");
$doggggg = mysql_fetch_array($uuuuuuuuuuu);
$nombredecolonnes= $doggggg['nomdelacatego'];
ok, donc la c'est bon, j'ai le nombre maxi de result ,
ensuite pour recup les result,
<?php
$premsql = mysql_query("select * from categoriedescodes WHERE premierelettre = 'A' OR premierelettre = 'B' OR premierelettre = 'C' OR premierelettre = 'D' OR premierelettre = 'E' ORDER BY nomdelacatego");
$nb1='0';
while ($doone = mysql_fetch_array($premsql) )
{
$nb1++;
// mes result
}
?>
mais comment faire ?
si je fais une boucle normale en while, le tableau s'affiche bien mais sous cette forme:
result1
result2
result3 etcetc
et si je fais un "for"
mon résultat est comme cela:
result1 - result1
result2 - result2
etcetc...
merci de votre aide ;), cdlt...
--
----------------------------------------------------------------------
/ La vie ne vaut rien mais rien ne vaut la vie !!!!! /
----------------------------------------------------------------------
alors voila un problème sur lequel je galère depuis 3 jours, je viens demander un peu d'aide =>
je veux afficher un résultat en forme de tableau, sur 2 colonnes horizontale maximum
et tout le résultat en vertical
je dois afficher comme ceci :
result1 - result2
result3 - result4
result5 - result6
etcetc jusqu'au nombre maximal récupéré en base
pour le moment,
j'ai une requête qui recup le nombre maxi:
<?php
$uuuuuuuuuuu = mysql_query("SELECT COUNT(*) AS nomdelacatego from categoriedescodes WHERE premierelettre = 'A' OR premierelettre = 'B' OR premierelettre = 'C' OR premierelettre = 'D' OR premierelettre = 'E' ORDER BY nomdelacatego");
$doggggg = mysql_fetch_array($uuuuuuuuuuu);
$nombredecolonnes= $doggggg['nomdelacatego'];
ok, donc la c'est bon, j'ai le nombre maxi de result ,
ensuite pour recup les result,
<?php
$premsql = mysql_query("select * from categoriedescodes WHERE premierelettre = 'A' OR premierelettre = 'B' OR premierelettre = 'C' OR premierelettre = 'D' OR premierelettre = 'E' ORDER BY nomdelacatego");
$nb1='0';
while ($doone = mysql_fetch_array($premsql) )
{
$nb1++;
// mes result
}
?>
mais comment faire ?
si je fais une boucle normale en while, le tableau s'affiche bien mais sous cette forme:
result1
result2
result3 etcetc
et si je fais un "for"
mon résultat est comme cela:
result1 - result1
result2 - result2
etcetc...
merci de votre aide ;), cdlt...
--
----------------------------------------------------------------------
/ La vie ne vaut rien mais rien ne vaut la vie !!!!! /
----------------------------------------------------------------------
4 réponses
-
Et moi je ferai ça :
$nbResultsPerLine = 2; $currentResultIndex = 1; $nbOfResults = count(mysql_fetch_array($premsql)); echo('<table><tr>'); while($donnee = mysql_fetch_array($premsql)){ if($currentResultIndex%$nbResultsPerLine != 0){ echo('<td>'.$donnee['madonnees'].'</td>'); }else{ echo('<td>'.$donnee['madonnees'].'</td></tr>'); if($currentResultIndex < $nbOfResults) echo('<tr>'); } $currentResultIndex++; }
Comme ça en plus tu peux changer le nombre de résultats à mettre par ligne :)
Je n'ai pas testé y aura p'tete un ou deux effets de bords :P
-
-
-
-
allllllllllllllllllllez yessssssssss ;)
super, merci à vous 2, je poste mon code si cela peut servir un jour à quelqu'un !!!!!
======================
<table align="center" width="600" border="2" bgcolor="#FFFFCC">
<tr align="center">
<td><br />
<table>
<?php
$uuuuuuuuuuu = mysql_query('SELECT COUNT(*) AS nomdelacatego from categoriedescodes WHERE nomdelacatego regexp "^[ABCDE]" ORDER BY nomdelacatego');
$doggggg = mysql_fetch_array($uuuuuuuuuuu);
$totaldecmbres = $doggggg['nomdelacatego'];
$nombredecolonnespremcatego = $totaldecmbres;
$premsql = mysql_query('select * from categoriedescodes WHERE nomdelacatego regexp "^[ABCDE]" ORDER BY nomdelacatego');
$nbResultsPerLine = 2;
$currentResultIndex = 1;
$nbOfResults = count(mysql_fetch_array($premsql));
echo('<tr>');
while($doone = mysql_fetch_array($premsql)){
if($currentResultIndex%$nbResultsPerLine != 0){
?>
<td align="center">
<table width="250" border="0" bgcolor="#FFCCFF">
<tr>
<td width="100" align="center"><a href="codesenvente.php?ask=<?php echo $doone['nomdelacatego']; ?>" style="color:#000000;"><img src="<?php echo $doone['imgcodesite']; ?>" alt="<?php echo $doone['nomdelacatego']; ?>" border="0" width="90" height="90" /></a></td>
<td width="100" align="center"><a href="codesenvente.php?ask=<?php echo $doone['nomdelacatego']; ?>" style="color:#000000;"><?php echo $doone['nomdelacatego']; ?></a></td>
<td width="50" align="center"><b><font color="#000000">(<?php echo $doone['numberdecetype']; ?>)</font></b></td>
</tr>
</table>
<br /><br />
</td>
<?php
}else{
?>
<td align="center">
<table width="250" border="0" bgcolor="#FFCCFF">
<tr>
<td width="100" align="center"><a href="codesenvente.php?ask=<?php echo $doone['nomdelacatego']; ?>" style="color:#000000;"><img src="<?php echo $doone['imgcodesite']; ?>" alt="<?php echo $doone['nomdelacatego']; ?>" border="0" width="90" height="90" /></a></td>
<td width="100" align="center"><a href="codesenvente.php?ask=<?php echo $doone['nomdelacatego']; ?>" style="color:#000000;"><?php echo $doone['nomdelacatego']; ?></a></td>
<td width="50" align="center"><b><font color="#000000">(<?php echo $doone['numberdecetype']; ?>)</font></b></td>
</tr>
</table>
<br /><br />
</td></tr>
<?php
if($currentResultIndex < $nbOfResults) echo('<tr>');
}
$currentResultIndex++;
}
echo('</tr>');
?>
</table>
</td>
</tr>
</table>
<br /> -
-
-
Hello,
Pour info ta requête est un peu lourde. Tu as fait une zone "catégorie" et une zone "première lettre de la catégorie" ? C'est dommage !
select * from categoriedescodes WHERE premierelettre = 'A' OR premierelettre = 'B' OR premierelettre = 'C' OR premierelettre = 'D' OR premierelettre = 'E' ORDER BY nomdelacatego
Est équivalent à :
select * from categoriedescodes WHERE nomdelacatego regexp "^[ABCDE]" ORDER BY nomdelacatego
Les expressions régulières sont un outil incontournable quelque soit le language
Mihawk
"La rigoureusité fait la qualité" -
Bonjour,
Pourquoi for ne te convient pas ? Le rendu est le même que tes lignes en gras :$ -
bjr,
si je met "for",
cela fera
resul1- resul1
resul2-resul2
etcetc
alors que moi il faudrait,
result1 -result2
result3 - resul4
ma boucle doit avoir un souci ===>
$premsql = mysql_query("select * from categoriedescodes WHERE premierelettre = 'A' OR premierelettre = 'B' OR premierelettre = 'C' OR premierelettre = 'D' OR premierelettre = 'E' ORDER BY nomdelacatego");
$nb1='0';
while ($doone = mysql_fetch_array($premsql) )
{
$nb1++;
?>
<tr align="center">
<?php
//for( $i = 0; $i < 2; $i++ )
//{
?>mes td ici
<?php
// continue;
// echo ''; // cette instruction ne sera jamais exécutée
//}
?>
</tr>
<?php
}
?>
</table>