Menu deroulant et mysql recuperer les infos $

Résolu/Fermé
claudecs Messages postés 15 Date d'inscription dimanche 25 mars 2007 Statut Membre Dernière intervention 20 avril 2007 - 26 mars 2007 à 17:28
 djoyanna - 8 sept. 2008 à 12:03
Bonjour a tous je viens de faire un menu deroulant et je souhaite enregistrer les donnees de celui ci en $quelques

voici donc le code qui semble fonctionner puisque il apparait dans ma barre d'addresse sous forme de menu= mon g_serveur une fois que j'ai selectionner mon n_serveur dans la liste.

<form>
<?php
$login = $_SESSION['login'];
mysql_select_db($database_dbprotect, $dbprotect);
echo "<SELECT Name=menu Size=1 onchange='this.form.submit()'><OPTION Value=0>Choisir le serveur</OPTION>";
$sql= "SELECT * FROM gserveur WHERE login='$login' ORDER BY n_serveur ASC";
$rep= mysql_query($sql);
while($ligne_liste=mysql_fetch_array($rep)){
echo "<OPTION Value=\"".$ligne_liste['g_serveur']."\">".$ligne_liste['n_serveur']."</OPTION>";
}
echo "</SELECT>";
?>
</form>
<span class="Style8"><?php echo $_SESSION['prenom']; ?>
<span class="Style8"><?php echo "$login"; ?>
<p align="left" class="Style4 Style3"><a href="index.php?erreur=logout"><strong>Vous déconnecter</strong></a></p>

Par contre je suis toujours perdu pour l'affichage et l'enregistrement :

voila c'est simple je voudrais :
1: Que dans mon menu deroulant quand ma selection est faire qu'elle reste afficher et que cela ne revienne pas au premier enregistrement de la base de donné.

2: je n'arrive pas as enregistrer le resultat de ma base de donnée dans le but de l'utiliser dans une deuxieme requete mysql ...

j'espere que vous pourriez m'aider la dessus car je suis news et des heures des fois ne suffise pas à trouver ...merci à tous...

2 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
26 mars 2007 à 19:57
Bonjour,

Alors, pour ta première question, c'est assez simple. Lorsque ton menu déroulant est modifié, le formulaire va être soumis. La page va donc être réaffichée. Réaffichée comment ? Exactement de la même façon ! Car à aucun moment tu n'as demandé à php de garder en mémoire la valeur qui a été sélectionnée.

La première étape pour corriger ton code serait de modifier ta balise <form>. En effet, il faut plus d'informations pour qu'elle fonctionne correctement.
Déjà, lui dire que faire à la soumission : action="page.php". Il faut bien sûr mettre ici la page que tu souhaites voir afficher à la soumission, et si j'ai bien compris, c'est la page en cours. Remets donc son nom à la place de page.php.
Ensuite, il faut lui dire comment transmettre les informations. La méthode recommendée est la méthode POST (je te laisse rechercher si tu veux en savoir plus) : method="post".

Ensuite, une fois que l'on a ça, on rentre dans le code php en lui-même.
Pour récupérer la valeur d'un champ d'un formulaire posté, il faut utiliser le tableau global $_POST. Et vérifier, auparavant, qu'elle existe bien. Par exemple, ici, le serveur sélectionné est $_POST['menu'].
Le mieux est d'affecté cette valeur à une variable plus simple, par exemple $serveur.
Ce qui donne :
if (isset($_POST['menu'])) $server = $_POST['menu'];
Tu pourras ensuite l'utiliser comme tu le souhaites (ce qui répond à ton point 2)

Ensuite, comment garder sélectionné l'option qui vient d'être choisie ? En html, cela passe par l'attribut selected="selected".
Donc, très logiquement, on écrire que "si le champ <option> en cours d'écriture est le même que celui qui a été sélectionné, alors on rajoute l'attribut selected".


Bon, voilà pour les explications !

Maintenant, le code :
<form action="page.php" method="post">
<?php
$login = $_SESSION['login'];
if (isset($_POST['menu']))
    $serveur = $_POST['menu'];
else
    $serveur = "";

mysql_select_db($database_dbprotect, $dbprotect);

