Requéte vide !!

Bonjour,

Pb req recherche bien: Query est vide !!!

quelq'un peut me dire ca signifie quoi ??? SVP

Merci de répondre.
Configuration: Windows XP
Internet Explorer 6.0

27 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

Plusieurs échanges portent sur une erreur récurrente lors de la construction d'une requête SQL de recherche affichant « Query est vide », en filtrant descriptif_logement par prix, surface, région et type de bien. Plusieurs réponses insistent sur le traitement des types de données et l'usage correct de BETWEEN, ainsi que sur le positionnement des guillemets autour des variables budg_max, surf_max et region et sur les espaces. Certaines réponses montrent qu'une partie des données peut être texte alors que d'autres sont numériques, d'où l'importance d'éviter les conversions implicites et de tester les requêtes sans jointures lorsque le message d'erreur persiste.

Bobot (l’IA à votre service)
  1. Sans le bout de ton code concerné ça va être difficile de te répondre ...
    D'autant plus que tu ne dis même pas dans quel langage
    1. je m'excuse!!

      c'est du PHP et mon code c'est un code de recherche
      voila je le met :

      <?php
      // connexion a la base de données
      ...
      mysql_connect($localhost,$user,$password) or die ("Pb connexion serveur ".mysql_error());
      mysql_select_db($base) or die ("Pb selection base ".mysql_error());

      //Récupération des variables

      if ( (isset($_POST['Transaction'])) && (isset($_POST['region'])) && (isset($_POST['typeb'])) && (isset($_POST['budg_min']))&&

      (isset($_POST['budg_max'])) &&(isset($_POST['surf_max']))&& (isset($_POST['surf_min'])) )

      {

      $A=$_POST['Transaction'];
      $region=$_POST['region'];
      $typeb=$_POST['typeb'];
      $budg_min=$_POST['budg_min'];
      $budg_max=$_POST['budg_max'];
      $surf_max=$_POST['surf_max'];
      $surf_min=$_POST['surf_min'];
      $nbrep=$_POST['nb_piece'];

      }
      ?>
      <?php
      //Resultats de la recherche
      $req_recherche=mysql_query( "SELECT * FROM descriptif_logement WHERE
      (PRIX_LOG BETWEEN '".$budg_max."' AND '".$budg_min."' )AND (SURFACE_LOG BETWEEN '".$surf_max."' AND '".$surf_min."') AND REGION_LOG='".$region."' AND LIBE_TYPE_BIEN='".$typeb."' AND NBREP_LOG='".$nbrep."' ORDER BY IDLOG ");

      $reponse_rech=mysql_query($req_recherche) or die ("Pb req recherche bien: ".mysql_error());
      if(mysql_num_rows($reponse_rech >0))
      {
      //si on a des resultats
      //affichage
      while($row=mysql_fetch_array($reponse_rech))
      {
      echo '<tr>';
      echo '<td>'.$row["IDTRANSACTION"].'</td>';
      echo '<td>'.$row["prix"].'</td>';
      echo '<td>'.$row["surface"].'</td>';
      echo '<td>'.$row["region"].'</td>';
      echo '<td>'.$row["NBRE_PIECES"].'</td>';
      echo '</tr>';

      echo " $row"; }

      }

      else
      {
      echo "Aucun bien ne correspond à votre recherche";
      }

      ?>
      <?php
      mysql_close(); //fermeture connexion à la base
      ?>
  2. soit plus precis
    1. voila je dois faire une recherche sur ma base de donnée, apartir d'un formulaire saisie par l'utulisateur qui contient

      type de transaction: vente, location
      tybe bien: maison, villa, ...
      region:...
      nombre de pieces: 1,2,3,4...
      srface : surf_min and surf_max
      budget: budg_min and budg_max

      je dois faire la jointure entre 3 tables : descriptif_logement, transaction, type_bien

      a partir du formulaire j'ai posté les variables, puis le traitement de la requéte mais a chaque fois j'ai ce msg d'erreur :

      Pb req recherche bien: Query est vide

      et je compend pas !

      Merci.
  3. ben excuse moi je ne connais pas le type de tes donées mais je me rend compte à première vue que toute tes données sont de type chaine de caractere ce que je ne trouve pas trop évident à mon avis en voulant faire un BETWEEN avec les chaine de caractère car tu met la variable $bugdg_max entre (') simple cote ce qui transforme directement la valeur de $budg_max en caractère moi je suis donc partie de la base que certaines données sot de type numérique.

    $req_recherche=mysql_query( "SELECT * FROM descriptif_logement WHERE
    (PRIX_LOG BETWEEN '".$budg_max."' AND '".$budg_min."' )AND (SURFACE_LOG BETWEEN '".$surf_max."' AND '".$surf_min."') AND REGION_LOG='".$region."' AND LIBE_TYPE_BIEN='".$typeb."' AND NBREP_LOG='".$nbrep."' ORDER BY IDLOG ");


    $req = "SELECT * FROM descriptif_logement WHERE PRIX_LOG BETWEEN ".$budg_max." AND ".$budg_min."
    AND SURFACE_LOG BETWEEN ".$surf_max." AND ".$surf_min." AND REGION_LOG='".$region."' AND LIBE_TYPE_BIEN='".$typeb."' AND NBREP_LOG=".$nbrep." ORDER BY IDLOG ";

    $req_recherche = mysql_query($req);

    vérifie bien les espaces entre les EXPRESSIONS de SQL et tes variables si non garrrrrrr à une erreur warning bien jolie.. ben essaie ça voir je suis encore là.
    1. je m'excue pr ce retard William, je vais l'essayé mnt , et je te diré le resultat.
      Merci.
    2. j'ai eu ca :

      Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp12-8\www\web_agence\agence\resultat_rech.php on line 447

      Aucun bien ne correspond à votre recherche
    3. $req = "SELECT * FROM descriptif_logement WHERE PRIX_LOG BETWEEN ".$budg_max." AND ".$budg_min."
      AND SURFACE_LOG BETWEEN ".$surf_max." AND ".$surf_min." AND REGION_LOG='".$region."' AND NBREP_LOG=".$nbrep." ORDER BY IDLOG ";

      $req_recherche= mysql_query($req) or die ("Pb req recherche bien: ".mysql_error());

      if(mysql_num_rows($req_recherche >0))
      {
      //si on a des resultats
      //affichage
      while($row=mysql_fetch_array($reponse))......................................
      }
  4. if(mysql_num_rows($req_recherche >0))

    non plus tot

    if(mysql_num_rows($req_recherche >)0)
    1. Parse error: parse error in c:\program files\easyphp12-8\www\web_agence\agence\resultat_rech.php on line 447
      c'est la ligne :
      if(mysql_num_rows($req_recherche >)0)
    2. c'est bon c'était le ">"
    3. est ce que c'est normale j'ai pas de resultat !!

      je dois avoir au moin un car j'ai des dinnées dans ma base!!
  5. $req_recherche= mysql_query($req) or die ("Pb req recherche bien: ".mysql_error());

    if(mysql_num_rows($req_recherche >0))
    {
    //si on a des resultats
    //affichage
    while($row=mysql_fetch_array($reponse))......................................
    }


    $req_recherche= mysql_query($req) or die ("Pb req recherche bien: ".mysql_error());

    if(mysql_num_rows($req_recherche )>0)
    {
    //si on a des resultats
    //affichage
    while($row=mysql_fetch_array($reponse)){

    }......................................
    }

    1. comment je peut traduire ca en PHP :

      idcategories=0 ou idcategories=1 ou idcategories=2
  6. ok
    attend il affiche une erreur?
    1. non, pas une erreur justement, quelque soit mon choix dans le formulaire dans la page "html" il me retourne comme
      resultat : "Aucun bien ne correspond à votre recherche" malgré que j'ai changer la requéte !!
  7. s'il n'y a pas d"erreur j evais te demander de vérifier 2 chose importantes

    1. vérifie d'abord les types de données. tu t'assure qu'ils sont compatibles avec les types introduit par ta requette
    2. vérifie que les condition d'au moins un enregistrement de ta table vérifient celles que tu essaie de faire entrer dans la table car je voie que la requete utilise trop de condition donc tu doit au moins vérifier qu'il existe un enregistrement dans la table qui répond à ce que tu veux.

    fait moi signe.
    1. est ce que je peu t'envoyé la table et les types des champ?
  8. en PHP ou en SQL?

    en PHP

    idcategories=0 ou idcategories=1 ou idcategories=2

    if( (idcategories == 0) || (idcategories == 1) || (idcategories == 2)){

    }
    1. Ok
      je voulais te le demander tout à l'heure essaie de l'envoyer voir
      la structure complete
      1. DESCRIPTIF_LOGEMENT :

        IDLOG: INT
        IDCATEGORIES: INT (clé etranger de la table transaction concernant la transaction "vente" ou "location")
        IDVILLE: INT
        PRIX_LOG: decimal(10,0)
        SURFACE_LOG: decimal(10,0)
        REGION_LOG: varchar(30)
        NBREP_LOG: decimal(2,0)
        ETAGE_LOG: varchar(20)
        PHOTOS_LOG: text
        CARACTERISTIQUES_LOG: mediumtext
        1. la strucutres de mes tables je les ai généré depuis "PowerDesigner".
          c'est la ou j'ai affecté le type de chaque champ et quand j'ai exécuter le fichier sql.txt sou PhpMyadmin j'ai eu ce que je t'ai envoyé.
      2. et ta requette que tu veux est la quelle
        dit moi exactement ce que tu veux afficher je le test et je te donne la solution
        1. ok, j'aprécie bcp ton aide , Merci William

          Alors:

          c'est mon formulaire :

          * vente location --->table categories qui a un clé étranger dans la table descriptif_logement

          * region (selection liste deroulante) --->descriptif_logement contient déja un champ region_log

          * type biens (selection liste deroulante) --->table type_bien qui n'a pas de clé étranger ds la table descriptif_logement

          * nbre de piéces --->descriptif_logement contient déja un champ nbrep_log

          * surface --->descriptif_logement contient déja un champ Surface_log

          * budget --->descriptif_logement contient déja un champ Prix_log


          la requéte consiste à ; quelque soit le chois selectionne du visiteur dans la premiére page du formulaire, la requéte va chercher et comparer les données saisie par rapport a ce qu'on dans la base et afficher le resultat.

          (comment je peu envoyer une image qui contient un imprime écran sur ce site, car j'explique pas trés bien) !!

          Merci bcp.merci
      3. OK
        je voie mais tu as combien de table en tout?
        donne moiles table avec les attributs sous la forme

        TABLE1 (att_1,att_2,att_3...)
        TABLE2 (att_a,att_b,...)
        c'est plus comprehensible ainsi et ça facilite la tache
        1. Les voila c'es mon MLD :

          Admin (idadmin, login, password)

          Alerte_mail (idalertemail, nom_alerte, prenom_alerte, adresse_alerte, cp_alerte, localite, tet_alerte, jour, mois, annee, region_alerte, type_bien_alerte, transaction_alerte, surface_alerts, nbre_pieces_alerte, budget_alerte, nationalite, sexe)

          Catégories (idcategories, libe_categorie)

          Descriptif_logement (idlog, #idcategories, #idnouveautes, #idprop, #idville, surface_log, prix_log, Nbrep_log, etage_log, caractéristiques_log, photo_logo, region_log)

          Consulte (#idutilisateur, #idlog)

          Etat (idEtat, #idtransaction, libe_etat)

          Livreor (idlivreor, pseudo, message)

          Newsletter (idnews, e_mail)

          Nouveautes (idnouveautes, libe_nouveautes, photos_nouv)

          Galeries (idgaleries, #idlog, libe_galeries, description, picture, extension)

          Proprietaire (idprop, nom_prop, prenom_prop, adresse_log, mail_log)

          Région (idregion, libe_region)

          Subir (#idtypebien, #idtransaction)

          Transaction (idtransaction, libe_transaction)

          Type_logement (idtypelog, #idcategories, libe_type_bien)

          Utulisateur (idutilisateur, #idnews, #livreor, #idalertemail, #idcontact)

          Ville (idville, #idregion, libe_ville)

          Contact (idcontact, nom_contact, prenom_contact, adresse_contact, CP_contact, ville_contact, tel_contact, pays_contact, fax_contact, email_contact, commentaires)
      4. excuse moi une minute

        $req = "SELECT * FROM descriptif_logement WHERE PRIX_LOG BETWEEN ".$budg_max." AND ".$budg_min."
        AND SURFACE_LOG BETWEEN ".$surf_max." AND ".$surf_min." AND REGION_LOG='".$region."' AND LIBE_TYPE_BIEN='".$typeb."' AND NBREP_LOG=".$nbrep." ORDER BY IDLOG ";

        je ne trouve pas le champ (LIBE_TYPE_BIEN) dans la table descriptif_logement

        je le compare avec quoi ? car je ne l'ai pas...
        1. Libe_type_bien apprtient a la table type_logement (tu ois le trouver dans le dernier msg), j'ai essayé de faire la

          jointure des deux table mais ca m'a afficher la fameuse "Query est vide" donc je l'ai enlever afin de testé si ca marche

          avant avec les champs propre a la table descriptif_logement sans faire de jointure.
      5. Ok cotta voici une version simple de ton Script qui fonctionne bien chez moi j'ai dû ommetre certains truc pour que ça donne, j'ai pas pris en compte les jointures on peut les voir a près juste essaie d'abrd celui ci et on vera
        1. 
          <body>
          <table width="405" height="68" align="center">
            <tr>
              <td><form id="form1" name="form1" method="post" action="">
                <table width="318" align="center">
                  <tr>
                    <td width="114">&nbsp;</td>
                    <td width="162">&nbsp;</td>
                    <td width="26">&nbsp;</td>
                  </tr>
                  <tr>
                    <td>A</td>
                    <td width="162"><label>
                      <input name="Transaction" type="text" id="Transaction" />
                    </label></td>
                    <td width="26">&nbsp;</td>
                  </tr>
                  <tr>
                    <td>region</td>
                    <td><label>
                      <input name="region" type="text" id="region" />
                    </label></td>
                    <td>&nbsp;</td>
                  </tr>
                  <tr>
                    <td>budg_min</td>
                    <td><label>
                      <input name="budg_min" type="text" id="budg_min" />
                    </label></td>
                    <td>&nbsp;</td>
                  </tr>
                  <tr>
                    <td>budg_max</td>
                    <td><label>
                      <input name="budg_max" type="text" id="budg_max" />
                    </label></td>
                    <td>&nbsp;</td>
                  </tr>
                  <tr>
                    <td>surf_min</td>
                    <td><label>
                      <input name="surf_min" type="text" id="surf_min" />
                    </label></td>
                    <td>&nbsp;</td>
                  </tr>
                  <tr>
                    <td>surf_max</td>
                    <td><label>
                      <input name="surf_max" type="text" id="surf_max" />
                    </label></td>
                    <td>&nbsp;</td>
                  </tr>
                  <tr>
                    <td>nbrep</td>
                    <td><label>
                      <input name="nb_piece" type="text" id="nb_piece" />
                    </label></td>
                    <td>&nbsp;</td>
                  </tr>
                  <tr>
                    <td>typeb</td>
                    <td><label>
                      <input name="typeb" type="text" id="typeb" />
                    </label></td>
                    <td>&nbsp;</td>
                  </tr>
                  <tr>
                    <td>&nbsp;</td>
                    <td>&nbsp;</td>
                    <td>&nbsp;</td>
                  </tr>
                  <tr>
                    <td>&nbsp;</td>
                    <td><label>
                      <input type="submit" name="Submit" value="Envoyer" />
                    </label></td>
                    <td>&nbsp;</td>
                  </tr>
                </table>
                  </form>
              </td>
            </tr>
          </table>
          
          <p>&nbsp;</p>
          <p>&nbsp;</p>
          
          <?php
          
          // connection à la BDD
          
          mysql_connect('localhost','root','');
          mysql_select_db('test');
          
          
          // contruction du tableau
          
          echo "<center><table  border=1 bordercolor='#000000' >";
                                    echo "<tr face='arial' size='1' bgcolor='#ff6600' >";
                                    echo "<td ><b><font face='Arial' size='2'>IDTransaction</font></b> </td>\n";
                                    echo "<td ><font face='Arial' size='2'> Prix</font></b> </td>\n";
                                    echo "<td ><b><font face='Arial' size='2'> Surface</font></b> </td>\n";
                                    echo "<td><b><font face='Arial' size='2'> Region</font> </b> </td>\n";
          						  echo "<td><b><font face='Arial' size='2'> Nombre de Piéce</font> </b> </td>\n";
          						  
          						  echo "</tr>";
          
          if(isset($_POST['Transaction']) && isset($_POST['region']) && isset($_POST['budg_max']) && isset($_POST['budg_min']) && isset($_POST['surf_max']) && isset($_POST['surf_min']) && isset($_POST['nb_piece'])){
          
          $A=$_POST['Transaction'];
          $region=$_POST['region'];
          $typeb=$_POST['typeb'];
          $budg_min=$_POST['budg_min'];
          $budg_max=$_POST['budg_max'];
          $surf_max=$_POST['surf_max'];
          $surf_min=$_POST['surf_min'];
          $nbrep=$_POST['nb_piece']; 
          
          $req = "SELECT * 
                  FROM descriptif_logement 
          		WHERE (PRIX_LOG BETWEEN ".$budg_min." AND ".$budg_max.")  
          		AND (SURFACE_LOG BETWEEN ".$surf_min." AND ".$surf_max.")  
          		AND REGION_LOG LIKE '".$region."' 
          		AND NBREP_LOG = ".$nbrep." 
          		ORDER BY IDLOG";
          
          $result = mysql_query($req);
          
          while($rest = mysql_fetch_array($result)){
          	echo '<tr>';
          //	echo '<td>'.$row["IDTRANSACTION"].'</td>';
          	echo '<td>'.$rest["IDCATEGORIES"].'</td>';  
          	echo '<td>'.$rest["PRIX_LOG"].'</td>';
          	echo '<td>'.$rest["SURFACE_LOG"].'</td>';
          	echo '<td>'.$rest["REGION_LOG"].'</td>';
          	echo '<td>'.$rest["ETAGE_LOG"].'</td>';
          	echo '</tr>'; 
          }
          
          echo "</table></center>";
          
          mysql_close();
          }
          else{
          echo "Aucun resultat";
          }
          
          ?>
          </body>
          
          
          1. Merci William je vais essayé ca toute de suite, et je m'excuse ca fait tard et tu ma aider, Merci encore.
        2. et voici la table qui va avec j'ai du entrer les données de la table sous MySQL tu peux en faire autant

          fait juste le copie colé pour vérifier et de là on poura modifier avec les jointures par la suite les données suivante vérifient

          il y'a le premier et le dernier champs du formulaire n'interviennent pas dans la requette mais tu doit introduire les donner lors de l'envoie dans ces champs car la condition SI est valable pour ces champs en d'autres termes tous les champs du formulaires doivent etre rempli pour qu'il y'ai une execution et pour la région essaie de metre paris, les autres tu encadre la surface, le prix de la base ...
          s'il y'a un pb je ss encore debout

          j'ai copié ce code sous MySQL tu peux simplement prendre les valeurs et les entrer dans la table et laissé le code de la requette(c'est juste pour te montrer la table que j'ai utilisé)
          INSERT INTO `descriptif_logement` ( `IDLOG` , `IDCATEGORIES` , `IDVILLE` , `PRIX_LOG` , `SURFACE_LOG` , `REGION_LOG` , `NBREP_LOG` , `ETAGE_LOG` , `PHOTOS_LOG` , `CARACTERISTIQUES_LOG` ) 
          VALUES (
          '1', '11', '12', '124', '243', 'Paris', '4', 'je ne sais pas ', 'trop de chose', 'encore de chose...'
          );
          
          
          


          Bonne chance
          1. Encore Merci, je vais le faire mnt, a plus tard..
        3. de rien nous sommes là pour nous entraider
          1. ca marche tjs pas, j'ai seulement l'entéte du tableau dans la page "resultat_recherche.ph"..

            Pardon pour ma question: mais pourquoi les deux tableau ?
        4. les deux tableau juste pour la présentation

          moi le code fonctionne chez moi je l'ai tester
          as tu copier exactement le même code? sans rien modifié et remplir la table avec les données que je t'ai remises?
          si tel est le cas ça devrai fonctionner
          1. ok,je vais le refaire.

            enfaite moi ds ma table descriptif_logement elle est rempli par des données et mon formulaire c'est dans une autre page ,càd, l'affichage de la resultat de la recherch et le formulaire c'est pa dans la méme page..
            est ce que ca pose un probléme ca???
          2. ce que je comprend c'est s'il ya une faute il devra me l'afficher !!!
            mais il retourne aucune resultat!!!

            tu peu me passer ton e-mail, je vais t'envoyé mes 2 pages html et php. complet
            si c'est pas tros demandée .
        5. pas du tout
          il suffira dans ce cas de renseigner le parametre ACTION du formulaire par le nom de ta feuille qui porte ton script PHP et là le tableau qui affiche les données devra etre dans cette page PHP

          et vérifie aussi le nom de la BDD et de la table moi j'ai utilisé les noms arbitraire
          1. et comment je vais pour t'envoyé?! :>
        • 1
        • 2