base MySQL dans menu déroulant

Répondre
fausto
fausto
Déconnecté
bonjour,

j'ai un petit problème de redirection
d'un menu déroulant dont les options proviennent d'une bdd MySQL

  1.  
  2.  
  3. // d'abord le javascript :
  4. <script type="text/javascript">
  5. <!--
  6. function MM_jumpMenu(targ,selObj,restore){ //v3.0
  7. eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  8. if (restore) selObj.selectedIndex=0;
  9. }
  10. //-->
  11. </script>
  12.  
  13. // puis le php
  14.  
  15. <?php  
  16. mysql_connect("serveur", "base", "pass");  
  17. mysql_select_db("base"); // Sélection de la base coursphp  
  18.  
  19. $reponse = mysql_query("SELECT director FROM films ORDER BY director ASC"); // Requête SQL  
  20. $options = "";  
  21.  
  22. while(false != ($ligne = mysql_fetch_array($reponse)))  
  23. {  
  24.  
  25. $options .= ' <option value="'. $ligne['director'] .'">'. $ligne['director'] .'</option>' . "\n";  
  26. }  
  27. ?>  
  28.  
  29.  
  30. <select name="director" id="director" onchange="MM_director('parent',this,0)">
  31. <?php  
  32. echo '<option>- r&eacute;alisateurs -</option>';  
  33. echo $options;  
  34. ?> 
  35. </select>
  36.  
  37.  
  38. <?php  
  39.  
  40. mysql_close()  
  41. ?>
  42.  


en clair, je voudrais qu'en fonction du
réalisateur choisi, s'affiche seulement les lignes comportant son nom

voilà, si quelqu'un a une idée

merci d'avance

f
Keika
Keika
Déconnecté
Le PHP --> C'est dur !
Salut fausto,

de ce que je vois tu veux afficher tous les directos qui se trouvent dans ta BDD. Mais pour cela dans ton while il faut stocker toutes les infos dans un tableau. Puis afficher les infos du tableau en consequence, avec un foreach par exemple.

  1. <?php
  2.  
  3. while(false != ($ligne = mysql_fetch_array($reponse)))  
  4. {  
  5.  
  6. $options[]/*Ici est le tableau options*/ .= ' <option value="'. $ligne['director'] .'">'. $ligne['director'] .'</option>' . "\n";  
  7. }  
  8. ?>  
  9.  
  10.  
  11. <select name="director" id="director" onchange="MM_director('parent',this,0)">
  12. <?php  
  13. echo '<option>- r&eacute;alisateurs -</option>';  
  14. //Et ici on exploite le tableau avec un foreach  
  15. foreach($options as $directors){  
  16.  
  17. echo $directors ;  
  18.  
  19. }//Fin foreach  
  20. ?> 
  21. </select>
  22.  
  23.  
  24. ?> 


Voila, je pense que ca devrait rouler comme ca. Verifie tout de meme le foreach si ca ne fonctionne pas. Et parfois sur certains serveurs tu dois declarer ta variable comme etant un tableau, un simple:

  1. <?php
  2.  
  3. $options = array() ;  
  4.  
  5. ?> 


au debut de ton code suffit.

Enjoy ^_^

K.
fausto
fausto
Déconnecté
salut Keika et merci

ça ne marche pas
en fait, la page appelée par le menu
est le nom du director
et non pas, toutes les lignes de ma table
comportant ce nom

le problème est à ce niveau, je pense
  1.  
  2. // ligne 6
  3. $options[]/*Ici est le tableau options*/ .= ' <option value="'. $ligne['director'] .'">'. $ligne['director'] .'</option>' . "\n";
  4.  


il faut que "option value" appelle seulement
les lignes de ma table comportant le nom
du réalisateur, via une requete MySQL, je
pense

si tu vois ce que je veux dire...
merci
f
Keika
Keika
Déconnecté
Le PHP --> C'est dur !
Effectivement je ne comprends pas trop.

Je pense que ce que tu veux faire est un select sur le nom du director... pour ca il faut mettre:

<option value="" selected>...</option>

C'est le selected qui met en surbrillance le bon nom du dirlo, mais pour ca faut que tu mettes un petit if bien place. et je pense qu'il te faut tout de meme tous les noms des directeurs sinon ca ne sert a rien de rechercher tous les directors dans ta base.
fausto
fausto
Déconnecté
salut,

voici ma page :
http://www.webdeco.fr/page.php?item=menu
comme tu vois, si je clique sur bresson, par exemple, j'ai comme url demandée :
http://www.webdeco.fr/bresson, robert

alors que je voudrais, comme url appelée
une requete MySQL, (je pense) correspondant au nom du director demandé

merci

@+
f
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Ben tu récupères en GET le nom du mec et tu fais ta seconde requête en fonction non ?
Keika
Keika
Déconnecté
Le PHP --> C'est dur !
Oui voila, suis LA GLOBULE,

Je n'avais pas compris ca effectivement. OU sinon tu fais un form qui envoit en POST et tu recuperes tes infos avec $_POST et tu l'utilises dans ta nouvelle requete SQL.
fausto
fausto
Déconnecté
ok
merci à vous, je vais tester çà
je vous tiens au jus
++
f
fausto
fausto
Déconnecté
salut
merci à vous c'était bien çà
pas très sorcier, mais j'ai toujours un peu de mal avec les passages de variables

