Page 1 sur 1
probleme de boucle
Posté : 15 févr. 2006, 15:42
par logone
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é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é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
Posté : 15 févr. 2006, 17:17
par goeb
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... ?
Posté : 15 févr. 2006, 17:25
par logone
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é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é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
Posté : 17 févr. 2006, 12:10
par goeb
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 ?
Posté : 17 févr. 2006, 12:39
par logone
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é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
Posté : 17 févr. 2006, 12:46
par charabia
Montres nous la source affichée par le navigateur avec tout le tableau.
Posté : 17 févr. 2006, 12:48
par Ryle
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
vu que c'est l'année que tu compares ?
Posté : 17 févr. 2006, 12:57
par logone
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é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é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
Posté : 21 févr. 2006, 12:44
par goeb
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.
Posté : 21 févr. 2006, 12:57
par nogeva
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é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>