Pb de boucle

Eléphant du PHP | 91 Messages

27 août 2007, 14:31

Bonjour,

Je cherche à faire une boucle pour récupérer plusieurs données saisies dans un formulaire mais je n'y arrive pas: à chaque fois, je ne récupère que ma 1ère valeur saisie.
Titres des données souhaitées :<BR>
	<?php
	for ($i=1; isset($_SESSION['str_id'][$i]); $i++) {
		$sql = "SELECT bdi_id FROM str_bdi WHERE str_id=".$str_id."";
		$req = pg_query($sql) or die('Erreur SQL !'.$sql.'<br>'.pg_resul_error());
		$resul_bdi_id = pg_fetch_assoc($req);
		$sql1 = "SELECT bdi_titre FROM besoin_donnee_identifiee WHERE bdi_id=".$resul_bdi_id['bdi_id']."";
		$req1 = pg_query($sql1) or die('Erreur SQL !'.$sql1.'<br>'.pg_resul_error());
		$resul_bdi_titre = pg_fetch_assoc($req1);
	}
	?>
	<textarea style="width:660px" id="Bdi_titre" name="Bdi_titre" rows="4"><?php if($Bdi_titre!="" or $Bdi_titre!=null) echo $resul_bdi_titre['bdi_titre'];?></textarea>
Est-ce que quelqu'un peut m'éclairer? Je dois certainement mal m'y prendre!!!


En fait, il semblerait que mon pb vienne de ma première requête car je ne récupère qu'un seul résultat au lieu de 2.
$sql = "SELECT bdi_id FROM str_bdi WHERE str_id=".$str_id."";
		$req = pg_query($sql) or die('Erreur SQL !'.$sql.'<br>'.pg_resul_error());
		$resul_bdi_id = pg_fetch_assoc($req);
		echo $resul_bdi_id['bdi_id'];
Modifié en dernier par laeti le 27 août 2007, 14:58, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

27 août 2007, 14:58

il y a des erreurs logiques dans ton code que tu dois d'abord corriger:
  • 1. il faut déclarer la variable $str_id dont dépond la requête sql car on se pose la question sur sa valeur!

    2. il faut intégrer le textarea dans la boucle for avant le dernier } tout en déclarant la variable $Bdi_titre que tu utilise dans le test if
On en reparlera de la suite après ...
Modifié en dernier par sadeq le 27 août 2007, 15:04, modifié 1 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 91 Messages

27 août 2007, 15:03

Mes variables sont bien déclarées.

J'ai édité mon message. Je ne suis plus très sûre d'avoir besoin d'une boucle.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

27 août 2007, 15:05

Je croix que t'as pas compris, je te parle de la valeur de $str_id elle provient d'où?
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 91 Messages

27 août 2007, 15:18

C'est une variable de session. J'ai déjà fait appel à elle dans d'autres requêtes qui fonctionnent.
La requête qui me pose pb marche mais ne me renvoie qu'un seul résultat au lieu de 2 quand je fais un echo. Et le echo de $sql est correcte aussi, $str_id est bien reconnue.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 août 2007, 15:21

Ton problème vient du fait que tu ne fais absolument pas la distinction entre les résultats ramenés par chaque itération de ta boucle, en les stockant par exemple dans un tableau ou une en les concaténant dans une variable temporaire. Ainsi chaque nouveau passage dans la boucle écrase la valeur précédente de $resul_bdi_titre puisque celle-ci n'est pas utilisée, et lorque tu sors de la boucle tu n'as que la dernière.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 91 Messages

27 août 2007, 15:24

C'est ce que je me suis dit mais ce qui est bizarre, c'est que le echo du résultat de ma 1ère requête me renvoie 2 fois le même identifiant mais ce n'est pas le dernier saisi, c'est le 1er.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 août 2007, 15:28

Bah c'est parce que quelque soit le nombre de résultat trouvés par ta première requête, tu ne récupère que le premier : $resul_bdi_id = pg_fetch_assoc($req);
Pour récupérer les suivants, il te faudrait boucler ici également :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 91 Messages

27 août 2007, 16:27

OK merci, j'ai réussi.