question sur liste deroulante dependantes ???

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juin 2005, 14:24

je vois que y'a un truc qui passe mal :)

tu ne peux utiliser des fonctions PHP qu'entre balises PHP, celles-ci :
<?php et ?>

donc dans ce bout de code :
while($row = mysql_fetch_array($optio))
         {
?>
           <option value="<?php echo($row['section']); ?>"><?php echo($row['service']); ?></option>  

<?php
         }
?>
ce qui est en dehors des balises, comme par exemple
"<option value=""
c'est du HTML

et tu réouvres ensuite les balises PHP pour afficher le contenu de la variable dans l'attribut "value"

tu pourrais tout écrire en PHP, mais moins y'en a à écrire, plus ça va vite

donc que penses-tu de ta deuxième solution maintenant ? est-ce que ton print va faire quelque chose à ton avis ? :)

sais-tu ce que fais la fonction echo sinon ? http://fr2.php.net/echo

Eléphant du PHP | 55 Messages

17 juin 2005, 14:38

ok je vois,

il va rien faire car il pris comme du html alors que c'est une fonction php :)

donc la solution c ets d enlever labalise de fermeture de php et ainsi laisse ouvrir le code du debut a la fin.

comme ceci :
<?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 section,service FROM service"; 
         $optio=mysql_query($sql,$db) or die(mysql_error()); 

         while($row = mysql_fetch_array($optio)) 
         { 
 
           <option value="echo($row['section']);"> echo($row['service']) </option>  


         }   
?> 
        </select> 
      </td> 
    </tr> 
    <tr> 
      <td align=center><input type="submit" value="Pour choisir."></td> 
    </tr> 
  </table> 
</form>  
1 - oui =D>
2 - non [-X
3 - tu sais que t'es vraiment boulet toi ? #-o

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juin 2005, 14:42

:lol: :lol:

1 et 2, mais pas 3 ;)

c'est ce que je t'ai dit :
- soit tu écris toute ta chaine "<option>....</option>" en PHP => ce que tu viens de poster
- soit tu fais écrire seulement ce qui change (ce que tu mets dans value et le libellé qui va avec), le reste étant du HTML simple => ce que t'avais proposé Cyrano

donc là c'est un choix à faire, fais ce qui te convient le mieux
mais généralement on essaye d'en faire écrire le moins possible au PHP

les boulets ici ce sont ceux qui veulent pas comprendre, pas ceux qui comprennent pas ;)

sinon
il va rien faire car il pris comme du html alors que c'est une fonction php
c'est ça, tu auras simplement écris dans ta page "print"

Eléphant du PHP | 55 Messages

17 juin 2005, 15:41

Donc si ca c est bon ca devrait marcher et pourtant nan.

La connection a ma base je suis sur quelle fonctionne car j'utilise la meme pour toutes les autres pages et ca fonctionne.
Ma requete fonctionne je l ai essaye sous phmyadmin.
apres le formulaire fonctionne puisqu il s affiche :).

Donc ba il reste le php :cry: .

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juin 2005, 15:52

normal tu n'as pas modifié ton code en conséquence après avoir tout mis dans le PHP

essaye ceci
echo "<option value=\"".$row['section']."\">".$row['service']."</option>";

Eléphant du PHP | 55 Messages

17 juin 2005, 17:09

Meme avec ca ca marche toujours un mec viens passer un code qu il a utiliser pour la meme chose et c'est quasiment les meme.

bon il a un mysql_close() a la fin que j ai pas mais c est pas qui empecherai le truc de marcher.

:cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry:

Mammouth du PHP | 19672 Messages

17 juin 2005, 19:24

Liste déroulantes liées ==> Nouveau
Voyez si quelque chose vous aide à résoudre le problème.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 55 Messages

21 juin 2005, 09:04

La je ne comprend vraiment quand j essais ce code la :
<?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="service"> 
<?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_array($optio)) 
         { 
         
           print "<option value='".$row['service']."'>".$row['service']."</option>"; 

         }    
?> 
        </select> 
      </td> 
    </tr> 
    <tr> 
      <td align=center><input type="submit" value="Pour choisir."></td> 
    </tr> 
  </table> 
</form>  
ca ne marche.

puis un ami ma donné son code que je reutilise et ca marche pas non plus (alors que chez lui je le vois tres bien fonctionner) en plus les deux codes sont tres proche.

