Page 1 sur 1

requete qui recupère qu'un seul champ

Posté : 18 oct. 2011, 17:48
par xzena
bonjour,
j'ai fait une requête pour récupérer certains champs a partir d’un élément sélectionné dans un champ select:

Code : Tout sélectionner

$req="select * from table where table1.id in (select id from table2 where nom='$nom' and prenom='$prenom')"; $res=mysql_query($req); echo $nom; ?>
et pour récupérer dans des input je fais ça :
<td width="251"><?php while ($row= mysql_fetch_assoc($res)) { 
   ?>
   <input type="text" name="chmap1" id ="chmap1" value="<?php echo $row['chmap1']; ?>" />
  <?php  } ?></td> 
<td width="251"><?php while ($row= mysql_fetch_assoc($res)) { 
   ?>
   <input type="text" name="chmap2" id ="chmap2" value="<?php echo $row['chmap2']; ?>" />
  <?php  } ?></td> 
mon souci c'est qu' il me récupère qu'un seul champ toujours, les autres non !
Alors merci pour votre aide

Re: requete qui recupère qu'un seul champ

Posté : 18 oct. 2011, 17:57
par soycd
Sers-toi de mysql_data_seek() après chaque mysql_fetch_assoc()

http://php.net/mysql_data_seek

Re: requete qui recupère qu'un seul champ

Posté : 18 oct. 2011, 18:17
par xzena
désolé j'ai consulter le lien..mais j'ai pas compris où je vais mettre là :oops:

Re: requete qui recupère qu'un seul champ

Posté : 18 oct. 2011, 18:37
par soycd
Cette fonction sert à repositionner le pointeur, dans ton cas, sur le 1er élément, 0 donc.

Chaque fois que tu lis le résulat d'un query avec fetch_assoc, le pointeur reste en fin de parcours, donc tu dois utiliser data_seek chaque fois que tu as besoin de parcourir une nouvelle fois un même résultat d'un query.

En gros :
$query = mysql_query($sql);

while( $line = mysql_fetch_assoc($query) )
{
        // BLABLA
}

// Besoin de parcourir une nouvelle fois le résultat à partir du départ ?
mysql_data_seek($query, 0);

// Et voilà je peux refaire un fetch_assoc ^^

while( $line = mysql_fetch_assoc($query) )
{
        // BLABLA²
}

Re: requete qui recupère qu'un seul champ

Posté : 18 oct. 2011, 19:31
par xzena
merci à vous mais ça pas marché dans mon cas :

Warning: mysql_data_seek() expects parameter 1 to be resource, string given in C:\wamp\www\application\fishier\test2.php on line 67

<td width="251"><?php while ($row= mysql_fetch_assoc($res)) {
mysql_data_seek($req, 0); // ligne 67

?>
<input type="text" name="champ1" id ="champ1" value="<?php echo $row['champ1'];
?>" />
<?php } ?></td>

??!

Re: requete qui recupère qu'un seul champ

Posté : 18 oct. 2011, 20:03
par Zahnzao
Tu ne dois pas le mettre dans ta boucle while mais après, juste avant ta deuxième boucle du champ2.

Re: requete qui recupère qu'un seul champ

Posté : 18 oct. 2011, 23:13
par maze
Pourquoi mysql_data_seek() ?
De ce que je vois, le problème c'est que tu fais 2 fois ta boucle while donc forcement à la 2e ben... Ça repart au début. T'as plusieurs enregistrements à sortir pour chaque chmap c'est ça ? Si j'ai bien compris (j'avoue que j'ai un doute) je ferais une boucle qui te met tout ça dans un tableau genre
while ($row= mysql_fetch_assoc($res)) {
chmap1[] = $row['chmap1'];
chmap2[] = $row['chmap2'];
 }
Et pour afficher une boucle for type
for($i=0;$i<count($chmap1);$i++) {
echo "tes balises input...";
}

Re: requete qui recupère qu'un seul champ

Posté : 04 nov. 2011, 14:14
par xzena
c'est bon,ç'est reglé le problème.merci à vous.