question sur liste deroulante dependantes ???

Eléphant du PHP | 55 Messages

17 juin 2005, 10:03

ok

donc au nivo du value je doit mettre le nom d une de mes collone en en fait.

j ai ma prems bon il y a qu un seul enregistrement pour le moment mais c est pas grave

---------------------------------------+
table : service |
---------------------------------------+
section | service |
inf60 | Informatique |
---------------- |---------------------+

Dans ma liste c est le service qui apparait
mais en values je dois mettre la section.
ce qui va donner :

Code : Tout sélectionner

<?php require("connect.php"); //on inclu le fichier connect.php include("connect.php"); ?> <form method="post" action="bidule.php3"> <table border=2> <tr><th align=middle>Sélectionner une option : </th></tr> <tr><td align=center><select name="variable_choisi">Choissiez votre option: <option selected value="[color=red]celui la je sias pas si faut y toucher ^^[/color]"> ---------- Séléction ----------</option> <?php $db = mysql_select_db("ges_imprimante"); $sql="SELECT service FROM service"; $optio=mysql_query($sql,$db) or die(mysql_error()); while($row = mysql_fetch_row($optio)) { print "\t\t<option [color=red]value='".$row['section']."'[/color]>".($row[0])."\n"; } echo "$optio"; ?> </select> </td></tr> <tr><td align=center><input type="submit" value="Pour choisir."></td></tr> </table> </form>
ha peut etre pas en fait , ro la la suis un boulet je comprend rien :(

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juin 2005, 10:09

ben c'est simple :)

<select name="variableQueTuVasrécupérer">
<option value="valeurQuIlyAuraDansCetteVariable">ValeurQuiApparaitSimplementPourLeVisiteur</option>

donc pose toi la question : qu'est-ce que tu manipules dans cette liste ? qu'est-ce qu'on choisi et qu'est-ce que tu veux récupérer ?

Mammouth du PHP | 19672 Messages

17 juin 2005, 10:13

Si tu regardes le script que j'ai mentionné plus haut, j'ai une liste déroulante de régions par exemple: ce que j'affiche, c'est le nom de la région, c'est la partie qui intéresse l'internaute: mais la valeur que je manipule, c'est son identifiant que je mets dans l'attribut value et que je récupère pour mes traitements.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juin 2005, 10:17

sinon pour ça :
<option selected value="[color=red]celui la je sias pas si faut y toucher ^^[/color]"> ---------- Séléction ----------</option>
tu as récupéré ça dans l'exemple que tu as trouvé ?

a priori tu peux le dégager ça ne te sert à rien, je pense que c'est juste une sorte de titre à la liste déroulante

tu constates juste qu'il y "selected" dans la balise option, cela veut dire que c'est sur cette valeur que sera positionnée la liste déroulante au chargement de la page, la valeur par défaut

Eléphant du PHP | 55 Messages

17 juin 2005, 10:27

ok merci je crois que j ai compris.

J ai une derniere question parceque je crois que j ai fait plus loin un truc qui me servira a rein avec les liste mise a jour automatiquement.

dans une de mes liste deroulante je recuperais le nom de l imprimante et apres a partir du nom je faisais un select dans la table imprimante pour recupere le numero d imprimante, car c est lui qui me permet d incremente mon autre base.

Or la il le suffira de lui dire <option value='".$row['num_imprimante']."'>".($row[0])."\n";

non ?

Eléphant du PHP | 55 Messages

17 juin 2005, 10:28

@ouckileou: oui j ai recupere ca dans l exemple

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juin 2005, 10:37

ok merci je crois que j ai compris.

J ai une derniere question parceque je crois que j ai fait plus loin un truc qui me servira a rein avec les liste mise a jour automatiquement.

dans une de mes liste deroulante je recuperais le nom de l imprimante et apres a partir du nom je faisais un select dans la table imprimante pour recupere le numero d imprimante, car c est lui qui me permet d incremente mon autre base.

Or la il le suffira de lui dire <option value='".$row['num_imprimante']."'>".($row[0])."\n";

non ?
c'est exactement ça
tu montres dans ta liste le nom d'imprimante qui est utilisable par les visiteurs, et toi tu récupère le numéro associé à ce nom

Eléphant du PHP | 55 Messages

17 juin 2005, 11:30

Je ne comprend pas ma liste reste vierge

mon code donne :
<?php
require("connect.php");
//on inclu le fichier connect.php
include("connect.php");
?>

<form method="post" action="bidule.php3"> 
         <table border=2> 
         <tr><th align=middle>Sélectionner une option : </th></tr> 
         <tr><td align=center><select name="variable_choisi">Choissiez votre option: 
        
         <?php 

         $db = mysql_select_db("ges_imprimante"); 
         $sql="SELECT service FROM service"; 
         $optio=mysql_query($sql,$db) or die(mysql_error()); 

         while($row = mysql_fetch_row($optio)) { 
         print "\t\t<option value=".$row['section'].">".($row[0])."\n"; 
         } 


          ?> 
         </select> 
         </td></tr> 
         <tr><td align=center><input type="submit" 
         value="Pour choisir."></td></tr> 
         </table> 
</form>  
peut etre que c est le value qui pose probleme parceque je sais pas comment declarer le champs de la table .
".$row['section']." --> ca , sa ne peut pas marcher puis dans le $row je ne select que le service de la table service donc il ne connais pas le la section.

nan :-k . . . . . . ](*,)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juin 2005, 11:38

