probleme de concaténation requete mysql

probleme de concaténation requete mysql - PHP - Programmation

Marsh Posté le 06-08-2004 à 13:51:49    

Bonjour @ tous, j'ai codé un moteur de recherche en php qui ne cherche que sur une seule table ici t_signalisation
 
l'utilisateur peut rentrer a la fois 0 criteres de recherche et dans ce cas affiche toutes les signalisation ou une combinaison des 16 criteres de recherche pour l'affinage de la requete. Si le champs est renseigné, alors j'ajoute une condition AND dans la requete mysql en procédant par concaténation cependant j'ai cette erreur qui est affichée:

Citation :


Notice: Use of undefined constant query - assumed 'query' in c:\program files\easyphp1-7\www\suivianous\traitementrecherchesig.php on line 321
ERREUR" query You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'sig_TypeResolution LIKE 1' at line 7


 
Voici le code correspondant.
 
Merci d'avance pour votre aide
 

Code :
  1. if($appsig !=="" ){
  2. $requete1= "SELECT app_Id FROM t_application
  3. WHERE app_Libelle = '$appsig'";
  4. $query1 = mysql_query($requete1) or die ('ERREUR" '.requete1.' '.mysql_error());
  5. while ($row=mysql_fetch_array($query1)){
  6. $value1= $row["app_Id"];
  7. }
  8. }
  9. if($initsig !=="" ){
  10. $requete2= "SELECT ini_id FROM t_initiateur
  11. WHERE ini_libelle = '$initsig'";
  12. $query2 = mysql_query($requete2) or die ('ERREUR" '.requete2.' '.mysql_error());
  13. while ($row=mysql_fetch_array($query2)){
  14. $value2= $row["ini_id"];
  15. }
  16. }
  17. if($affsig !=="" ){
  18. $requete3= "SELECT uti_IdUtilisateur FROM t_utilisateur
  19. WHERE uti_NomUtilisateur = '$affsig'";
  20. $query3 = mysql_query($requete3) or die ('ERREUR" '.requete3.' '.mysql_error());
  21. while ($row=mysql_fetch_array($query3)){
  22. $value3= $row["uti_IdUtilisateur"];
  23. }
  24. }
  25. if($statutsig !=="" ){
  26. $requete4= "SELECT st3_StatutId FROM t_statutsS3A
  27. WHERE st3_Libelle = '$statutsig'";
  28. $query4 = mysql_query($requete4) or die ('ERREUR" '.requete4.' '.mysql_error());
  29. while ($row=mysql_fetch_array($query4)){
  30. $value4= $row["st3_StatutId"];
  31. }
  32. }
  33. if($resolsig !=="" ){
  34. $requete5= "SELECT type_id FROM t_typeresolution
  35. WHERE type_libelle = '$resolsig'";
  36. $query5 = mysql_query($requete5) or die ('ERREUR" '.requete5.' '.mysql_error());
  37. while ($row=mysql_fetch_array($query5)){
  38. $value5= $row["type_id"];
  39. echo $value5;
  40. }
  41. }
  42. // sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
  43. if (!isset($_GET['debut'])) $debut = 0;
  44. else $debut = $_GET['debut'];
  45. $query = "SELECT sig_ApplicationId, sig_statutID, sig_NumeroSignalisation, sig_Titre,DATE_FORMAT(sig_DateReception,'%d/%m/%Y') AS sig_DateReception, DATE_FORMAT(sig_DateDebut,'%d/%m/%Y') AS sig_DateDebut, sig_IdAffectation,sig_ReferenceHDE,sig_ReferenceMOA, sig_PMOA, sig_StatutID
  46. FROM t_signalisation
  47. WHERE sig_Titre=sig_Titre";
  48. $counter = 0;
  49. if ($numsig  !== "" ) {
  50. if ($counter>=0) //$query .= " and ";
  51. $query .= "AND sig_NumeroSignalisation like '%$numsig%'";
  52. $counter++;
  53. }
  54. if ($titresig !== "" ) {
  55. if ($counter>=0) //$query .= " and ";  
  56. $query .= "AND sig_Titre like '%$titresig%'";
  57. $counter++;
  58. }
  59. if ($descsig !== "" ) {
  60. if ($counter>=0) //$query .= " and ";  
  61. $query .= "AND sig_Description like '%$descsig%'";
  62. $counter++;
  63. }
  64. if ($comsig !== "" ) {
  65. if ($counter>=0) //$query .= " and ";  
  66. $query .= "AND sig_Commentaire like '%$comsig%'";
  67. $counter++;
  68. }
  69. if ($appsig !== "" ) {
  70. if ($counter>=0) //$query .= " and ";  
  71. $query .= "AND sig_ApplicationId like '%$value1%'";
  72. $counter++;
  73. }
  74. if ($versionlot !== "" ) {
  75. if ($counter>=0) //$query .= " and ";  
  76. $query .= "AND sig_Version like '%$versionlot%'";
  77. $counter++;
  78. }
  79. if ($resolsig !== "" ) {
  80. if ($counter>=0) //$query .= " and ";  
  81. $query .= "AND sig_TypeResolution LIKE $value5";
  82. $counter++;
  83. }
  84. if ($initsig !== "" ) {
  85. if ($counter>=0) //$query .= " and ";  
  86. $query .= "AND sig_Initiateur like '%value2%'";
  87. $counter++;
  88. }
  89. if ($affsig !== "" ) {
  90. if ($counter>=0) //$query .= "and";  
  91. $query .= "AND sig_IdAffectation like '%$value3%'";
  92. $counter++;
  93. }
  94. if ($prioritesig !== "" ) {
  95. if ($counter>=0) //$query .= "and";  
  96. $query .= "AND sig_Priorite like '%$prioritesig%'";
  97. $counter++;
  98. }
  99. if ($refhdesig !== "" ) {
  100. if ($counter>=0) //$query .= " and ";  
  101. $query .= "AND sig_ReferenceHDE like '%$refhdesig%'";
  102. $counter++;
  103. }
  104. if ($refsuexsig !== "" ) {
  105. if ($counter>=0) //$query .= " and ";  
  106. $query .= "AND sig_ReferenceSuEx like '%$refsuexsig%'";
  107. $counter++;
  108. }
  109. if ($pmoasig !== "" ) {
  110. if ($counter>=0) //$query .= " and ";  
  111. $query .= "AND sig_PMOA like '%$pmoasig%'";
  112. $counter++;
  113. }
  114. if ($statutsig !== "" ) {
  115. if ($counter>=0) //$query .= " and ";    
  116. $query .= "AND sig_StatutID like '%$value4%'";
  117. $counter++;
  118. }
  119. if ($refmoasig !== "" ) {
  120. if ($counter>=0) //$query .= " and ";  
  121. $query .= "AND sig_ReferenceMOA like '%$refmoasig%'";
  122. $counter++;
  123. }
  124. if ($refitsig !== "" ) {
  125. if ($counter>=0) //$query .= " and ";  
  126. $query .= "AND sig_ReferenceFO like '%$refitsig%'";
  127. $counter++;
  128. }
  129. // on exécute la requête
  130. $req = mysql_query($query)or die ('ERREUR" '.query.' '.mysql_error());

