|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||||||
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 3 ![]() |
Bonjour à tous !
Malgrè mes nombreuses recherches sur plusieurs Forums, je n'ai pas trouvé de solutions. Voici mon cas : Je gère un petit club de football, le but étant de créér des statistiques pour chaque joueur. (présence aux entrainements, temps de jeu, buts, passes, carton jaunes et carton rouges). Après chaque entrainement ou match je souhaite, via une interface php/html, mettre à jour les données de la base (plus précisément de la "Table scl_stats_joueurs") pour chaque joueur en une seule fois. I. PARTIE SQL : Trois tables sont utilisées dans la gestion des statistiques: scl_membres, scl_saisons, scl_stats_joueurs. Code SQL :
II. PARTIE PHP/HTML: A. REQUETES SQL: 1. Je récupère les informations concernant la saison en cours (logiquement la dernière crééé). Code PHP :
2. Je récupère dans la "Table scl_membres" les informations concernant les membres qui sont "joueurs dans l'équipe" qui ont donc un numéro de licence. Code PHP :
3. Je compte le nombre de membres qui sont licenciés. Code PHP :
B. FORMULAIRE HTML + INFOS PHP Code PHP :
C. TRAITEMENT DU FORMULAIRE EN PHP: Code PHP :
PROBLEME : l'erreur suivante apparait : Requête invalide : Duplicate entry 'x-x' for key 'PRIMARY'. Pour quelle(s) raison(s) la mise à jour ne s'effectue pas ? Et me renvoie cette erreur. Je pense que le problème vient soit : - de la "Table scl_stats_joueurs" et du fait que sa clé primaire rassemble 2 clés étrangères; - de la requête SQL de mise à jour. Merci d'avance aux personnes qui jetterons un oeil sur ce cas. PS: Vous l'aurez compris je ne suis pas développeur de métier, je me suis formé ci et là et je dois avoir pas mal de lacunes notamment coté SGDB. |
||||||||||||
|
|
00
|
|
|
#2 | ||
![]() ![]() |
Es-tu certain que l'erreur se produise au moment de la partie C du code que tu nous présentes ?
La requête cherche la ligne à mettre à jour en se basant sur les colonnes de la clé primaire mais ne met pas à jour ces colonnes donc il n'y a pas de raison qu'à ce moment là apparaisse une telle erreur. N'y aurait-il pas plutôt une opération d'insertion quelque part ? Ajoute à ton die le texte de la requête SQL envoyée au serveur. Par exemple comme ceci : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#3 | |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 3 ![]() |
Merci Philippe du coup de main.
J'ai effectué ce que tu m'as demandé, cela me renvoie exactement la même erreur, à savoir : Citation:
J'ai testé ma requête "pour un joueur" dans PhpMyAdmin en remplaçant les variables par les données directement, et cela fonctionne correctement. |
|
|
|
00
|
|
|
#4 |
![]() ![]() |
Ce que je t'ai conseillé (et pas demandé), c'est d'ajouter le texte de la requête en erreur pour vérifier que l'erreur se produit bien à cette partie du code parce que selon moi la requête que tu incrimines ne peux pas provoquer cette erreur !
L'erreur signifie que le couple (8, 1) qu'une requête essaie d'affecter à la clé primaire, par insertion ou par mise à jour des colonnes constituant la clé primaire, existe déjà dans la table. Or ta requête ne met pas à jour la clé primaire. Et cet ajout du code exact de la requête envoyée au serveur, il faut le mettre pour toutes les requês de ton code, pas seulement celle-ci qui n'est probablement pas la fautive.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#5 | |||
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 3 ![]() |
Cependant ton idée d'insertion quelque part m'a mis la puce à l'oreille...
Effectivement j'ai un peu plus haut dans ma page php un autre script (Formulaire) qui permet de créer tous les joueurs pour une nouvelle saison. Celui-ci contient un "INSERT INTO". Code :
Cependant la Table est vidée (logique) en m'indiquant clairement des variables non identifiées pour chaque colonne de chaque joueur : Citation:
Mais ceci est un autre sujet. Merci. |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com