base MySQL dans menu déroulant
bonjour,
j'ai un petit problème de redirection
d'un menu déroulant dont les options proviennent d'une bdd MySQL
// d'abord le javascript :
<script type="text/javascript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script>
// puis le php
<?php
mysql_connect("serveur", "base", "pass");
mysql_select_db("base"); // Sélection de la base coursphp
$reponse = mysql_query("SELECT director FROM films ORDER BY director ASC"); // Requête SQL
$options = "";
while(false != ($ligne = mysql_fetch_array($reponse)))
{
$options .= ' <option value="'. $ligne['director'] .'">'. $ligne['director'] .'</option>' . "\n";
}
?>
<select name="director" id="director" onchange="MM_director('parent',this,0)">
<?php
echo '<option>- réalisateurs -</option>';
echo $options;
?>
</select>
<?php
mysql_close()
?>
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
le 06/10/2007 à 05:01
Keika
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.
<?php
while(false != ($ligne = mysql_fetch_array($reponse)))
{
$options[]/*Ici est le tableau options*/ .= ' <option value="'. $ligne['director'] .'">'. $ligne['director'] .'</option>' . "\n";
}
?>
<select name="director" id="director" onchange="MM_director('parent',this,0)">
<?php
echo '<option>- réalisateurs -</option>';
//Et ici on exploite le tableau avec un foreach
foreach($options as $directors){
echo $directors ;
}//Fin foreach
?>
</select>
?>
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:
<?php
$options = array() ;
?>
au debut de ton code suffit.
Enjoy ^_^
K.
Le PHP --> C'est dur !
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
// ligne 6
$options[]/*Ici est le tableau options*/ .= ' <option value="'. $ligne['director'] .'">'. $ligne['director'] .'</option>' . "\n";
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
le 07/10/2007 à 17:24
Keika
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.
Le PHP --> C'est dur !
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
Ben tu récupères en GET le nom du mec et tu fais ta seconde requête en fonction non ?
le 09/10/2007 à 06:57
Keika
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.
Le PHP --> C'est dur !
ok
merci à vous, je vais tester çà
je vous tiens au jus
++
f
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 :
http://www.webdeco.fr/page.php?item=menu
merci encore!
bonne journée
f
oups !
désolé d'avoir posté pour rien!!
j'ai trouvé
il faut rajouter "distinct" à la requête MySQL
<?
mysql_connect("host", "base", "pass");
mysql_select_db("base");
$reponse = mysql_query("SELECT distinct director FROM films ORDER BY director ASC"); // Requête SQL
$options = "";
while(false != ($ligne = mysql_fetch_array($reponse)))
{
$options .= ' <option value="'. $ligne['director'] .'">'. $ligne['director'] .'</option>' . "\n";
}
?>
<form id="form1" name="form1" method="post" action="traitement.php">
<label>
<select name="director" id="select">
<?php
echo '<option>- réalisateurs -</option>';
echo $options;
?>
</select>
</label>
<label>
<input type="submit" name="button" id="button" value="go" />
</label>
</form>
et dans la page traitement.php on récupère
la variable "director"
$sql = "SELECT * FROM films WHERE director = '".$_POST['director']."'; ";
merci encore à vous
@+
f