Forum Clubic

Récupération d'une variable pour une deuxième requête !

bonjour je cherche depuis plusieurs jours sans trouver ma solution. Je cherche à récupérer la valeur d’une sélection (avec un $_POST) pour effectuer un filtre de sélection dans une deuxième requête afin de n’afficher dans un champs déroulant que ce qui m’intéresse ! bon je ne suis pas clair alors voila mon code !

<?php mysql_select_db($database_unites_annuaires, $unites_annuaires); $query_unites = "SELECT * FROM unite ORDER BY Unite ASC"; $unites = mysql_query($query_unites) or die(mysql_error()); $query_annuaire="SELECT * FROM annuaire ORDER BY NomPren ASC"; $annuaire = mysql_query($query_annuaire) or die(mysql_error()); $row_unites = mysql_fetch_assoc($unites); $row_annuaire = mysql_fetch_assoc($annuaire); $totalRows_unites = mysql_num_rows($unites); ?>
	<table width="100%"  border="0" cellpadding="10" cellspacing="0" bgcolor="#A9A9A9">
	<tr>
            <th scope="row"><div align="left">Code Unité <span class="Style1">*</span> </div></th>

             <td><SELECT NAME="unites" size="1" maxlength="50" type="text" >
             <option value=""></option>
<?php do { ?>
              <option value="<?php echo $row_unites['Unite']?>"><?php echo $row_unites['Unite']?></option>
<?php } while ($row_unites = mysql_fetch_assoc($unites)); $rows = mysql_num_rows($unites); if($rows > 0) { mysql_data_seek($unites, 0); $row_unites = mysql_fetch_assoc($unites); } ?>
</SELECT></td>
<?php if (isset($_POST['unites'])) # Teste l'existance de la variable unites { $action=$_POST['unites'] ; # Récupere la valeur de unites $query_annuaire ="SELECT * FROM annuaire WHERE Unite='$action'"; $annuaire = mysql_query($query_annuaire) or die(mysql_error()); $row_annuaire = mysql_fetch_assoc($annuaire); } ?>
<td><SELECT NAME="nom" size="1" maxlength="50" type="text">
  <option value=""></option>
<?php do { ?>
  <option value="<?php echo $row_annuaire['NomPren']?>"><?php echo $row_annuaire['NomPren']?></option>
<?php } while ($row_annuaire = mysql_fetch_assoc($annuaire)); $rows = mysql_num_rows($annuaire); if($rows > 0) { mysql_data_seek($annuaire, 0); $row_annuaire = mysql_fetch_assoc($annuaire); } ?>
</SELECT></td>

dans le champ nom je n’arrive pas à afficher le résultat de ma deuxième requête et là je sèche :frowning:

merci de votre aide

Oula. Erreur:

<?php
do {
?>
<option value="<?php echo $row_annuaire['NomPren']?>"><?php echo $row_annuaire['NomPren']?></option>
<?php
}
while ($row_annuaire = mysql_fetch_assoc($annuaire));

==>

while ($row_annuaire = mysql_fetch_assoc($annuaire)) {
?>
<option value="<?php echo $row_annuaire['NomPren']?>"><?php echo $row_annuaire['NomPren']?></option>
<?php
}

De manière générale, do while ne sert quasiment jamais.

si j’ai bien compris je remplace la partie avec le while uniquement? !!
j’ai essayé mais j’ai toujours le même problème, je n’arrive pas à sélectionner la partie qui doit être filtrée. en fait il m’affiche tout comme si ma deuxième requête sql n’existait pas ! :frowning:

En fait, dans le cas du do while, tu suppose que $row_annuaire[‘NomPren’] existe. Sauf que dans le premier passage, ça n’existe pas.

J’ai pas dis que c’était ça le problème qui t’empêche de faire ce que tu veux, juste que si tu laisses ton code comme ça, il y a de forte chance que ça ne fasse pas ce que tu veux tout court. Maintenant, faut que tu le fasse partout.

De manière générale, pour récupérer des données en base :

$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result)) {
  ...
}

d’accord je vois bien ce que tu veux dire, mais là je suis un peu perdu dans le code! en essayant de suivre ton conseil, j’ai l’impression d’avoir perdu le fil du déroulement du programme. Bon certes ça ne fait que 6 mois que je suis au php ! je dois forcément m’y prendre mal le résultat reste le même. Effectivement ça ne fait pas ce que je veux, et je ne vois plus trop comment faire concrètement

En gros?

Pour chaque do … while avec mysql_fetch_assoc, il faut que tu remplace le “do” par le while (…), et que tu vires le “;”.

merci pour ton aide je vais faire ça et je vais voir ce que ça donne !