par
sadeq » 03 juin 2005, 10:06
L'erreur est logique dans la troisième requête qui est supposée récupérer le lieu à partir de la première.
Quand tu écris :
$Lieu="SELECT lieu FROM lieu_intervention WHERE ID_LI='".$Li."' ";//choisit le nom du lieu a supprimer
tu veux récupérer le lieu que tu utilise dans la 3° requête :
$temp="SELECT ID_R FROM report WHERE RHost LIKE '".$Lieu."'";//devrait choisir tous les rapports dont ....
Mais puisque tu n'as pas exécuter la 1° avant de lancer la 3° requête, la clause WHERE de cette dernière se trouve concaténée avec le contenu de $Lieu qui est la 1° requête (ce qui donne en réalité une 3° requête écrite comme suit :
$temp="SELECT ID_R FROM report WHERE RHost LIKE 'SELECT
lieu FROM lieu_intervention WHERE ID_LI='206'' et c'est ton erreur.
Même remarque pour la requête basée sur le paramètre $temp.
La Correction: Il faut exécuter les requêtes chainées.
$Lieu="SELECT lieu FROM lieu_intervention WHERE ID_LI='".$Li."' ";//choisit le nom du lieu a supprimer
$res = mysql_query($Lieu)or die(mysql_error());
$Lieu = mysql_fetch_array($res);
$query2="DELETE FROM report WHERE RHost LIKE '".$Lieu[0]."'";//devrait supprimer tout les rapports choisit
mysql_query($query2)or die(mysql_error());
$temp="SELECT ID_R FROM report WHERE RHost LIKE '".$Lieu[0]."'"; //devrait choisir tous les rapports dont le nom est similaire
$res = mysql_query($temp)or die(mysql_error());
$temp= mysql_fetch_array($res);
$query3="DELETE FROM item WHERE ReportID ='".$temp[0]."' ";//devrait supprimer toutes les infos liées aux rapports
mysql_query($query3)or die(mysql_error());
$query="DELETE FROM lieu_intervention WHERE ID_LI='".$Li."' ";//supprime le lieu
mysql_query($query)or die(mysql_error());
L'erreur est logique dans la troisième requête qui est supposée récupérer le lieu à partir de la première.
Quand tu écris :
[php]$Lieu="SELECT lieu FROM lieu_intervention WHERE ID_LI='".$Li."' ";//choisit le nom du lieu a supprimer
[/php]
tu veux récupérer le lieu que tu utilise dans la 3° requête :
[php]$temp="SELECT ID_R FROM report WHERE RHost LIKE '".$Lieu."'";//devrait choisir tous les rapports dont ....
[/php]
Mais puisque tu n'as pas exécuter la 1° avant de lancer la 3° requête, la clause WHERE de cette dernière se trouve concaténée avec le contenu de $Lieu qui est la 1° requête (ce qui donne en réalité une 3° requête écrite comme suit :
[color=green]$temp="[b]SELECT ID_R FROM report WHERE RHost LIKE[/color][/b] 'SELECT [b]lieu FROM lieu_intervention WHERE ID_LI='206'' [/b]et c'est ton erreur.
Même remarque pour la requête basée sur le paramètre $temp.
La Correction: Il faut exécuter les requêtes chainées.
[php]$Lieu="SELECT lieu FROM lieu_intervention WHERE ID_LI='".$Li."' ";//choisit le nom du lieu a supprimer
$res = mysql_query($Lieu)or die(mysql_error());
$Lieu = mysql_fetch_array($res);
$query2="DELETE FROM report WHERE RHost LIKE '".$Lieu[0]."'";//devrait supprimer tout les rapports choisit
mysql_query($query2)or die(mysql_error());
$temp="SELECT ID_R FROM report WHERE RHost LIKE '".$Lieu[0]."'"; //devrait choisir tous les rapports dont le nom est similaire
$res = mysql_query($temp)or die(mysql_error());
$temp= mysql_fetch_array($res);
$query3="DELETE FROM item WHERE ReportID ='".$temp[0]."' ";//devrait supprimer toutes les infos liées aux rapports
mysql_query($query3)or die(mysql_error());
$query="DELETE FROM lieu_intervention WHERE ID_LI='".$Li."' ";//supprime le lieu
mysql_query($query)or die(mysql_error());
[/php]