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