Page 1 sur 1

Une erreur de script

Posté : 05 mars 2006, 23:49
par Sebe
Salut,

J'ai une erreur dans mon script que je pense avoir identifier mais j'aimerai l'avis de personnes avertis pour m'aider à résoudre le problème!

La table en question:
acrho_changement

Les champs de la fameuse table:
acrho_club_id_club,
acrho_participant_ID_participant,
annee,
dossard,
acrho_categorie_ID_categorie

Conséquence de l'erreur:
J'ai voulu virer une entrée de cette table qui se situait en 2004 et toutes les entrées 2004 (soit plus de 100) sont parties au bac!

L'erreur que je pense avoir identifié:
$deleteSQL = sprintf("DELETE FROM acrho_changement WHERE annee=%s", GetSQLValueString($_GET['supp'], "text"));
La solution que je pense être la bonne:
$deleteSQL = sprintf("DELETE FROM acrho_changement WHERE annee=%s [b]AND acrho_club_id_club= ? AND acrho_participant_ID_participant= ? AND dossard= ? AND acrho_categorie_ID_categorie= ?[/b]", GetSQLValueString($_GET['supp'], "text"));
Qu'est-ce que vous en pensez? Oui pour les "?", je ne suis vraiment pas dans le coup mais pour l'idée?

Merci

Posté : 06 mars 2006, 00:09
par Truc
Pour les requetes de suppression il faut ajouter une clause WHERE pour supprimer une ou plusieures entrées.

Dans la 1ère requete tu as supprimé tous les enregistrements qui contenaient pour le champ annee "2004".

Il faut donc indiquer un champ qui est unique pour chaque entrée (ligne) de la table. L'id est donc le mieux placé.

insert en clause where l'id de la table pour supprimer que cette entrée.

Posté : 06 mars 2006, 00:19
par Sebe
insert en clause where l'id de la table pour supprimer que cette entrée.
Comme tu as pu le voir dans les différents champs, je n'ai pas d'id sur cette table. :roll: Y-a-t-il possibilité de la façon que je l'ai proposé ou bien y-a-t-il possibilité de rajouter un id dans la table par un coup de génie?

Merci

Posté : 06 mars 2006, 00:26
par Truc
je n'ai pas d'id sur cette table
l'id est la clé primaire... quel est le ou les champs qui sont clé dans la table ?

Posté : 06 mars 2006, 00:30
par Sebe
l'id est la clé primaire... quel est le ou les champs qui sont clé dans la table ?
Pas de clé primaire ... que des clés étrangéres (acrho_club_id_club, acrho_participant_ID_participant, acrho_categorie_ID_categorie)

:shock: :shock: :shock: :shock: :shock:

Posté : 06 mars 2006, 01:13
par Truc
dans ce cas il faut utiliser les 3 champs:
$val1="";
$val2="";
$val3="";

$deleteSQL = "DELETE FROM acrho_changement WHERE acrho_club_id_club= ".$val1." AND acrho_participant_ID_participant= ".$val2." AND acrho_categorie_ID_categorie= ".$val3;
et supprimer en fonction de ces champs et non "dossard" et "annee".
Il te faut récupérer ces valeurs lors de la proposition de suppression des données. Sur un lien par exemple.