Array, do, while, break, ou continue ?

Résolu
cheese42 Messages postés 860 Date d'inscription   Statut Membre Dernière intervention   -  
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   -
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...







A voir également:

4 réponses

Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
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
2
AssassinTourist Messages postés 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Bien joué pour le modulo ;)
0
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
;-)
0
cheese42 Messages postés 860 Date d'inscription   Statut Membre Dernière intervention   120
 
merci, je teste de suite, je vous dis cela ;)
0
cheese42 Messages postés 860 Date d'inscription   Statut Membre Dernière intervention   120
 
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 />
0
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
Good for you :)
0
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
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é"
1
cheese42 Messages postés 860 Date d'inscription   Statut Membre Dernière intervention   120
 
merci Mihawk, je vais utiliser ceci, merci, mais, pour assassintourist,
oui cette requete est actuellement sur un site, donc
oui il serait preferable de mettre sur 2 colonnes car la pour le moment
ca fait une longue page et cela couperait en 2,
merci....
0
cheese42 Messages postés 860 Date d'inscription   Statut Membre Dernière intervention   120
 
voila mihawk, les requetes de la page sont changées,merci
mais la colonne est toujours sur une seul horizontale ;).....
0
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
Et la requête fonctionne toujours ?
0
cheese42 Messages postés 860 Date d'inscription   Statut Membre Dernière intervention   120
 
oui mihawk, toutes les requetes passent niquel,
de A a Z et de 0 à 9, c tout bon, c juste que cela s'affiche env ertcial mais que sur 1 seule colonne ;) merci...
0
AssassinTourist Messages postés 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Bonjour,
Pourquoi for ne te convient pas ? Le rendu est le même que tes lignes en gras :$
0
cheese42 Messages postés 860 Date d'inscription   Statut Membre Dernière intervention   120
 
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>



0
AssassinTourist Messages postés 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Ah oui, je vois (pardon XD)
Et je vois le problème. Je voudrais alors savoir si tu comptes mettre réellement deux colonnes ou si c'est juste un exemple ?
0
AssassinTourist Messages postés 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Bon alors moi, je ferais quelque chose comme ceci :

$fin_ligne = false;
while(){
  if(!$fin_ligne){
    <tr><td>result</td>
    $fin_ligne = true;
  }else{
    <td>result</td></tr>
    $fin_ligne = false;
  }
}
0