"Query was empty"

"Query was empty" - PHP - Programmation

Marsh Posté le 19-10-2005 à 22:47:11    

Bonjour ! (ou bonsoir..)
 
Il y a quelques années, j'avais pas mal galéré pour faire un moteur de recherche de photos. Recherche dans plusieurs champs de ma table à partir d'un unique champ de formulaire, contenant un ou plusieurs termes avec l'option et/ou.
Vu que je suis une bille en PHP, j'avais eu beaucoup de mal, et grâce aux forums, j'avais enfin réussi !
 
Aujourd'hui, force est de constater que je suis encore plus cave qu'avant, car il semble que le copier/coller ne fonctionne même plus !
Je n'ai fait que changer la variable de connexion à la BDD, et réponse : Query was empty !
Pourtant, d'autres requètes fonctionnent ailleurs avec la même BDD...
 
Voici le code :
<?
mysql_select_db($database_verticlu, $verticlu);
// ...
$motsclef = $_GET['contenu'];
// recherche
if($rechercher && strlen(trim($motsclef)) > 0) // on vérifie presence d'un mot clef
{
// config
 $champs = array("site","contenu","date" ); // champs dans lesquel on recherche
 $mode_defaut = $_GET['et_ou']; // mode de recherche OR ou AND, pour indiquer si on fait un OU ou un ET des mots clefs
 // formatage des mots clef
$motsclef = StripSlashes(trim($motsclef));
 $motsclef = explode(" ",$motsclef);
 // construction de la requete sql
 $sql = "SELECT * FROM photos";
 $passage = 0;
 while(list(,$motclef) = each($motsclef))
{
  $motclef = AddSlashes($motclef);
  if($passage) $sql .= " $mode_defaut "; else $sql .= " WHERE ";
  $sql .= "(";
  reset($champs);
  while(list($cle_champ,$champ) = each($champs)) // parcours des champs
  {
   if($cle_champ > 0) $sql .= " OR "; // si on est deja passe, on ajoute un OR  
   $sql .= " $champ LIKE '%$motclef%'";
  }
  $sql .= " )";
  $passage = 1;
 }
}
// ...
$photos_recherche = mysql_query($sql, $verticlu) or die(mysql_error());
$row_ = mysql_fetch_assoc($photos_recherche);
$totalRows_photos_recherche = mysql_num_rows($photos_recherche);
 
?>  
Merci du coup de pouce !

Reply

Marsh Posté le 19-10-2005 à 22:47:11   

Reply

Marsh Posté le 19-10-2005 à 23:45:35    

Reply

Marsh Posté le 20-10-2005 à 12:42:43    

OK.
J'ai donc remplacé la fin du script par :
echo 'SQL : '.$sql ;
//$photos_recherche = mysql_query($sql, $verticlu) or die(mysql_error());
//$row_ = mysql_fetch_assoc($photos_recherche);
//$totalRows_photos_recherche = mysql_num_rows($photos_recherche);
 
Réponse : le texte qui s'affique est "SQL : " : La requète est vide..

Reply

Marsh Posté le 20-10-2005 à 12:47:21    

ce qui signifie que la condition est fausse :  
 

Code :
  1. if($rechercher && strlen(trim($motsclef)) > 0)


donc à voir de ce côté là...

Reply

Marsh Posté le 20-10-2005 à 13:08:05    

titione a écrit :

ce qui signifie que la condition est fausse :  
 

Code :
  1. if($rechercher && strlen(trim($motsclef)) > 0)


donc à voir de ce côté là...


+1
Et faudra qu'on m'explique pourquoi faire le query en dehors du bloque qui rempli $sql
 


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 20-10-2005 à 15:22:51    

En dehors du fait que j'ai du mal à comprendre la fameuse ligne, je sais juste que le script fonctionne sur un autre site, d'où je l'ai récupéré.
 
Je veux dire que la solution est peut-être plus simple...

Reply

Marsh Posté le 20-10-2005 à 15:30:09    

Ben y'a pas plus simple, la condition renvoie faux. :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 20-10-2005 à 15:54:05    

