Bonjour,

Dans le cadre de la rénovation du site internet de mon club sportif, je dois réaliser une interface d'administration pour les équipes en Interclubs.

Pour cela, j'ai créé trois tables (simplifiées pour le problème)

- une table "joueurs" contenant les champs "licence" (id), "nom", "prenom"
- une table "equipes" contenant les champs "idE" (id), "annee", "capitaine"
- une table "equipes_joueurs" contenant les champs "idE" et "licence" afin de faire le lien entre les deux tables.

Sachant que qu'un joueur peut appartenir à 1 ou plusieurs équipes en même temps.

Avec ceci, je dois créer deux pages: une page "ajouter.php" afin d'ajouter une équipe ainsi que les joueurs qui la composent.

Et une page "modifier.php" afin de modifier plus tard les données concernant l'équipe (infos de l'équipe + membres de l'équipe).

Pour la page "ajouter.php", pas de soucis, la création d'un nouvel enregistrement se fait dans la table equipes. On choisit les joueurs grâce à 14 listes déroulantes (7 pour les hommes, 7 pour les femmes) et dans la table equipes_joueurs s'ajoutent alors 14 enregistrements (contenant pour chacun "l'idE" de l'équipe ainsi que la "licence" du joueur). Si jamais on ne remplit pas toutes les listes, on obtient la valeur 0 dans le champ "licence".

Maintenant ce que j'aimerais, c'est pouvoir modifier les compositions des équipes dans la page "modifier.php".

Voici mon code pour "updater" la table equipes (au départ c'est le code de dreamweaver, d'où les GetSQLValueString et %s). Mais cela fonctionne.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  $updateSQL = sprintf("UPDATE equipes SET annee=%s, capitaine=%s WHERE idE=%s",
                       GetSQLValueString($_POST['annee'], "text"),
                       GetSQLValueString($_POST['capitaine'], "text"),
                       GetSQLValueString($_POST['idE'], "int")); 
  mysql_select_db($database_localhost, $localhost);
  $Result = mysql_query($updateSQL, $localhost) or die(mysql_error());
Là où cela pose problème, c'est lorsque je veux mettre à jour les listes déroulantes des joueurs de l'équipe.

Au départ, j'avais l'idée suivante:
- récupérer les valeurs des différentes listes dans un tableau numéroté.
- updater chaque enregistrement de la table avec une boucle FOR.



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
  $tab_joueurs = array ($_POST['joueur1'], $_POST['joueur2'], $_POST['joueur3'], $_POST['joueur4'], $_POST['joueur5'],
  $_POST['joueur6'], $_POST['joueur7']);
 
  for ($i = 0; $i < 7; $i++)
{
mysql_query("UPDATE equipes_joueurs SET idE=".$_POST['idE'].", 
licence='$tab_joueurs[$i]' 
WHERE idE=".$_POST['idE']."
", $localhost) or die(mysql_error());
}
Mais le problème, c'est qu'avec cette requête, l'update prend la valeur de la dernière liste déroulante ($tab_joueurs[6]) et la copie dans toutes les autres listes déroulantes.

Il manque à mon avis une condition, mais laquelle ? La requête UPDATE n'a pas l'air d'offrir beaucoup de souplesse.

Merci pour vos réponses.