Variable liste déroulante php

Résolu/Fermé
BountyHunter14 Messages postés 13 Date d'inscription mercredi 6 décembre 2006 Statut Membre Dernière intervention 31 août 2008 - 6 déc. 2006 à 11:55
 manoa - 30 juin 2008 à 16:47
Bonjour à tous

Voilà je cherche à créer une liste déroulante permettant de supprimer l'élément sélectionné.
La connexion à la base se passe bien, l'affichage du contenu aussi mais quand je sélectionne un élément de la liste ça me supprimer toujours le dernier éléments de la liste, pas celui que j'ai séléctionné... Je pense que c'est un problème au niveau de la récupération de la valeur mais je vois pas ou est cette erreur dans le code

d'avance merci pour votre aide :)




<?php
mysql_connect("localhost","root","") or die ("Connexion au serveur impossible");
mysql_select_db("jeux") or die ("Sélection de la base de données impossible");
$reponse = mysql_query("select nom_joueur FROM joueur ORDER BY nom_joueur")
or die ("Execution de la requète impossible");
?>
<div align = "center">
<?php
echo " <form action='supprimer_joueur.php' method='post'>
<select name='nom_joueur'>\n";?></div>
<?php
while ($ligne = mysql_fetch_array($reponse)){
extract($ligne);
if($nom_joueur<>"")
echo "<option value='nom_joueur'>$nom_joueur</option>\n";
}
echo "</select>\n";
echo "<td><input type='submit'","value=\"Supprimer ce joueur\"></td></form>\n";
?>

<?php
if(isset($_POST['nom_joueur'])){
if ($_POST['nom_joueur'] != NULL)
{
mysql_connect("localhost", "root", "") or die ("Connexion au serveur impossible");
mysql_select_db("Jeux") or die ("Sélection de la base de données impossible");
mysql_query("DELETE FROM joueur where nom_joueur ='$nom_joueur'");
mysql_close();
} }
?>
A voir également:

3 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
6 déc. 2006 à 12:34
Bonjour,

Le problème est que toutes tes <option> ont la même "value", tu ne peux donc pas savoir lequel a été sélectionné. Par ailleurs, lors de la suppression, tu réutilises $nom_joueur . Regarde bien ta fonction : à ton avis, que vaut cette variable quand on arrive à cet endroit de ton script ? Il n'a pas bougé depuis la fin de ta boucle "while" ! Il vaut donc toujours le nom du dernier joueur.

Autre chose, si tu places le script de suppression après le script de remplissage de la liste déroulante, après la suppression, tu reverras le joueur que tu as supprimé dans la liste, ce qui n'est pas forcément très intuitif pour l'utilisateur.

Essaie ceci, qui devrait corriger tous ces légers défauts :
<?php
mysql_connect("localhost","root","") or die ("Connexion au serveur impossible");
mysql_select_db("jeux") or die ("Sélection de la base de données impossible");
?>
// Suppression du joueur sélectionné
<?php
if(isset($_POST['nom_joueur']))
{
	if ($_POST['nom_joueur'] != NULL)
	{
		mysql_query("DELETE FROM joueur where nom_joueur='".$_POST['nom_joueur']."'");
	}
}
?>

<div align = "center">

<?php
// Affichage de la liste déroulante

$reponse = mysql_query("select nom_joueur FROM joueur ORDER BY nom_joueur")
	or die ("Execution de la requète impossible");
echo " <form action='supprimer_joueur.php' method='post'><select name='nom_joueur'>\n";

while ($ligne = mysql_fetch_array($reponse))
{
	extract($ligne);
	if($nom_joueur<>"")
		echo "<option value='".$nom_joueur."'>$nom_joueur</option>\n";
}
echo "</select>\n";
echo "<td><input type='submit' value='Supprimer ce joueur'></td></form></div>\n";
mysql_close();
?>
Cela te convient-il ?

Xavier
2
BountyHunter14 Messages postés 13 Date d'inscription mercredi 6 décembre 2006 Statut Membre Dernière intervention 31 août 2008 10
6 déc. 2006 à 12:57
Merci beaucoup Xavier ça marche...

(dsl pour la réponse un peu "tardive" mais j'ai pris mon temps pour bien comprendre ou j'avais fait mes erreurs...)

encore merci pour ton aide
0
Bonjour,

Je cherche à faire une liste déroulante dont les données pourrait changer en fonction d'1choix fait avec une autre liste déroulante.

Petit exemple, c'est pour un calcul d'heures effectuées, ma première liste déroulante me propose 4 choix (Travail en equipe, Normal...) et je voudrais qu'en fonction de ce choix, ma deuxième liste déroulante me donne trois autres choix qui diffèrent selon la première liste ( ex: si travail en équipe selectionné les choix seront : 33,75 ; 37.5.. et si c'est normal ce seras : 35, 39 ..).

Pour l'instant pour faire ma première liste déroulante j'ai tout simplement utilisé "Données-> validation"

Merci d'avance
0