bon allez idée supplémentaire paske on va pas jouer au jeu du chat et de la souris indéfiniment :
je pense que la variable $rechercher est issu d'un formulaire qui lance la recherche... or depuis quelques temps, il est conseillé d'utiliser les $_REQUEST plutôt que les appels directs (qui peuvent ne pas fonctionner suivant la version de php)
d'oùm remplacer $rechercher par isset($_REQUEST['rechercher']) et je pense que cela ira bcp mieux !!
si tu veux plus d'info voici quelques mots clés : register global et l'objet $_REQUEST
voilà !

Reply

Marsh Posté le 20-10-2005 à 15:57:02    

titione a écrit :

bon allez idée supplémentaire paske on va pas jouer au jeu du chat et de la souris indéfiniment :
je pense que la variable $rechercher est issu d'un formulaire qui lance la recherche... or depuis quelques temps, il est conseillé d'utiliser les $_REQUEST plutôt que les appels directs (qui peuvent ne pas fonctionner suivant la version de php)
d'oùm remplacer $rechercher par isset($_REQUEST['rechercher']) et je pense que cela ira bcp mieux !!
si tu veux plus d'info voici quelques mots clés : register global et l'objet $_REQUEST
voilà !


 
Faux , utiliser $_REQUEST est tout aussi peu securisant que faire un appel direct quand il y a le register global a on .. Il faut utiliser les variables specifiques ($_POST,...)  
 
Deplus ici on aide pas ceux qui pompent des script sans comprendre ... Donc désolé :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 20-10-2005 à 16:00:40    

j'ai pas dit que ct securisant ou pas... j'ai juste dit que ça marchait... sur php 5, il me semble bien par exemple que ce que j'ai dit est vrai.. sur le 4 et ses versions décimales, j'avoue ne plus me souvenir...
 
après effectivement désolé d'avoir tt dit tt de suite mais j'ai l'impression qu'on allait y passer des années sans faire comprendre grand chose... le gars qui te dit "ben non c'est pas ça parce que là bas ça marche..." a priori tu peux pas en faire grand chose (sauf tout le respect que je lui dois)

Reply

Marsh Posté le 20-10-2005 à 16:00:40   

Reply

Marsh Posté le 20-10-2005 à 16:01:46    

esox_ch a écrit :

Deplus ici on aide pas ceux qui pompent des script sans comprendre ... Donc désolé :D


Mais... C'est un forum d'entreaide, non ? [:sisicaivrai]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 20-10-2005 à 16:26:28    

Petite mise au point pour répondre à Titione et à Esox, premièrement, je ne suis pas programmeur mais graphiste. Mon but, c'est la cohérence visuelle, l'ergonomie, ce qui nécessite des scripts qui permettent un fonctionnement intuitif du site.
Maintenant, le PHP m'interesse, mais c'est vrai que je débarque quand même un peu.
Malgré tout, si l'ergonomie du site nécessite une certaine fonctionalité dont je ne maîtrise pas tout, tant pis, j'essaie de trouver une solution. C'est vrai aussi que je peux pas me permettre de passer plusieurs mois sur un script, en attendant d'avoir le niveau pour en comprendre tous les tenants et aboutissants. Donc je pioche des scripts à droite à gauche que je ne colle pas bêtement, mais que j'adapte à mes besoins. Et à moins que le script d'origine n'existe plus, j'inclus toujours mes sources, avec les modifs apportées, pour rendre à César ce qui appartient à César.
 
En l'occurence, j'avais réussi il y a quelques années à adapter ce script de photos. Aujourd'hui, confronté aux mêmes besoins, je ne comprends pas pourquoi le script ne fonctionne plus.
Pour te répondre Titione, c'est pas qu'on peut rien faire de moi, c'est que je pensais pas que le contexte de l'hébergement pouvait influencer le script. Sinon, je ne t'aurais pas répondu "si ça marche ailleurs ça peut pas être ça". D'ailleurs j'aurais appris un truc ! Merci pour ton coup de pouce, je vais voir ce que ça donne avec isset($_REQUEST['rechercher']) et j'irais chercher un peu qui est ce $_REQUEST
 
Et enfin, Esox, si l'on comprend son script, alors on sait le réparer. Si l'on ne le comprend pas, alors on a besoin d'aide. N'as-tu jamais eu besoin d'aide ?

Reply

Marsh Posté le 20-10-2005 à 17:01:34    

Donc :D  
 
Tu es graphiste et non programmeur comme tu le dis .. parfait .. moi c'est le contraire. Alors je te conseille franchement de prendre le boulot de qqn qui s'y connais au lieu de patcher un peu a droite et a gauche ... Donc soit tu prend un script deja fait, soit tu paies un pro pour qu'il te fasse ce que tu veux...
 
Apres,  le fait que tu saches pas que le contexte dans lequel est hebergé un site influence son fonctionnement me semble assez parlant de ton niveau de compétences (je dis pas que c'est mal d'etre debutant, je dis que c'est mal qu'un debutant essaies de faire des trucs qu'il ne maitrise pas).
 
Enfin si tu fais une recherche des questions que j'ai posés tu verras qu'il y en a un packet ... stupides et frequentes pour la pluspart au debut, moins stupides et moins frequentes ensuite quand j'ai compris que le 90% des erreurs que peut rencontrer une personne "normale" en utilisant php sont traitées dans la doc ou dans les sites specialisés...
Qqn qui comprend le script qu'il a pondu peut ne pas etre au courrant de certains bugs (bienqu'en general ils soient mis dans la doc) ou peut ne pas savoir comment s'y prendre pour faire une chose X ou Y...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 20-10-2005 à 17:24:45    

Je ne peux peux que plussoyer intensément aux propos d'esox : +10.000. [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 20-10-2005 à 18:51:57    

Ben tant pis si vous préférez plaider la spécialisation plutôt que l'ouverture. Selon moi, essayer de toucher un peu à des compétences complémentaires à la sienne permet justement de comprendre les potentialités et les contraintes de ces autres compétences, donc d'enrichir sa compétence principale.
 
Autrement dit, il y a des choses que je sais faire ; quasiment 90% de mes besoins en PHP sont des requètes simples qui sont largement suffisantes à mes besoins. Je vais pas arrêter de faire du PHP sous prétexte que j'ai du mal quand ça se complique. Au contraire, j'essaie de comprendre.
 
Notez que quand je demande un coup de main aux fameux "professionnels spécialisés", je me fais rembarrer car je ne suis pas "professionnel spécialisé".
 
Quoi qu'il en soit, merci quand même pour votre contribution sur le Request qui me met sans doute sur la bonne voie  :) (parce qu'à partir du query empty, c'était pas évident pour autant de savoir où chercher dans une doc !)
 
Merci
à+ !

Reply

Marsh Posté le 20-10-2005 à 21:31:59    

yakou > Mais ça n'a rien à voir ! [:mlc]
 
Si tu voyais un des "geeks" d'ici faire du graphisme, y'a fort à parier que tu dirais : "laisse tomber", à juste titre. Chacun son boulot !
 
C'est bien de bidouiller pour le plaisir ou pour un site perso, mais faudrait voir à pas essayer de faire dans le professionnel quand on en est pas un. [:pingouino]
 
Et ce qui se passe, c'est que pas mal de monde s'imagine pouvoir rouler sa bille sans avoir les bases nécessaires.

Reply

Marsh Posté le 20-10-2005 à 22:45:44    

Ça marche !
 
Tu as raison. En fait je suis en train de monter une petite équipe de compétences complémentaires. Mais là je ne connais personne en PHP. Donc je me retrouve à galérer sur le web à faire fonctionner les scripts. Mais c'est clair que je n'ai pas le niveau. Heureusement, la plupart du temps, mes connaissances basiques suffisent (ajout/suppression/modification d'enregistrement).
 
Bon là j'ai réussi à faire fonctionner le script, mais j'avoue d'être frustré de ne pas avoir tout compris...
 
En tout cas, si un peu de boulot freelance ponctuel interesse du monde, avis aux candidatures ! :)

Reply

Sujets relatifs:

Leave a Replay

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