base MySQL dans menu déroulant

Répondre
fausto
le 05/10/2007 à 21:24
fausto
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&eacute;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
Keika
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&eacute;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 !
fausto
le 06/10/2007 à 12:30
fausto
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
Keika
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 !
fausto
le 08/10/2007 à 17:09
fausto
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
le 08/10/2007 à 17:56
LA GLOBULE
Ben tu récupères en GET le nom du mec et tu fais ta seconde requête en fonction non ?
Keika
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 !
fausto
le 09/10/2007 à 15:55
fausto
ok
merci à vous, je vais tester çà
je vous tiens au jus
++
f
fausto
le 10/10/2007 à 08:49
fausto
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
fausto
le 10/10/2007 à 09:09
fausto
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&eacute;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
Répondre
LoadingChargement en cours