j'ai une dernière question !
mon menu déroulant, issu de la colonne
"director" de ma table, reprends toutes les entrées de cette colonne (normal)
mais, si j'ai un director cité plusieurs fois,
comment faire pour qu'il n'apparaisse
qu'une fois (éviter les doublons) ?
dans mon exemple, Tarkovski :

[lien]
http://www.webdeco.fr/page.php?item=menu
[/lien]

merci encore!
bonne journée

f
fausto
fausto
Déconnecté
oups !

désolé d'avoir posté pour rien!!
j'ai trouvé
il faut rajouter "distinct" à la requête MySQL

  1.  
  2. <?  
  3. mysql_connect("host", "base", "pass");  
  4. mysql_select_db("base");  
  5. $reponse = mysql_query("SELECT distinct director FROM films ORDER BY director ASC"); // Requête SQL  
  6. $options = "";  
  7.  
  8. while(false != ($ligne = mysql_fetch_array($reponse)))  
  9. {  
  10.  
  11. $options .= ' <option value="'. $ligne['director'] .'">'. $ligne['director'] .'</option>' . "\n";  
  12. }  
  13.  
  14. ?> 
  15. <form id="form1" name="form1" method="post" action="traitement.php">
  16. <label>
  17. <select name="director" id="select">
  18.  
  19. <?php  
  20.  
  21. echo '<option>- r&eacute;alisateurs -</option>';  
  22. echo $options;  
  23.  
  24. ?>
  25.  
  26.  
  27. </select>
  28. </label>
  29. <label>
  30. <input type="submit" name="button" id="button" value="go" />
  31. </label>
  32. </form>
  33.  


et dans la page traitement.php on récupère
la variable "director"

  1.  
  2.  
  3. $sql = "SELECT * FROM films WHERE director = '".$_POST['director']."'; ";
  4.  
  5.  


merci encore à vous
@+
f
fausto
fausto
Déconnecté
hello
j'ai une toute dernière question, je voudrais pour chaque réalisateur, afficher (dans le menu déroulant) le nombre de films comportant son nom
rappel du code de ma page :
  1.  
  2. <?  
  3. mysql_connect("server", "bdd", "pass");  
  4. mysql_select_db("bdd");  
  5.  
  6. $reponse = mysql_query("SELECT distinct director FROM films ORDER BY director ASC"); // Requête SQL  
  7. $options = "";  
  8.  
  9. while(false != ($ligne = mysql_fetch_array($reponse)))  
  10. {  
  11. $options .= ' <option value="'. $ligne['director'] .'">'. $ligne['director'] .'</option> . "\n";
  12. }
  13.  
  14. ?>
  15. <form id="form1" name="form1" method="post" action="page.php?item=menu">
  16. <label>
  17. <select name="director" id="select">
  18.  
  19. <?php
  20.  
  21. echo '<option>- r&eacute;alisateurs -&nbsp;('.$total.')</option>;  
  22. echo $options;  
  23. ?>
  24.  
  25.  
  26. </select>
  27. </label>
  28. <label>
  29. <input type="submit" name="button" id="button" value="go" />
  30. </label>
  31. </form>
  32.  


ma page en ligne :
[lien]
http://www.webdeco.fr/page.php?item=menu
[/lien]

comme vous pouvez le voir, j'ai réussi à
afficher dans le menu, le nombre total
de réalisateurs(23), avec la commande :
  1.  
  2. $select = 'SELECT COUNT(DISTINCT director) FROM films';
  3.  


comment faire la même chose, mais pour chaque réal ??

si vous avez une idée, merci d'avance
@+
f
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
On ne le voit pas ton count dans ton code :/
fausto
fausto
Déconnecté
  1.  
  2. <?  
  3. mysql_connect("host", "bdd", "pass");  
  4. mysql_select_db("bdd");  
  5.  
  6. $reponse = mysql_query("SELECT distinct director FROM films ORDER BY director ASC"); // Requête SQL  
  7. $options = "";  
  8.  
  9. while(false != ($ligne = mysql_fetch_array($reponse)))  
  10. {  
  11. $options .= ' <option value="'. $ligne['director'] .'">'. $ligne['director'] .'</option>' . "\n";  
  12. }  
  13.  
  14. ?> 
  15. <form id="form1" name="form1" method="post" action="page.php?item=menu">
  16. <label>
  17. <select name="director" id="select">
  18.  
  19. <?php  
  20. require "count_rea.php";  
  21.  
  22. echo '<option>- r&eacute;alisateurs -&nbsp;('.$total.')</option>';  
  23. echo $options;  
  24. ?>
  25.  
  26.  
  27. </select>
  28. </label>
  29. <label>
  30. <input type="submit" name="button" id="button" value="go" />
  31. </label>
  32. </form>
  33.  


et la page "count_rea.php" :

  1.  
  2. <?php
  3.  
  4. $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );  
  5.  
  6. mysql_select_db($db) or die ('Erreur :'.mysql_error());  
  7. $select = 'SELECT COUNT(DISTINCT director) FROM films';  
  8.  
  9. $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );  
  10.  
  11. $row = mysql_fetch_row($result);  
  12.  
  13. $total = $row[0];  
  14.  
  15. ?>
  16.  


donc, comment afficher dans le menu déroulant, le nombre de films par réal
j'essaie un peu tout, mais je bloque

merci
f
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Breizh Blog