Page 1 sur 1

Pb de boucle

Posté : 27 août 2007, 14:31
par laeti
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'];

Posté : 27 août 2007, 14:58
par sadeq
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 ...

Posté : 27 août 2007, 15:03
par laeti
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.

Posté : 27 août 2007, 15:05
par sadeq
Je croix que t'as pas compris, je te parle de la valeur de $str_id elle provient d'où?

Posté : 27 août 2007, 15:18
par laeti
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.

Posté : 27 août 2007, 15:21
par Ryle
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.

Posté : 27 août 2007, 15:24
par laeti
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.

Posté : 27 août 2007, 15:28
par Ryle
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 :)

Posté : 27 août 2007, 16:27
par laeti
OK merci, j'ai réussi.