Partage
  • Partager sur Facebook
  • Partager sur Twitter

erreur: "Query was empty" lors d'une requete SQL

Sujet résolu
    13 septembre 2006 à 11:32:09

    Bonjour à tous,

    ET bien voila cela fait un certain temps que je rencontre le problème. Jusqu'ici je ne m'y étais pas attardé, parce que le nombre de membre inscrit sur mon site n'était pas très important. Mais là, ce nobre augmente assez vite depuis quelques jours, et je ne peux donc pas laisser ça comme cela.

    Bon maintenant je m'explique.
    Lorsque qu'un membre souhaite faire une recherche sur le site en interrogeant la base SQL, il obtient une page de résultat, au bas de cette page, un lien "page suivante" apparaît pour l'affichage des réponses suivantes.

    Et c'est la que se pose le problème, lorsque l'on clique sur ce lien on obtien le message que j'ai mis dans le titre à savoir "Query was empty".

    Je n'arrive pas à savoir s'il s'agit d'un problème au niveau de la base SQL (mais à prioris je ne le pense pas) ou si cela vient de mon script.

    Donc voilà ci-dessous mon script en entier. Je remercie vivement toutes personnes qui pourra m'aider, parce que je suis vraiment ennuyé:



    $day = date(d);
    $month = date(m);
    $year = date(Y);
                   
    $del = "delete from job_post where EXday = \"$day\" and EXmonth = \"$month\" and EXyear = \"$year\" ";
    $rdel = mysql_query($del) or die(mysql_error());


    $sch = array();
    if (!empty($_POST[JobCategory]))
    {
    $sch[] = "job_category like '%$_POST[JobCategory]%'";
    }
    if (!empty($_POST[careerlevel]))
    {
    $sch[] = "careerlevel = \"$_POST[careerlevel]\" ";
    }
    if (!empty($_POST[target_company]))
    {
    $sch[] = "target_company = \"$_POST[target_company]\" ";
    }
    if (!empty($_POST[relocate]))
    {
    $sch[] = "relocate = \"$_POST[relocate]\" ";
    }
    if (!empty($_POST[country]))
    {
    $sch[] = "country = \"$_POST[country]\" ";
    }
    if (!empty($_POST[city]))
    {
    $sch[] = "city like '%$_POST[city]%'";
    }
    if (!empty($_POST[state]))
    {
    $sch[] = "state = \"$_POST[state]\" ";
    }
    if (!empty($_POST[kw]))
    {
    $sch[] = "rTitle like '%$_POST[kw]%' or rPar like '%$_POST[kw]%' ";
    }

    if (!$ByPage) $ByPage=100
    if (!$Start) $Start=0;

    if($_POST[sm] == 'or')
    {
    $qs = "select * from job_seeker_info ".(($sch)?"where ".join(" or ", $sch):"")." limit $Start,$ByPage";
    $qss = "select * from job_seeker_info ".(($sch)?"where ".join(" or ", $sch):"");
    }
    elseif($_POST[sm] == 'and')
    {
    $qs = "select * from job_seeker_info ".(($sch)?"where ".join(" and ", $sch):"")." limit $Start,$ByPage";
    $qss = "select * from job_seeker_info ".(($sch)?"where ".join(" and ", $sch):"");
    }
    $rqs = mysql_query($qs) or die(mysql_error());

    $rqss = mysql_query($qss) or die(mysql_error());
    $rr = mysql_num_rows($rqss);



    echo "<table align=center><tr><td>";
    if($rr == '0')
    {
            echo "<br><br><center> <font size=2 face=Arial, Helvetica, sans-serif>Aucun résultat trouvé.</center>";
    }
    elseif($rr == '1')
    {
            echo "<br><br><center> <font size=2 face=Arial, Helvetica, sans-serif>Vos critères de recherche font apparaître <b>un</b> résultats. Si vous souhaitez pouvoir contacter le candidat il faut vous connecter ou vous enregistrer.<br></center>";
            echo "<br><br><left><font size=2 face=Arial, Helvetica, sans-serif>Pour vous connecter allez<a href=\"connection.php\"> </font><font size=2 face=Arial, Helvetica, sans-serif>ICI</a></font>";
    }
    elseif($rr > '1')
    {
            echo "<br><br><center><font size=2 face=Arial, Helvetica, sans-serif> Vos critères de recherche font apparaître <b>$rr</b> résultats. </center>";
            echo "<br><br><center><font color=red size=2 face=Arial, Helvetica, sans-serif> Pour pouvoir accéder aux coordonnées de ces candidats, il vous faut vous connecter ou vous enregistrer. </center>";
    }
    while($as = mysql_fetch_array($rqs))
    {
    $q3 = "select * from job_careerlevel where uname = \"$as[uname]\" ";
    $r3 = mysql_query($q3) or die(mysql_error());
    $a3 = mysql_fetch_array($r3);

                    if($as[careerlevel] == '0')
                    {
                            $clname = 'N/A';
                    }
                    if($as[careerlevel] == '1')
                    {
                            $clname = 'Dès que possible';
                    }
                    elseif($as[careerlevel] == '2')
                    {
                            $clname = 'Cet été';
                    }
                    elseif($as[careerlevel] == '3')
                    {
                            $clname = 'Cet automne';
                    }
                    elseif($as[careerlevel] == '4')
                    {
                            $clname = 'Cet Hiver';
                    }
                    elseif($as[careerlevel] == '5')
                    {
                            $clname = 'Au printemps';
                    }
                    elseif($as[careerlevel] == '6')
                    {
                            $clname = 'Pas urgent';
                    }
                    elseif($as[careerlevel] == '7')
                    {
                            $clname = 'A définir';
                    }

            echo "<br><table align=center width=400 cellspacing=2 >
                    <tr>
                    <td><font size=2 face=Arial, Helvetica, sans-serif>Identité:</td>
                    <td bgcolor=F2F2F2 class=TN href=\"
    javascript:popUp('EmployerView2.php?uname=$as[uname]&ename=$ename')\"> <font size=2 face=Arial, Helvetica, sans-serif>Nom:#####......Prénom:$as[lname] </td>
                    </tr>

                   
                    <tr>
                    <td width=100 valign=top><font size=2 face=Arial, Helvetica, sans-serif>Type de travaux:</td>
                    <td bgcolor=F2F2F2>
                    <font size=2 face=Arial, Helvetica, sans-serif>$as[job_category]
                    </td>
                    </tr>
                    </table>
                    "
    ;
    }


    if($_POST[sm] == 'or')
    {
    $qs2 = "select * from job_seeker_info ".(($sch)?"where ".join(" or ", $sch):"");
    }
    elseif($_POST[sm] == 'and')
    {
    $qs2 = "select * from job_seeker_info ".(($sch)?"where ".join(" and ", $sch):"");
    }
    $rqs2 = mysql_query($qs2) or die(mysql_error());
    $rr2 = mysql_num_rows($rqs2);

    echo "<table align=center width=400><tr>";


            if ($rr2 <= $ByPage && $Start == '0')
            {

            }

            if ( $Start > 0 )
            {
                    $nom1 = $Start - $ByPage;
                    echo "<td align=left><a class=TN href=\"Search2.php?sm=$sm&JobCategory=$JobCategory&careerlevel=$careerlevel&target_company=$target_company&relocate=$relocate&country=$country&city=$city&kw=$kw&Start=$nom1\">previous</a></td>";
            }

            if ($rr2 > $Start + $ByPage  || ($Start == 0 && $rr2 > $ByPage))
            {
                    $nom = $Start + $ByPage;
                    echo "<td align=right><a class=TN href=\"Search2.php?sm=$sm&JobCategory=$JobCategory&careerlevel=$careerlevel&target_company=$target_company&relocate=$relocate&country=$country&city=$city&kw=$kw&Start=$nom\">next</a></td>";
            }

    echo "</tr></table>";

    echo "</td></tr></table>";

    • Partager sur Facebook
    • Partager sur Twitter
      13 septembre 2006 à 11:37:49

      Le problème vient apparemment de tes if/elseif.

      Tu définis une requête comme ça :

      if (blabla)
      {
          $requete="blabla";
      }
      elseif (blabla2)
      {
          $requete="blabla2";
      }
      mysql_query($requete);


      Or, si tu n'entres ni dans le if, ni dans le elseif, $requete n'est pas définie. mysql_query ne contient donc aucune requête, d'où l'erreur.

      J'ai pas regardé ça de plus près, le code est trop long et pas commenté (Et t'as raté ta balise de coloration du code :p )
      • Partager sur Facebook
      • Partager sur Twitter
        13 septembre 2006 à 11:48:52

        Oui c'est vrai que j'ai raté mon code de balise coloration de code. C'est donc recitifé.

        En revanche je suis désolé mais mes compétences étant très très réduite en PHP, je pense comprendre ce que tu veux dire, mais je ne sais pas du tout comment je peux rectifier l'erreur.

        • Partager sur Facebook
        • Partager sur Twitter
          14 septembre 2006 à 10:02:50

          Salut à tous,

          Il n'y a donc personne qui puisse m'aider à résoudre mon problème?

          J'ai beau retourner le srcipt dans tous les sens, je ne sais vraiment pas comment faire. On m'a fait une première réponse, donc je voi à peut près ou une action est nécessaire. L'ennuie est que je n'ai pas les connaissances nécessaires pour corriger.

          Dans l'attente de votre aide.
          Merci.
          William
          • Partager sur Facebook
          • Partager sur Twitter
            14 septembre 2006 à 22:57:10

            Bon et bien je suis un peu déçu, je pensai trouver un peu d'aide sur le forum du site du zero.

            Il n'y ad donc personnepour m'aider :euh:

            s'il vous plait

            william
            • Partager sur Facebook
            • Partager sur Twitter
              15 septembre 2006 à 22:47:28

              Bonsoir,

              Il commence à se faire tard; Mais tant pis je persiste. N'ayant pas eu de réponse à mes précédents post, je commence à me dire que mon problème doit vraiment être ardu.

              D'après Veldryn, l'erreur se situerait au niveau de mes if / elseif. J'ai tanter de comparer mon script avec un autre sur lequel je ne rencontre pas le problème mais jene parvien pas à voir ce qui génère mon message.

              A l'aide. :(
              • Partager sur Facebook
              • Partager sur Twitter
                15 septembre 2006 à 23:08:38

                $day = date(d);
                $month = date(m);
                $year = date(Y);


                Ca a revoir ...Genre avec des ' ^^

                $del = "delete from job_post where EXday = \"$day\" and EXmonth = \"$month\" and EXyear = \"$year\" ";


                Ca aussi ( la Concaténation ca te dis quelquechose ? ) encore que c'est moins important ...

                $_POST[JobCategory]
                Et tous ceux du Genre ... A Revoir Oui Oui :) Genre comme ca
                $_POST['JobCategory']


                Pareil Pour ceux là :
                $as[careerlevel]


                Voilà Normalement ya tout :)


                • Partager sur Facebook
                • Partager sur Twitter
                  15 septembre 2006 à 23:18:10

                  Query was empty veux dire que ta requête ne contient rien...
                  donc tu t'es surement foiré dans ce bout la:

                  if($_POST[sm] == 'or')
                  {
                  $qs = "select * from job_seeker_info ".(($sch)?"where ".join(" or ", $sch):"")." limit $Start,$ByPage";
                  $qss = "select * from job_seeker_info ".(($sch)?"where ".join(" or ", $sch):"");
                  }
                  elseif($_POST[sm] == 'and')
                  {
                  $qs = "select * from job_seeker_info ".(($sch)?"where ".join(" and ", $sch):"")." limit $Start,$ByPage";
                  $qss = "select * from job_seeker_info ".(($sch)?"where ".join(" and ", $sch):"");
                  }

                  et aussi essai de mettre ton code plus propre ça aide...
                  Je peut pas vraiment t'aider pour je suis pas très bon mysql...
                  Edit: grilled...
                  Sinon effectivement je voit pas comment ça se fait que cela pas d'autre erreur que cela...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 septembre 2006 à 23:26:41

                    Bon, je viens de faireles corrections que dream m'a conseillé.Mlaheureusement cela ne change rien , j'obtien toujours la meme erreur.

                    Pour faire suite au mesage de "ProTB webmaster", moi c'est pareil, je ne connais pas grand chose au SQL, pas grand chose en PHP. J'en connai plus en HTML, mais helas, cela ne m'aidera pas pour le problème que je rencontre actuellement.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 septembre 2006 à 23:30:48

                      Euhhh, j'ai oublié: Faudrais mettre les mots clés en majuscule...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        15 septembre 2006 à 23:34:44

                        Que veux tu dire par "mots clé", je ne comprend pas ce que tu veux dire.

                        Merci
                        william
                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 septembre 2006 à 0:28:34

                          Citation : monotach

                          Que veux tu dire par "mots clé", je ne comprend pas ce que tu veux dire.

                          Merci
                          william


                          En clair vas (re)lire les tutos php de m@téo ici.
                          Ce sera la meilleur aide possible.

                          Les mots clés sont par exemple SELECT, WHERE, FROM, ORDER etc...
                          • Partager sur Facebook
                          • Partager sur Twitter
                            16 septembre 2006 à 0:38:06

                            Citation : jefft

                            Euhhh, j'ai oublié: Faudrais mettre les mots clés en majuscule...



                            Remarque : ce n'est pas à cause de ceci que le script déconne, mais c'est juste pour une question de clarté.

                            Et applique déjà les modifs proposées par Redox ('tain, qu'est-ce que vous avez tous à change de nom comme ca ? :p) ; de plus, evite les requetes du type SELECT *, qui servent à rien, à part à bouffer les ressources :-°
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Mon profil Github - Zeste de Savoir, pour la beauté du zeste
                              16 septembre 2006 à 3:18:19

                              Bon, je refais mon explication ^^ Plus claire, plus détaillée.

                              if ($blabla)
                              {
                                  $requete='SELECT champ1...';
                              }
                              elseif ($blabla2)
                              {
                                  $requete='SELECT champ2...';
                              }
                              mysql_query($requete);


                              1er cas



                              $blabla est vrai (true). if ($blabla) sera donc vérifié. Donc on entrera dans l'instruction du premier if, et on aura $requete='SELECT champ1 ...'

                              Le premier if ayant été vérifié, on n'entrera pas dans le elseif (Donc on se moque de savoir si $blabla2 est vrai ou faux).

                              mysql_query($requete); effectuera mysql_query('SELECT champ1 ...'). Pas de problème, donc.

                              2ème cas



                              $blabla est faux. On n'entre pas dans le if. On va donc arriver au elseif. On va tester la valeur de $blabla2. $blabla2 est vrai. On va donc entrer dans le elseif. L'instruction $requete='SELECT champ2 ...'); est effectuée.

                              mysql_query($requete); effectuera donc mysql_query('SELECT champ2 ...'). Là encore, pas de problème.

                              3ème cas



                              $blabla est faux. On n'entre pas dans le if. On va donc arriver au elseif. On va tester la valeur de $blabla2. $blabla2 est faux.. On n'entre donc pas non plus dans le elseif..

                              On arrive donc à mysql_query($requete). Mais que vaut $requete ? Il n'a pas été défini dans le if, ni dans le elseif. C'est donc sa valeur par défaut qui sera utilisée. La valeur par défaut d'une variable, c'est '' (Chaîne vide). On aura donc :

                              mysql_query(''); Résultat :

                              Query was empty


                              Bon, on a retrouvé notre erreur. On sait ce qui la provoque. Elle intervient lorsque $blabla est faux, et lorsque $blabla2 est faux également. Comment corriger ça, alors ? Plusieurs solutions... A toi de choisir celle qui correspond à ton code (Comme je l'ai dit dans mon premier message, ton code est trop long et sans le moindre commentaire, je n'essaierai donc même pas de savoir ce qu'il fait... Ca sera donc à toi de choisir la meilleure solution).

                              Solution 1



                              Définir dans un "else", la requête qui sera effectuée si $blabla est faux et que $blabla2 est faux aussi :

                              if ($blabla) //Si $blabla est vrai
                              {
                                  $requete='SELECT champ1...';
                              }
                              elseif ($blabla2) //Si $blabla est faux, mais que $blabla2 est vrai
                              {
                                  $requete='SELECT champ2...';
                              }
                              else //Si $blabla est faux et que $blabla2 est faux aussi
                              {
                                  $requete='SELECT champ3 ...';
                              }
                              mysql_query($requete); //Dans tous les cas, $requete est définie et est une instruction SQL valide. Il n'y aura donc pas d'erreur.


                              Solution 2



                              Tester si $requete est définie. Si c'est le cas, on envoie cette requête au serveur MySQL. Sinon, on ne fait rien :

                              if ($blabla) //Si $blabla est vrai
                              {
                                  $requete='SELECT champ1...';
                              }
                              elseif ($blabla2) //Si $blabla est faux, mais que $blabla2 est vrai
                              {
                                  $requete='SELECT champ2...';
                              }
                              if (isset($requete)) //Si on a défini $requete auparavant
                                  mysql_query($requete) //On applique la requête


                              Il y a probablement d'autres solutions. Si aucun de ces deux solutions ne te convient, cherche un peu par toi-même comment être sûr que mysql_query contienne une requête valide. Il faut être capable d'envisager tous les cas de figure.

                              Encore une fois, la solution la plus adaptée dépend de ce que tu veux faire. Etant donné que je ne sais pas ce dont tu as besoin, je ne peux pas t'aider plus que ça.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                16 septembre 2006 à 13:31:00

                                Bonjour et merci à tous.

                                Tout d'abord,merci pour toutes les réponses que vous avez fait. Je vais tester les différentes solutions proposées.

                                Il y a toutefois une petite chose que je dois préciser, bien que certain s'en doute probablement. Ce n'est pas moi qui ai pondu ce script. Il s'agit d'un ensemble de script déjà existant (en anglais) que j'ai traduis et adapté à ma sauce, en fonction de ce que je voulai faire.
                                Pour infos, et pour que vous puissiez mieux voir et comprenre de quoi je vous parle, voici l'adresse du site: http://www.petits-travaux.fr.

                                Voilà, tout cela pour dire que vous comprendrez sans doute mieux pourquoi j'ai du mal avec PHP et sql. J'ai su adapter les script en fonction de ce que je voulai en modifiant le code html, et parfois un peu le code php (mais vraiment un tout petit peu.) mais c'est tout.

                                Voila, bref, merci à tous, je vais maintenant tester / corriger en fonction de ce que vous m'avez conseillé. Bien sur, je vous tiens au courant.

                                William
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  20 septembre 2006 à 15:49:02

                                  Bonjour,

                                  Juste pour vous informer que j'ai fini par trouver l'erreur. Je n'ai pas beaucoup de mérite, puisque je me suis servi de vos postes pour trouver d'ou provenait l'erreur ainsi que d'un autre script presque identique mais avec lequel je n'avais pas de problème.
                                  Alors pour infos voici la portion de script que j'ai corrigé:

                                  if($sm == 'or') <!-- Première correction sur cette ligne-->
                                  {
                                          $qs = "SELECT * FROM job_seeker_info ".(($sch)?"WHERE ".join(" or ", $sch):"")." LIMIT $Start,$ByPage";
                                          $qss = "SELECT * FROM job_seeker_info ".(($sch)?"WHERE ".join(" or ", $sch):"");
                                  }


                                  elseif($sm == 'and')<!-- Deuxième correction sur cette ligne-->
                                  {
                                          $qs = "SELECT * FROM job_seeker_info ".(($sch)?"WHERE ".join(" and ", $sch):"")." LIMIT $Start,$ByPage";
                                          $qss = "SELECT * FROM job_seeker_info ".(($sch)?"WHERE ".join(" and ", $sch):"");
                                  }


                                  Et également à cet endroit:

                                  if($sm == 'or') <!-- autre correction sur cette ligne -->
                                  {
                                          $qs2 = "SELECT * FROM job_seeker_info ".(($sch)?"WHERE ".join(" or ", $sch):"");

                                  }
                                  elseif($sm == 'and') <!-- Et ici la dernière correction ->>
                                  {
                                          $qs2 = "SELECT * FROM job_seeker_info ".(($sch)?"WHERE ".join(" and ", $sch):"");

                                  }


                                  Encore un grand merci à tous.
                                  William
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  erreur: "Query was empty" lors d'une requete SQL

                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                  • Editeur
                                  • Markdown