problème 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 : problème de boucle

par VaN » 19 juil. 2005, 10:54

pourtant j'ai l'impression que ça marche tres bien

par guilt92 » 18 juil. 2005, 16:33

oui il faut mettre $i=0 dans la premiere boucle.
Désolé

par raptor » 18 juil. 2005, 16:33

Autant pour moi j'avais mal lu ton code.
J'ai dis une annerie ;)

Mais ton code ne rendra pas ce qu'il demande.

@+ et désolé

par raptor » 18 juil. 2005, 16:32

dans le cas d'une boucle dans une boucle, il va entammer la premiere, entammer et finir la deuxieme, avant de poursuivre, et eventuellement recommencer la premiere.

Donc dans ton code, il va traiter le premier enregistrement.
$i valant 0, il va taiter la deuxieme boucle 3 fois, donc 3 lignes vides.

puis il va continuer la premiere boucle, et i valant alors 3 ne va pas traiter la deuxieme boucle. Il va donc en dessous des 3 lignes vides afficher les lignes de la requete restantes.

@+

par guilt92 » 18 juil. 2005, 16:27

ca dépend du nombre de champs qu'il y a dans media_pics.
J'avais cru comprendre qu'il y avait 3 champs par ligne.

par raptor » 18 juil. 2005, 16:25

<?php
$i=0;
while ($result_media = mysql_fetch_array($query_media))
{

while ($i<3)
{
echo $result_media[$i];
$i++
?>
Ceci ne peux pas fonctionner :
Il va afficher le premier enregistrement, et 3 lignes vides, puis les autres enregistrements.

par guilt92 » 18 juil. 2005, 16:10

<?php
		  		$i=0;
				while ($result_media = mysql_fetch_array($query_media)) 
				{
				
					while ($i<3) 
					{
					echo $result_media[$i];
$i++
		  		?>
Cela devrait fonctionner mais depuis tu as eu la réponse grace a raptor, non ?

par VaN » 18 juil. 2005, 16:08

<?php

$i=1;

while ($result_media = mysql_fetch_array($query_media))
{
    ?>
    <tr>
        <td width="46">#<?php echo $result_media['le bon champs'];} ?> :</td>
        <td><input type="file" name="pic<?php echo $result_media['le bon champs'];} ?>" value="<?php echo $result_media['le bon champs?'];} ?>" /></td>
    </tr>
    <tr>
        <td width="46">alt #<?php echo $i ?> :</td>
        <td><input type="text" name="alt<?php echo $result_media['alt']; ?>" <?php echo $result_media['alt'];} ?> /></td>
    </tr>
    <?php
    $i++;
}
   while($i <5) {
    ?>
    <tr>
        <td width="46">#<?php echo $i ?> :</td>
        <td><input type="file" name="pic<?php echo $i;} ?>" value="<?php echo $i;} ?>" /></td>
    </tr>
    <tr>
        <td width="46">alt #<?php echo $i ?> :</td>
        <td><input type="text" name="alt<?php echo $i; ?>" <?php echo $i;} ?> /></td>
    </tr>
<?php
$i++;
}
?>
comme ca plutot ;)

++
après quelques petites modifs, ça marche impec, merci bcp : )

par VaN » 18 juil. 2005, 16:02

C'est normal puisque tu boucles sur la même entrée. Peux tu poster ta requete pliz et préciser ce qu il y a dans alt1 alt2 alt3 ?
<?php
$sql_media = "SELECT * FROM media_pics WHERE id_media_article='$id_media_article'";
?>
alt1 alt2 et alt3 sont des données, contenues dans le champ 'alt' de la table media_pics.

par raptor » 18 juil. 2005, 15:57

<?php

$i=1;

while ($result_media = mysql_fetch_array($query_media))
{
    ?>
    <tr>
        <td width="46">#<?php echo $result_media['le bon champs'];} ?> :</td>
        <td><input type="file" name="pic<?php echo $result_media['le bon champs'];} ?>" value="<?php echo $result_media['le bon champs?'];} ?>" /></td>
    </tr>
    <tr>
        <td width="46">alt #<?php echo $i ?> :</td>
        <td><input type="text" name="alt<?php echo $result_media['alt']; ?>" <?php echo $result_media['alt'];} ?> /></td>
    </tr>
    <?php
    $i++;
}
   while($i <5) {
    ?>
    <tr>
        <td width="46">#<?php echo $i ?> :</td>
        <td><input type="file" name="pic<?php echo $i;} ?>" value="<?php echo $i;} ?>" /></td>
    </tr>
    <tr>
        <td width="46">alt #<?php echo $i ?> :</td>
        <td><input type="text" name="alt<?php echo $i; ?>" <?php echo $i;} ?> /></td>
    </tr>
<?php
$i++;
}
?>
comme ca plutot ;)

++

par guilt92 » 18 juil. 2005, 15:56

me renvoie :
alt1
alt1
alt1
C'est normal puisque tu boucles sur la même entrée. Peux tu poster ta requete pliz et préciser ce qu il y a dans alt1 alt2 alt3 ?

par VaN » 18 juil. 2005, 15:37

ok, bon ça ça marche bien.

Deuxieme probleme qui survient mtnt :

les données dans ma base sont les suivantes :

3 entrées :
alt1, alt2 et alt3
<?php
		  		$i=1;
				while ($result_media = mysql_fetch_array($query_media)) 
				{
				echo $result_media['alt'];
					while ($i<=4) 
					{
					
		  		?>
me renvoie alt1 alt2 alt3 impeccablement, mais
<?php
		  		$i=1;
				while ($result_media = mysql_fetch_array($query_media)) 
				{
				
					while ($i<=4) 
					{
					echo $result_media['alt'];
		  		?>
me renvoie :
alt1
alt1
alt1
alt1

Ce qui fait que au final, mes input texte ne se remplissent pas comme je le souhaite.

EDIT : ouh la, bcp de reply pendant que je postais. J'ai appliqué la methode donnée tout au début

par Rei Itchido » 18 juil. 2005, 15:35

Arf, j'avais pas vu...
Enfin le principe reste le même.
Si il faut que Van ne retienne qu'une seule chose de tout ça, c'est de poser son algo sur papier avec des mots simples et le reste devrait suivre. (dans des cas simples comme celui-ci en tout cas :) )

par guilt92 » 18 juil. 2005, 15:33

dans tous les cas, le nombre maximum d'entrées dans la bdd est de 4.
Je pense donc que c'est pas la peine de blinder comme cela.

par Rei Itchido » 18 juil. 2005, 15:32

Vi, j'editais quand tu postais :)