probleme de boucle

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 : probleme de boucle

par nogeva » 21 févr. 2006, 12:57

perso je mettrais mes balsies de tableua redondante comme ton fameux <td> ds une variable et je greouperais l'intégrale dans un seul et unique <?php

?>

d'autant que ton :<table width="554" border="0" cellpadding="0" cellspacing="0">

il n'y a pas de echo devant.

essai ça:

Code : Tout sélectionner

<table width="554" border="0" cellpadding="0" cellspacing="0"> <?php $debtableau ="<tr><td height='12' bgcolor='#114F89'><span class='Style6'>Ann&eacute;e</span></td><td bgcolor='#114F89'><strong> <span class='Style6'>"; $miltableau ="</span></strong></td></tr><tr><td height='12'><strong>< 25 ans </strong></td><td><strong>"; $fintableau ="</strong></td></tr>"; $result00=mysql_query ("select MAX(DATE_FORMAT(activite.dat_versement_pret,'%Y')) from activite"); $data00=mysql_fetch_array($result00); $nombre= 2000; $nbre2=$data00[0]; while($nbre2 >=$nombre){ echo $debtableau."$nombre"; echo $miltableau; $req="select count(createur.age) FROM createur,activite WHERE createur.valide='Y' and createur.age <= '25' and DATE_FORMAT(activite.dat_versement_pret,'%Y') like '$nombre%' and createur.ref=activite.id_createur"; $result01=mysql_query ($req); $data01=mysql_fetch_array($result01); echo $data01[0]; echo $fintableau; $nombre++; } ?> </table>

par goeb » 21 févr. 2006, 12:44

je ne vois pas où est l'erreur.
la seule chose que je vois possible est que tu n'ais pas mis à jour ton script PHP depuis la derniere modification que tu as faite, et que tu regardes donc du HTML généré par une mauvaise version de ton script.

par logone » 17 févr. 2006, 12:57

voici le resultat html

Code : Tout sélectionner

<table width="554" border="0" cellspacing="0" cellpadding="0"> <tr bgcolor="#F8F8F8"> <td width="554" colspan="2" bgcolor="#FFFFFF"><br /> <table width="554" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="12" bgcolor="#114F89"><span class="Style6">Ann&eacute;e</span></td> <td bgcolor="#114F89"><strong> <span class="Style6">2000</span></strong></td> </tr> <tr> <td height="12"><strong>< 25 ans </strong></td> <td><strong>0 </strong></td> </tr> <tr bgcolor="#F8F8F8"> <td height="12"><strong>Entre 26 et 30 </strong></td> <td><strong> 2 </strong></td> </tr> <tr> <td height="12"><strong>Entre 31 et 35 </strong></td> <td><strong> 4 </strong></td> </tr> <tr bgcolor="#F8F8F8"> <td height="12"><strong>Entre 36 et 40 </strong></td> <td><strong> 3 </strong></td> </tr> <tr> <td height="12"><strong>Entre 41 et 45 </strong></td> <td><strong> 1 </strong></td> </tr> <tr bgcolor="#F8F8F8"> <td width="136" height="12"><strong>> 46 ans </strong></td> <td><strong> 5 </strong></td> </tr></table>
Je vais vous eviter la boucle mais voici la derniere ligne

Code : Tout sélectionner

<table width="554" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="12"><strong>< 25 ans </strong></td> <td><strong> 4 </strong></td> </tr> <tr bgcolor="#F8F8F8"> <td height="12"><strong>Entre 26 et 30 </strong></td> <td><strong> 0 </strong></td> </tr> <tr> <td height="12"><strong>Entre 31 et 35 </strong></td> <td><strong> 0 </strong></td> </tr> <tr bgcolor="#F8F8F8"> <td height="12"><strong>Entre 36 et 40 </strong></td> <td><strong> 0 </strong></td> </tr> <tr> <td height="12"><strong>Entre 41 et 45 </strong></td> <td><strong> 0 </strong></td> </tr> <tr bgcolor="#F8F8F8"> <td width="136" height="12"><strong>> 46 ans </strong></td>
la balise td

Code : Tout sélectionner

<td height="12" bgcolor="#114F89"><span class="Style6">Ann&eacute;e</span></td> <td bgcolor="#114F89"><strong> <span class="Style6">2000</span></strong></td>
a completement disparue

tu as raison pour la requete je la modifierais car pour le moment je suis en phase de developpement

par Ryle » 17 févr. 2006, 12:48

Il faudrait que tu donnes également le résultat html complet :)

(pis pour formater du code php, la balise php est plus adaptée ;))

Petite question subsidiaire, pourquoi le :

Code : Tout sélectionner

DATE_FORMAT(activite.dat_versement_pret,'%Y') like '$nombre%'
et pas directement

Code : Tout sélectionner

DATE_FORMAT(activite.dat_versement_pret,'%Y') = $nombre
vu que c'est l'année que tu compares ?

par charabia » 17 févr. 2006, 12:46

Montres nous la source affichée par le navigateur avec tout le tableau.

par logone » 17 févr. 2006, 12:39

