boucle et tableau

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : boucle et tableau

par Cyrano » 03 juil. 2006, 07:38

Pour cela il te suffit d'utiliser la commande LIMIT juste avant le order by.
... hum hum... la clause LIMIT est toujours à la fin d'une requête APRÈS une éventuelle clause ORDER BY ;)

par Ryle » 02 juil. 2006, 21:51

Y a plusieurs façon de faire mais la plus habile serait de limiter le nombre d'enregistrements retournés par ta requête sql. Pour cela il te suffit d'utiliser la commande LIMIT juste avant le order by.

Pour tes 2 lignes, il te faut juste les 6 premiers enregistrements, tu peux donc ajouter LIMIT 0, 6 (pour avoir 6 enregistrements à partir de l'enregistrement zéro)

par xencinas » 02 juil. 2006, 17:46

bon j'ai fait les correction et ça fonctionne.

mais maitenant je voudrais qu'à la fin de la 2ème ligne, la boucle s'arrête.

Je vois pas comment faire ?

merci de votre aide.
        <?
//--- une requête 
$req = "SELECT * FROM itw ORDER BY id DESC"; 

//--- Résultat 
$res = mysql_query($req);   
while($data = mysql_fetch_array($res))  { 
        // on stocke nos données 
        $tablo[]=$data; 
}   
$nbcol=3; //--- détermine le nombre de colonnes de l'affichage 

echo "<table width='100%' border='0' cellpadding='3' cellspacing='0'>";   
for($i=0;$i<count($tablo);$i++){ 

        if($i%$nbcol==0)   
        echo "<tr>";   
        echo "<td><table width='220' border='0' cellpadding='0' cellspacing='0'>
	<tr>
	<td width='104' rowspan='2'><img src='img_itw/".$tablo[$i]['img']."' width='104' height='136'></td>
	
	<td width='132' height='115' valign='top'><span class='bold'>".$tablo[$i]['nom']."</span><p><span class='text'>".$tablo[$i]['chapeau']."</span></td>
       </tr>
       <tr>";
	   
	 if($tablo[$i]['type'] == "collaborateur"){
	   
	   echo"<td height ='21' background='img_itw/bg_collaborateur.jpg' align='center'>";}
		 
		 elseif($tablo[$i]['type'] == "spécialisé"){
	   
	   echo"<td  height ='21' background='img_itw/bg_jeuneavocat.jpg' align='center'>";}
		  
		 elseif($tablo[$i]['type'] == "avocat indépendant"){
		 echo"<td  height ='21' background='img_itw/bg_avocatinde.jpg' align='center'>";}
		 
		 
		  
		 elseif($tablo[$i]['type'] == "créateur"){
	   
	   echo" <td  heigh ='21' background='img_itw/bg_associe.jpg' align='center'>";}
		 
		  
		 elseif($tablo[$i]['type'] == "avocat étrangers"){
	   
	   echo"<td  height ='21' background='img_itw/bg_avocatetrangers.jpg' align='center'>";}
	     
		 elseif($tablo[$i]['type'] == "plaidant"){
	   
	   echo"<td  height ='21' background='img_itw/bg_plaidant.jpg' align='center'>";}
	   
	   
	   echo"<a href='itw.php?id=". $tablo[$i]['id']."' class='white'>Voir l'interview</a></td>
       </tr>
     </table>
	
	
	
	</td>";   

        if($i%$nbcol==($nbcol-1) or $i==(count($tablo)-1)) 
        echo "</tr>";   
}   
echo "</table>"; 
?>

par Ryle » 01 juil. 2006, 22:03

Ta requête retourne-t-elle des résultats ? vire les "@", s'il y a des erreurs, il vaut mieux le savoir et les corriger que de les ignorer... tu peux aussi rajouter des "or die(mysql_error())" après tes mysql_query()

Est ce que tu rentres dans les if ? que contiennent tes variables ? pourquoi les éléphants dorment-ils debout ? tout ça.. :)

par xencinas » 01 juil. 2006, 17:42

ouais pardon...
bon j'ai corrigé l'erreur mais rien n'apparaît, enfin si le reste de la page mais pas le code php... Aucune erreur... comprend pas.

