Page 1 sur 1

Modifier liste déroulante

Posté : 25 sept. 2005, 23:39
par Invité
Bonjour,

J'ai crée un formulaire pour ajouter des joueurs dans ma base de données : tout marche très bien.

Maintenant, j'ai crée un formulaire pour modifier un joueur. Tout marche sauf pour les listes déroulantes où j'ai un petit problème

J'ai deux tables : joueurs et nationalites. Les deux sont liées avec id_nationalite

Par exemple j'enregistre trois nationalites dans ma table : France, Espagne, Brésil

J'enregistre ensuite un joueur : Nom : Zinédine Zidane / Nationalité : Espagne (je fais une erreur pour pouvoir modifer plus tard)

Si je veux modifier la nationalité de Zidane, dans la liste seule Espagne apparait. J'aimerai que les autres nationalités apparaissent pour pouvoir modifier et mettre France par exemple. Attention, j'aimerai que quand on modifie un joueur, la nationalité par défaut soit celle que l'on a enregistré lorsqu'on a crée le joueur.

Merci de m'éclairer

Voici mon code :

Code : Tout sélectionner

<td><select name="nationalite"> <?php $resultat_sql = mysql_query("SELECT nationalites.id_nationalite, nationalites.nationalite, clubs.id_nationalite FROM nationalites, clubs WHERE nationalites.id_nationalite = clubs.id_nationalite"); while ($data = mysql_fetch_assoc($resultat_sql)) { echo '<option value="'.$data['id_nationalite'].'">'.$data['nationalite'].'</option>'; } ?> </select></td>

Posté : 25 sept. 2005, 23:42
par Cyrano
Tu devrais faire un tour ICI, tu as de bonnes chances d'y trouver ta réponse.

Posté : 26 sept. 2005, 00:01
par Invité
Ca c'est pour deux listes déroulantes liées hors pour mon cas il y en a qu'une seule.

De plus, mon problème n'est pas de créer une liste déroulante mais de la modifier et là il n'en parle pas

Posté : 26 sept. 2005, 00:06
par Truc
ce que tu peut faire c'est te lancer dans une liste simple comportant toutes les nationalités donc pas de requete précise sur l'id ou quoi que ce soit d'autre.
Parcontre tu connais deja l'id du joueur , donc pour changer de nationnalité suffira de sélectionner dans la liste des nationalités et de valider le choix qui fera un update du joueur en question (grace a l'id)

Si tu as suivi mon raisonnement ça ne devrai pas etre difficile

Posté : 26 sept. 2005, 00:11
par Invité
Ben j'aimerai vraiment passer par deux tables car je pourrai ensuite adapter cet exemple à d'autres cas où là je serai obliger d'avoir deux tables liées.

C'est possible à faire non ?

Posté : 26 sept. 2005, 00:18
par pjl
Je ne comprends pas la requête.
On parle de nationalité d'un joueur et la requete parle de nationalité d'un club.
De plus, elle ramène trois élèments alors qu'il n'y en a que 2 d'exploités dans le code.

Posté : 26 sept. 2005, 00:26
par Truc
oui mais dans ce cas ca n'a aucun interet de passer par deux tables.

Tu te retrouve sur la page de modification avec l'id du joueur a modifier (donc aussi le nom, ex. Zidane) sur cette page une liste avec les nationalités disponibles et tu sélectione dans cette liste celle que tu souhaite lui attribuer. tu valide le formulaire et ça lance la requete update sur le champ nationalité du joueur, c'est tout

Posté : 26 sept. 2005, 01:24
par Invité
Ben si il y a un intérêt à avoir deux tables

Cela me permet :

-d'associer à chaque nationalité une image
-de me servir de la table nationalité pour donner le pays d'un club et d'un joueur
-de faire des requêtes afin d'avoir des statistiques par pays

etc ........

Posté : 26 sept. 2005, 10:01
par pjl
Truc parlait du cas précis évoqué par ton PB.

Avec ta requete, si tu reprends l'exemple de Zidane, ca va toujours te dire qu'il est espagnol alors que c'est son club qui est espagnol.

Posté : 26 sept. 2005, 12:32
par Invité
J'ai mal recopié le code. Ca donne ça :

Code : Tout sélectionner

<td><select name="nationalite"> <?php $resultat_sql = mysql_query("SELECT nationalites.id_nationalite, nationalites.nationalite, joueurs.id_nationalite FROM nationalites, joueurs WHERE nationalites.id_nationalite = joueurs.id_nationalite"); while ($data = mysql_fetch_assoc($resultat_sql)) { echo '<option value="'.$data['id_nationalite'].'">'.$data['nationalite'].'</option>'; } ?> </select></td>
Qui peut m'aider svp ?

Posté : 26 sept. 2005, 12:57
par pjl
est tu sur de comprendre la logique de ce que tu es en train de faire ?

tu veux afficher une liste de nationalité et toi, tu demande à afficher la nationalité d'un joueur donné.

De plus cette requete ramène toujours 3 élèments alors que tu n'en utilises que 2.