Reply

Marsh Posté le 06-08-2004 à 13:51:49   

Reply

Marsh Posté le 06-08-2004 à 13:53:39    

rajoute un espace devant tes AND... ou apres la fin de ton Where :p

Reply

Marsh Posté le 06-08-2004 à 13:57:32    

d'autre part tu aurais pu faire une fonction pour effectuer la concatenation des AND, type :

Code :
  1. function toto($counter,$NameChamp,$valeur,)
  2. {
  3.    if ($valeur !== "" ) { 
  4.     if ($counter>=0) //$query .= " and ";
  5. {
  6.       $counter++;
  7.       return "AND ".$NameChamp." like '%$refitsig%'";
  8. }
  9.    
  10. }
  11. c'eut ete plus joli mais c une question personnelle :p (ca evite aussi de répeter du code dans les pages)

Reply

Marsh Posté le 06-08-2004 à 14:02:53    

oui c vrai mais pour le moment c du prototypage.
 
Merci encore pour ton aide j'ai rajouté un espace et ca marche comme quoi certaine erreurs ne tiennent qu'à peu de chose.
 
Par contre si je rajoute une contraite DESC dans la requete bah la ca marche plus.
 
Aurais-tu une idée ?

Reply

Marsh Posté le 06-08-2004 à 14:04:24    

si tu rajoutes uniquement DESC, cela ne marchera pas , DESC s'utilise avec ORDER BY
tu ajoutes ORDER BY DESC a la fin de la requete et c'est bon :p

Reply

Marsh Posté le 06-08-2004 à 14:12:45    

Bah apparement non si je lui dit  
ORDER BY sig_NumeroSignalisation DESC
 
ca ne marche pas

Reply

Marsh Posté le 06-08-2004 à 14:18:20    

ahhh ca c'est etonnant, tu peux faire un echo de ta querry a la fin du fichier pour voir stp ?

Reply

Marsh Posté le 06-08-2004 à 14:27:54    

j'ai trouver le truc il fallait faire encore une concaténation a la fin
 
$query .=" ORDER BY sig_NumeroSignalisation DESC";
 
Merci encore pour ton aide

Reply

Marsh Posté le 06-08-2004 à 14:33:32    

de rien :p

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed