Array, do, while, break, ou continue ?

Résolu
cheese42 Messages postés 890 Statut Membre -  
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 !!!!! /
----------------------------------------------------------------------

4 réponses

  1. Mihawk Messages postés 4753 Statut Contributeur 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
    1. AssassinTourist Messages postés 409 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      Bien joué pour le modulo ;)
      0
    2. Mihawk Messages postés 4753 Statut Contributeur 846
       
      ;-)
      0
    3. cheese42 Messages postés 890 Statut Membre 120
       
      merci, je teste de suite, je vous dis cela ;)
      0
    4. cheese42 Messages postés 890 Statut Membre 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
    5. Mihawk Messages postés 4753 Statut Contributeur 846
       
      Good for you :)
      0
  2. Mihawk Messages postés 4753 Statut Contributeur 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
    1. cheese42 Messages postés 890 Statut Membre 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
    2. cheese42 Messages postés 890 Statut Membre 120
       
      voila mihawk, les requetes de la page sont changées,merci
      mais la colonne est toujours sur une seul horizontale ;).....
      0
    3. Mihawk Messages postés 4753 Statut Contributeur 846
       
      Et la requête fonctionne toujours ?
      0
    4. cheese42 Messages postés 890 Statut Membre 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
  3. AssassinTourist Messages postés 409 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    Bonjour,
    Pourquoi for ne te convient pas ? Le rendu est le même que tes lignes en gras :$
    0
  4. cheese42 Messages postés 890 Statut Membre 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
    1. AssassinTourist Messages postés 409 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      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
    2. AssassinTourist Messages postés 409 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      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