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
djoyanna - 8 sept. 2008 à 12:03
A voir également:
- Menu deroulant et mysql recuperer les infos $
- Menu déroulant excel - Guide
- Comment récupérer les messages supprimés sur whatsapp - Guide
- Recuperer video youtube - Guide
- Excel menu déroulant en cascade - Guide
- Comment récupérer un compte facebook piraté - Guide
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
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 :
Xavier
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
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
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
26 mars 2007 à 21:39
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