Problème delete en boucle...

Résolu/Fermé
rirififiloulou3349 Messages postés 8 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 22 janvier 2013 - 21 janv. 2013 à 21:30
rirififiloulou3349 Messages postés 8 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 22 janvier 2013 - 22 janv. 2013 à 10:41
Bonjour,

Je dois supprimer une ligne de bdd mysql dans chaque table concernée par la mission supprimée. Je récupère deux paramètres en GET :

$table_pn correspond à chaque personnel concerné par la mission supprimée. Chaque personnel est insérée dans une colonne allant de 'equip_1' à 'equip_13'.

if ((isset($_GET['id_mission'])) && ($_GET['id_mission'] != "")) {
$i=1;
do {
$table_pn = $row_supprimer_mission['equip_'.$i];
$i++; $i = $i +1;
$updateSQL_table = sprintf("DELETE FROM '". $table_pn ."' WHERE id_mission =%s AND annee_rema =%s",
GetSQLValueString($_GET['id_mission'], "int"),
GetSQLValueString($_GET['annee_rema'], "int"));

mysql_select_db($database_HelirisQ, $HelirisQ);
$Result2_gestion_appareil = mysql_query($updateSQL_table, $HelirisQ) or die(mysql_error());

} while($i < 13);
}

Le problème est que j'obtiens une erreur de synthaxe SQL. J'ai essayé de concaténer différemment, rien n'y fait. Lorsqu'à la place de $table_pn je mets le nom de la table concernée, ça fonctionne.

Les noms de tables correspondent à des noms de personnels qui sont insérés en majuscule dans la colonne de la mission concernée. Or les tables mysql sont automatiquement en minuscule. Est-ce que ça a une incidence ?

Est-ce ma boucle qui ne va pas ??

Merci pour votre aide.


3 réponses

ljm972 Messages postés 254 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 6 décembre 2021 29
22 janv. 2013 à 01:01
Salut,
tu as mis le nom de table entre quote
'". $table_pn ."' => ". $table_pn ."
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 janv. 2013 à 08:56
Bonjour,

le problème doit venir en grande partie de ce que ljm972 a souligné.
En dehors de ça, ta boucle est bizarre, un do while pour des requêtes c'est plus qu'inhabituel, tu fais $i++ et $i = $i+1, tu cherches à augmenter $i de 2 ?

d'une façon plus général, lorsque tu as un soucis avec une requête sql, l'idéal c'est de la mettre dans une variable et de faire afficher cette variable pour la tester dans phpmyadmin, de cette façon, les éventuelles erreurs vont te sembler plus évidentes
0
rirififiloulou3349 Messages postés 8 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 22 janvier 2013
22 janv. 2013 à 10:41
J'ai trouvé mon problème.
Bien que la remarque de ljm972 était fondée, mon problème venait de ma boucle qui donnait comme condition $i<13.
En effet, j'ai 13 colonnes dans ma table, mais toutes ne sont pas remplies...
Donc forcément dès qu'une colonne était vide, la requête sur une table non définie ne pouvait pas fonctionner.
Donc voici comment j'ai procédé :

if ((isset($_GET['id_mission'])) && ($_GET['id_mission'] != "")) {

while ($row_supprimer_mission['equip_'$i]) {

$table_pn = $row_supprimer_mission['equip_'.$i];

$updateSQL_table = sprintf("DELETE FROM '". $table_pn ."' WHERE id_mission =%s AND annee_rema =%s",
GetSQLValueString($_GET['id_mission'], "int"),
GetSQLValueString($_GET['annee_rema'], "int"));

mysql_select_db($database_HelirisQ, $HelirisQ);
$Result2_gestion_appareil = mysql_query($updateSQL_table, $HelirisQ) or die(mysql_error());

}
}

Merci pour l'info ThEBiShOp car c'est en affichant mes requêtes que je me suis aperçu qu'une l'une d'elle ne comportait pas de table.
0