Modérateur PHPfrance |
2575 Messages
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());
--------
//////----
//---
//----
//////
-------
//---
//----
//---
//----
//---
//
------
//////----
//////-----
//////
-----
||--------
||--
||---
||
Prendre le recul n'est pas une perte de temps.
ps:
Affrontez moi dans l'arène