<form action="imprimante2.php"  name="form1" target="_self" Method="POST">
<table width="526" border="0">
  <tr>
    <td>
    Bureau :
    <select name="bureau">
   <?php
	$base = "ges_imprimante";
	if ($base != -1 ){
	$link = connect_db($base);
	$requete_util = "select service from service";
	$result_ulil = mysql_query($requete_util) or die("requete base erreur");
	while ($data = mysql_fetch_array($result_util))
	{
		print "<option value='".$data['service']."'>".$data['service'];
        }
   }
   else
   {
       ?>
<div class="erreur">
aucune base n'est activ&eacute;e.
</div>
<br>
<br>
<?php
  }
mysql_close();
?>
</select>
d autre part on utilise tout les deux easyphp 1.8 ddonc c est pas un probleme de code non compatible :(

Mammouth du PHP | 19672 Messages

21 juin 2005, 09:09

"Ça ne marche pas" est un comentaire un peu insuffisant : comment veux-tu qu'on sache quoi te répondre si on ne sait pas au juste ce qui ne fonctionne pas ? Qu'est-ce qui se passe qui ne devrait pas ou encore qu'est-ce qui devrait se passer qui n'arrive pas...?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 55 Messages

21 juin 2005, 09:29

Il devrait s afficher dans le menu deroulant les services rentre dans ma base de données, et la quand j execute j ai un menu deroulant vide.
pourtant j ai teste ma requete elle marche c est sur.

voila desole pour le manque de precision

Mammouth du PHP | 19672 Messages

21 juin 2005, 09:47

Insère un mysql_num_rows entre la requête et l'affichage de la liste pour voir combien de lignes retourne la requête: si tu as 0, il y a un problème ailleurs
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 55 Messages

21 juin 2005, 10:25

<?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="service"> 
<?php 
         $db = mysql_select_db("ges_imprimante"); 
         $sql="SELECT service FROM service"; 
         $optio=mysql_query($sql,$db) or die(mysql_error()); 
         $a = mysql_num_rows($optio);
         echo "$a";
         while($row = mysql_fetch_array($optio)) 
         { 
          
           print "<option value='".$row['service']."'>".$row['service']."</option>"; 

         }     
?> 
        </select> 
      </td> 
    </tr> 
    <tr> 
      <td align=center><input type="submit" value="Pour choisir."></td> 
    </tr> 
  </table> 
</form>
je suppose que la fonction mysql_num_rows ne doit pas s uyilser comme ca , nan ?

Eléphant du PHP | 55 Messages

21 juin 2005, 11:05

Bon ok c est bon j arrive a incrementer mes liste par rapport a ma base maintenant.
Bon je viens de lire 2* le lien que tu ma donné pour les listes deroulante lié et je vais la relire encore pk je comprend pas grand chose :)

(ps la methode javascript j ai deja abandonne ^^)

Eléphant du PHP | 55 Messages

21 juin 2005, 15:13

@ouckileou

maintenant j ai reussit a incrementer mes listes automatiquement par rapport a ma base (se fu dur :))

tu m'avais dit qu'apres il y aurais une méthode simple pour faire des listes déroulantes liées de manière simple avec du php qui rafraichi la page en gardant la selection et en mettant a jour l autre liste.

Donc je voulais savoir si tu pouvais m'en dire plus, car j'ai regarde les méthodes données par cyrano qui marche a la perfection dans les exemples mais j y comprend vraiment rien,c'est trop complexe pour moi :(.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

21 juin 2005, 15:25

ce n'est pas du PHP mais du Javascript, car cela gère les actions coté client
la méthode simple, c'est d'appeler le rechargement de la page à chaque changement

tu peux faire un formulaire par liste par exemple

Code : Tout sélectionner

<form name="formulaire1" action="taPage.php" method="POST" onChange="document.getElementById('formulaire1').submit();"> <select> <option>...</option> etc etc </select> </form>
c'est le "onChange" qui va soumettre le formulaire à chaque fois que l'utilisateur change la valeur sélectionnée dans la liste
tu peux donc récupérer la valeur de la variable envoyée et construire la deuxième liste en fonction

Attention : si tu ne fonctionnes qu'avec ça, quelqu'un qui a désactivé Javascript ne pourra plus naviguer !

voilà ;)