Problème delete en boucle...

Résolu
rirififiloulou3349 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
rirififiloulou3349 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
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 255 Date d'inscription   Statut Membre Dernière intervention   29
 
Salut,
tu as mis le nom de table entre quote
'". $table_pn ."' => ". $table_pn ."
0
ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
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   Statut Membre Dernière intervention  
 
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