voici le code dans son integralite

Code : Tout sélectionner

<table width="554" border="0" cellspacing="0" cellpadding="0"> <tr bgcolor="#F8F8F8"> <td width="554" colspan="2" bgcolor="#FFFFFF"><br /> <?php //***************** //requete 1 //***************** if ($annee2 == "all"){ $result00=mysql_query ("select MAX(DATE_FORMAT(activite.dat_versement_pret,'%Y')) from activite"); $data00=mysql_fetch_array($result00); $nombre= 2000; $nbre2=$data00[0]; ?> <?php //for ( $nombre = 2000 ; $data00[0] >=$nombre ; $nombre++ ) { while($nbre2 >=$nombre){ ?><table width="554" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="12" bgcolor="#114F89"><span class="Style6">Ann&eacute;e</span></td> <td bgcolor="#114F89"><strong> <span class="Style6"><?php echo "$nombre"; ?></span></strong></td> </tr> <tr> <td height="12"><strong>< 25 ans </strong></td> <td><strong><?php $result01=mysql_query ("select count(createur.age) FROM createur,activite WHERE createur.valide='Y' and createur.age <= '25' and DATE_FORMAT(activite.dat_versement_pret,'%Y') like '$nombre%' and createur.ref=activite.id_createur "); $data01=mysql_fetch_array($result01); echo $data01[0]; ?> </strong></td> </tr></table> <?php $nombre++; } ?> <?php }
J'ai modifie la boucle et j'ai opte pour une boucle while mais toujours pareil

grrrrr

par goeb » 17 févr. 2006, 12:10

avec ton découpage je ne comprends plus rien. peux-tu mettre l'integralité de la table, sans découpage ?
(entre <table... et </table>)

par exemple je ne vois pas le "2004". où est-il ?

par logone » 15 févr. 2006, 17:25

dans la variable il n'y a pas de caractere bizarre car elle ne contient qu'un nombre donc a ecarter

la balise </table> est bien presente

voici ce que me retourne le source html

Code : Tout sélectionner

<table width="554" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="12" bgcolor="#114F89"><span class="Style6">Ann&eacute;e</span></td> <td bgcolor="#114F89"><strong> <span class="Style6">2005</span></strong></td> </tr> <tr> <td height="12"><strong>< 25 ans </strong></td>
on voit bien la presence de la ligne

Code : Tout sélectionner

<td height="12" bgcolor="#114F89"><span class="Style6">Ann&eacute;e</span></td> <td bgcolor="#114F89"><strong> <span class="Style6">2005</span></strong></td>
et dans la derniere ligne la ou ca ne s'affiche pas voici ce que ca donne

Code : Tout sélectionner

table width="554" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="12"><strong>< 25 ans </strong></td> <td><strong> 4 </strong></td>
il manque bien le td mais pourquoi il ne s'affiche pas

ARF

par goeb » 15 févr. 2006, 17:17

salut,

il n'y auraient pas des caractères bizarres dans $data01[0] ?
(des caractères non affichables, ou je ne sais quoi, qui perturbent l'affichage)

as-tu bien mis le </table> à la fin ?
dans le source HTML, manque-t-il vraiment la partie <td height etc... ?

probleme de boucle

par logone » 15 févr. 2006, 15:42

Salut,

J'ai un probleme dans une boucle wile et je ne vois pas du tout d'ou cela peux venir

voici mon code
<?php
		  
$result00=mysql_query ("select MAX(DATE_FORMAT(activite.dat_versement_pret,'%Y')) from activite"); 
$data00=mysql_fetch_array($result00);	
$nombre= 2000;
$nbre2=$data00[0];

<table width="554" border="0" cellpadding="0" cellspacing="0">
<?php 

while($nbre2 >=$nombre){
?>
                  <tr>
                    <td height="12" bgcolor="#114F89"><span class="Style6">Ann&eacute;e</span></td>
                    <td bgcolor="#114F89"><strong> <span class="Style6"><?php echo "$nombre"; ?></span></strong></td>
                  </tr>
                  <tr>
                    <td height="12"><strong>< 25 ans </strong></td>
                    <td><strong><?php 

$result01=mysql_query ("select count(createur.age) FROM createur,activite WHERE createur.valide='Y' and createur.age <= '25' and DATE_FORMAT(activite.dat_versement_pret,'%Y') like '$nombre%' and createur.ref=activite.id_createur ");
$data01=mysql_fetch_array($result01);
				  echo $data01[0];
				  ?>
                    </strong></td>
                    </tr>
                      <?php 
$nombre++;
} ?>    
Le gros soucis c'est que ma boucle fonctionne correctement sauf pour la derniere ligne ou je n'ai pas du tout la balise <td height="12" bgcolor="#114F89"><span class="Style6">Ann&eacute;e</span></td>

C'est vraiment bizarre et voila ce que ca me donne a l'affichage

Année 2004
< 25 ans 1
< 25 ans 42005

logiquement je devrais avoir
Année 2004
< 25 ans 1
Année 2005
< 25 ans 4

Merci pour votre aide parceque la je nage