par Ryle » 01 juil. 2006, 15:27

Ca serait judicieux de nous expliquer ce qui se passe plutot que de juste dire que ca ne fonctionne pas...

Tiens par exemple tu nous dirais que tu as un message d'erreur disant quelque chose "parse error line 84", on pourrait tout de suite te dire - et ce, sans avoir à chercher dans tout le code ce qui pourrait ne pas fonctionner sans savoir ce qu'on recherche exactement - que c'est sans doute parce que ta ligne 84 n'est pas terminée que ce code ne doit pas marcher ;)

par xencinas » 01 juil. 2006, 15:00

merci, j'ai fait un tour et j'ai compris certain truc. Je suis partie sur cette base mais ça ne fonctionne pas... comprends pas pourquoi ?
<?


/*Compte le nb de resultat pour afficher 3 résultats par ligne*/ 
$countres="SELECT COUNT(id) FROM itw"; 
$p = @mysql_query($countres); 
$total = @mysql_result($p,'0','qte'); 


$req= "SELECT * FROM itw ORDER BY id DESC"; 
$res= mysql_query($req); 

//déclaration de quelques variables 
$nb=3;// Nombre de photos souhaiter par ligne 
$i=0; 
?> 
<?     
     if ($total > 0) 
     { 
?> 
       <table cellpadding="3" cellspacing="0" width="100%" border="1"> 
<?         
        while ($ligne = @mysql_fetch_array($res)) 
        { 
           if ($i % $nb == 0) 
           { 
?> 
       <tr> 
<? 
           } 
?>      <td><table width="220" border="0" cellpadding="0" cellspacing="0">
       <tr>
         <td width="104" rowspan="2"><img src="img_itw/<? echo $ligne['img']; ?>" width="104" height="136"></td>
         <td width="132" height="115" valign="top"><span class="bold"><? echo $ligne['nom']; ?></span><p><span class="text"><? echo $ligne['chapeau']; ?></span></td>
       </tr>
       <tr>
	   
	   <?  if($ligne['type'] == "collaborateur"){
	   
	   echo"<td height ='21' background='img_itw/bg_collaborateur.jpg' align='center'>";}
		 
		 elseif($ligne['type'] == "jeune avocat"){
	   
	   echo"<td  height ='21' background='img_itw/bg_jeuneavocat.jpg' align='center'>";}
		  
		 elseif($ligne['type'] == "avocat indépendant"){
		 echo"<td  height ='21' background='img_itw/bg_avocatinde.jpg' align='center'>";}
		 
		 
		  
		 elseif($ligne['type'] == "associé"){
	   
	   echo" <td  heigh ='21' background='img_itw/bg_associe.jpg' align='center'>";}
		 
		  
		 elseif($ligne['type'] == "avocat étrangers"){
	   
	   echo"<td  height ='21' background='img_itw/bg_avocatetrangers.jpg' align='center'>";}?>
	   
	   <a href="itw.php?id=<? echo $ligne['id']; ?>" class="white">Voir l'interview</a></td>
       </tr>
     </table> </td>
<?          
          
           if ($i % $nb == ($nb - 1)) 
           { 
?>          
       </tr> 
<? 
           } 
           $i++; 
        
        } 


        if ($total % $nb == 0) 
        { 
?> 
      </table> 
<?       
        } 
        else 
        { 
        $reste = $nb - ($total % $nb 
        for ($j = 0; $j < $reste; $j++) 
         { 
?> 
       <td>&nbsp;</td> 
<?        
          
         } 
?> 
       </tr> 
       </table> 
<? 
        } 
     } 
?>
Merci de votre aide.

par Cyrano » 30 juin 2006, 21:49

Fais une recherche sur le forum avec le mot clé "modulo", tu vas trouver la réponse.

boucle et tableau

par xencinas » 30 juin 2006, 20:13

Salut,

Je voudrais savoir comment on fait pour afficher une boucle dans un tableau sous cette forme avec un maximum de 6 affichage.

info1 info2 info3 (à la ligne)
info4 info5 info6 (à la ligne)


Merci beaucoup !