echo "<select name='menu' size='1' onchange='this.form.submit()'><option value='0'>Choisir le serveur</option>";
$sql= "SELECT * FROM gserveur WHERE login='$login' ORDER BY n_serveur ASC";
$rep= mysql_query($sql);
while($ligne_liste=mysql_fetch_array($rep))
{
    $selected = "";
    if ($serveur == $ligne_liste['g_serveur'])
        $selected = " selected='selected' ";
    echo "<option Value=\"".$ligne_liste['g_serveur']."\"".$selected.">".$ligne_liste['n_serveur']."</option>";
}
echo "</select>";
?>
</form>
<span class="Style8"><?php echo $_SESSION['prenom']; ?>
<span class="Style8"><?php echo "$login"; ?>
<p align="left" class="Style4 Style3"><a href="index.php?erreur=logout"><strong>Vous déconnecter</strong></a></p> 
Voilà !

Xavier
9
claudecs Messages postés 15 Date d'inscription dimanche 25 mars 2007 Statut Membre Dernière intervention 20 avril 2007
26 mars 2007 à 21:39
Super merci à toi ...
Merci beaucoup d'avoir pris le temps de me lire et surtout d'y repondre en francais et en script ...
ca marche impec.
j'ai plus qu'as comparer cette valeurs a d'autres base et op ...
merci encore
0
Bonjour voici mon problème :
je cherche a créer un menu dynamique avec menu/sous menu tiré d'une Base de donnée avec les table categorie et sous_categorie .
La liste des menu apparai comme ceci :
menu 1
menu 2
menu 3

Je voudrai que lorsque je clik sur l'une d'entre elle s'affiche les sous menu qui lui corresponde tout en gardant les autre menu non cliké , comme ceci :
menu 1
menu 2
sous menu 1
sous menu 2
menu 3

Mon problème est que j'arrive a afficher la liste des sous et affiché les sous menu correspondant au menu cliké mai les sous menu s'affiche en dessous de tout les menu , comme le montre cet exemple :
si je clik sur le menu 2 voici ce q'il se passe :
menu 1
sous menu 1 (du menu 2)
sous menu 2 (du menu 2)
menu 2
sous menu 1 (du menu 2)
sous menu 2 (du menu 2)
menu 3
sous menu 1 (du menu 2)
sous menu 2 (du menu 2)

Alors que j'aimerai obtenir ce résultat :
menu 1
menu 2
sous menu 1 (du menu 2)
sous menu 2 (du menu 2)
menu 3

Jespere que j'ai été clair

voici mon code
<?php
/*TEST MENU SUR TABLE CAT*/
$lResult1 = $lSite->CountSelectFrontCat();//SELECT Count( id_cat) AS count_cat FROM categorie where id_site='52' and publier_cat='1'
$lResult2 = $lSite->SelectFrontCat();//SELECT * FROM categorie where id_site='52' and publier_cat='1' order by ordre_cat

if ($row1=$lResult1)
{
$count_cat=$row1[0][0];
}
if ($row2=$lResult2)
{
$i=0;
for ( $y = 1; $y <= $count_cat; $y++)
{$id_cat=$row2[$i][0];
echo '<a href="menu_dynamique_effet_bouton.php?id_cat='.$row2[$i][0].'">';
echo $row2[$i][1];
echo '</a><br>';

if ($_GET['id_cat'])
{
$id_cat=$_GET['id_cat'];
$lResult3 = $lSite->CountSelectFrontSsCat($id_cat);//SELECT Count( id_cat) AS count_cat FROM sous_categorie where id_site='52' and publier_ss_cat='1' and id_cat='".$id_cat."'
$lResult4 = $lSite->SelectFrontSsCat($id_cat); //SELECT * FROM sous_categorie where id_site='52' and publier_ss_cat='1' and id_cat='".$id_cat."' order by ordre_ss_cat
if ($row3=$lResult3)
{
$count_ss_cat=$row3[0][0];
}
if ($row4=$lResult4)
{
$j=0;

for ( $z = 1; $z <= $count_ss_cat; $z++)
{
echo $row4[$j][1];
echo '<br>';
$j++;
}
}
}
$i++;
}


}

?>
merci pour votre aide
0