Une erreur de script

Mammouth du PHP | 545 Messages

05 mars 2006, 23:49

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
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

06 mars 2006, 00:09

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 545 Messages

06 mars 2006, 00:19

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
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

06 mars 2006, 00:26

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 ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 545 Messages

06 mars 2006, 00:30

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:
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

06 mars 2006, 01:13

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute