Requéte vide !!

cotta Messages postés 308 Statut Membre -  
cotta Messages postés 308 Statut Membre -
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

  • 1
  • 2
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.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Utilisateur anonyme
     
    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
    0
    1. cotta Messages postés 308 Statut Membre 3
       
      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
      ?>
      0
  2. william7007 Messages postés 344 Statut Membre 46
     
    soit plus precis
    0
    1. cotta Messages postés 308 Statut Membre 3
       
      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.
      0
  3. william7007 Messages postés 344 Statut Membre 46
     
    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à.
    0
    1. cotta Messages postés 308 Statut Membre 3
       
      je m'excue pr ce retard William, je vais l'essayé mnt , et je te diré le resultat.
      Merci.
      0
    2. cotta Messages postés 308 Statut Membre 3
       
      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
      0
    3. cotta Messages postés 308 Statut Membre 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))......................................
      }
      0
  4. william7007 Messages postés 344 Statut Membre 46
     
    ok
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. william7007 Messages postés 344 Statut Membre 46
     
    if(mysql_num_rows($req_recherche >0))

    non plus tot

    if(mysql_num_rows($req_recherche >)0)
    0
    1. cotta Messages postés 308 Statut Membre 3
       
      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)
      0
    2. cotta Messages postés 308 Statut Membre 3
       
      c'est bon c'était le ">"
      0
    3. cotta Messages postés 308 Statut Membre 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!!
      0
  7. william7007 Messages postés 344 Statut Membre 46
     
    $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)){

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

    0
    1. cotta Messages postés 308 Statut Membre 3
       
      comment je peut traduire ca en PHP :

      idcategories=0 ou idcategories=1 ou idcategories=2
      0
  8. william7007 Messages postés 344 Statut Membre 46
     
    ok
    attend il affiche une erreur?
    0
    1. cotta Messages postés 308 Statut Membre 3
       
      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 !!
      0
  9. william7007 Messages postés 344 Statut Membre 46
     
    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.
    0
    1. cotta Messages postés 308 Statut Membre 3
       
      est ce que je peu t'envoyé la table et les types des champ?
      0
  10. william7007 Messages postés 344 Statut Membre 46
     
    en PHP ou en SQL?

    en PHP

    idcategories=0 ou idcategories=1 ou idcategories=2

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

    }
    0
  11. william7007 Messages postés 344 Statut Membre 46
     
    Ok
    je voulais te le demander tout à l'heure essaie de l'envoyer voir
    la structure complete
    0
  12. cotta Messages postés 308 Statut Membre 3
     
    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
    0
    1. cotta Messages postés 308 Statut Membre 3
       
      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é.
      0
  13. william7007 Messages postés 344 Statut Membre 46
     
    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
    0
    1. cotta Messages postés 308 Statut Membre 3
       
      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
      0
  14. william7007 Messages postés 344 Statut Membre 46
     
    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
    0
    1. cotta Messages postés 308 Statut Membre 3
       
      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)
      0
  15. william7007 Messages postés 344 Statut Membre 46
     
    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...
    0
    1. cotta Messages postés 308 Statut Membre 3
       
      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.
      0
  16. william7007 Messages postés 344 Statut Membre 46
     
    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
    0
  17. william7007 Messages postés 344 Statut Membre 46
     
    
    <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>
    
    
    0
    1. cotta Messages postés 308 Statut Membre 3
       
      Merci William je vais essayé ca toute de suite, et je m'excuse ca fait tard et tu ma aider, Merci encore.
      0
  18. william7007 Messages postés 344 Statut Membre 46
     
    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
    0
    1. cotta Messages postés 308 Statut Membre 3
       
      Encore Merci, je vais le faire mnt, a plus tard..
      0
  19. william7007 Messages postés 344 Statut Membre 46
     
    de rien nous sommes là pour nous entraider
    0
    1. cotta Messages postés 308 Statut Membre 3
       
      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 ?
      0
  20. william7007 Messages postés 344 Statut Membre 46
     
    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
    0
    1. cotta Messages postés 308 Statut Membre 3
       
      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???
      0
    2. cotta Messages postés 308 Statut Membre 3
       
      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 .
      0
  21. william7007 Messages postés 344 Statut Membre 46
     
    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
    0
    1. cotta Messages postés 308 Statut Membre 3
       
      et comment je vais pour t'envoyé?! :>
      0
  • 1
  • 2