tu as trouvé

tu ne sélectionnes qu'un seul champ dans ta requête donc commence déjà par sélectionner les deux...

et ensuite avec mysql_fetch_row tu va récupérer un tableau indexé numériquement donc $row['section'] ne fonctionnera pas

il faudra soit faire $row['1'] ou utiliser mysql_fetch_array pour utiliser le libellé du champ

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juin 2005, 11:41

enfin avec ce problème tu devrais quand même avoir des valeurs, seul l'attribut "value" serait vide

là tu oublies encore de fermer la balise <option>

fais comme ceci :
 print "\t\t<option value=".$row['section'].">".($row[0])."</option>\n"; 

Mammouth du PHP | 19672 Messages

17 juin 2005, 11:41

Et les concaténation de chaîne ??? Et si tu codais de façon à pouvoir te relire facilement...
<?php
require("connect.php");
//on inclu le fichier connect.php
include("connect.php");
?>
<form method="post" action="bidule.php3">
  <table border=2>
    <tr>
      <th align=middle>Sélectionner une option : </th>
    </tr>
    <tr>
      <td align=center>
	    Choissiez votre option : <select name="variable_choisi">
<?php
         $db = mysql_select_db("ges_imprimante");
         $sql="SELECT service FROM service";
         $optio=mysql_query($sql,$db) or die(mysql_error());

         while($row = mysql_fetch_row($optio))
         {
?>
          <option value="<?php echo($row['section']); ?>"><?php echo($row['section']); ?></option>
<?php
         }
          ?>
        </select>
      </td>
    </tr>
    <tr>
      <td align=center><input type="submit" value="Pour choisir."></td>
    </tr>
  </table>
</form>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juin 2005, 11:58

et aussi pourquoi include ET require sur le même fichier (connect.php) au début du script

(ok c'est du détail)

Eléphant du PHP | 55 Messages

17 juin 2005, 13:53

pourquoi include et require ???
ba en fait c est que j ai repris du code a des gens et bon si c est comme ca que je test et que ca marche comme ca, ba ca reste comme ca (puisque je sais pas a quoi servent les 3/4 des trucs que j utilise :D )

bon alors j ai modifier mon code en essayant te tenir compte au maximun de vos deux remarque et ca donne ca :
<?php 
require("connect.php"); 
//on inclu le fichier connect.php ---> faut que j en enleve 1 mais lequel :) 
include("connect.php"); 
?> 
<form method="post" action="bidule.php3"> 
  <table border=2> 
    <tr> 
      <th align=middle>Sélectionner une option : </th> 
    </tr> 
    <tr> 
      <td align=center> 
        Choissiez votre option : <select name="variable_choisi"> 
<?php 
         $db = mysql_select_db("ges_imprimante"); 
         $sql="SELECT section,service FROM service"; 
         $optio=mysql_query($sql,$db) or die(mysql_error()); 

         while($row = mysql_fetch_array($optio)) 
         { 
?> 
           print "\t\t<option value=".$row['section'].">".($row['service'])."</option>\n"; 

<?php 
         } 
          ?> 
        </select> 
      </td> 
    </tr> 
    <tr> 
      <td align=center><input type="submit" value="Pour choisir."></td> 
    </tr> 
  </table> 
</form> 
donc maintenant quand je lance ma page il y a qq chose dans ma liste mais il ecrit ($row['service']) et c ets bizarre ca me dit rien comme nom de service dans la societe apres verification et ben je n ai belle et bien pas rentre ce service dans ma table :)

donc doit encore y avoir un petit bleme :) la declaration qui ne serait pas bonne nan ?

sinon cyrano tu es sur qu il faille ferme et rouvrir le php comme ca ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juin 2005, 14:04

si tu ne comprends pas la moitié des choses que tu fais c'est dommage

il y a un manuel, il faut s'en servir
c'est déjà un grand pas vers la compréhension du code

vu dedans
require() et include() sont identiques, sauf dans leur façon de gérer les erreurs.
donc là tu fais deux fois la même chose

=> http://fr.php.net/function.include
=> http://fr.php.net/require

pour ton problème, c'est normal, tu veux écrire une variable mais tu n'es plus entre balises PHP, donc elle n'est pas interpétée

regarde bien le code de Cyrano, il y a des petits détails qui t'ont échappés ;)

sur cette ligne là
 print "\t\t<option value=".$row['section'].">".($row['service'])."</option>\n";

Eléphant du PHP | 55 Messages

17 juin 2005, 14:19

ok
j ai remis son truc mais il me faut le quand meme le print ou pas #-o

pour le moment j ai ca :
while($row = mysql_fetch_array($optio)) 
         { 
?> 
           <option value="<?php echo($row['section']); ?>"><?php echo($row['service']); ?></option>  

<?php 
         } 
?>
mais ne faut t il pas plutot ca :
while($row = mysql_fetch_array($optio)) 
         { 
?> 
           print "\t\t<option value="<?php echo($row['section']); ?>"><?php echo($row['service']); ?></option>\n";  

<?php 
         }
?> 
enfin je dis ca comme ca pk je viens de l essaye aussi et ca ne marche pas plus (dis donc moi qui veux faire des liste dependante je suis pas rendu )