Page 1 sur 1

utilisation BETWEEN

Posté : 07 nov. 2011, 22:57
par pacphil
bonjour je suis tomber sur un superbe résultat avec ce topic et j'aimerais rajouter deux champs texte prix pour faire une recherche entre les deux avec BETWEEN

Merci de votre aide


post370588.html#p370588

Re: utilisation BETWEEN

Posté : 07 nov. 2011, 23:09
par moogli
salut,

et c'est quoi le problème ?

a tu testé quelque chose ?

@+

Re: utilisation BETWEEN

Posté : 08 nov. 2011, 00:20
par Aureusms
BETWEEN est simple à utiliser
$requete = "SELECT prix FROM tablePrix WHERE prix BETWEEN 1 AND 3";
un conseil ne met pas tes champs en texte mais en float ce sera plus simple pour gérer un prix (qui sera numérique)

Re: utilisation BETWEEN

Posté : 08 nov. 2011, 13:46
par pacphil
Bonjour dans le select je savais comment le mettre en place , mais si je le fait comment dans ton exemple les autres recherche ne se font plus ?

je me demandais si cela serai possible de le mettre dans les contrôles des choix mon BETWEEN .

Merci de vos réponse

Re: utilisation BETWEEN

Posté : 08 nov. 2011, 13:50
par xTG
N'aurais-tu pas tout simplement oublié un AND... Montres nous ta requête. ;)

Re: utilisation BETWEEN

Posté : 08 nov. 2011, 21:18
par pacphil
bonjour tu le placerai ou dans le select ici .
 if($i > 0)
                {
                        // requete de selection
                        $sql = "SELECT * FROM bdd WHERE $critere ORDER BY nom_fichier";
                        $requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
                }

Re: utilisation BETWEEN

Posté : 08 nov. 2011, 21:37
par xTG

Code : Tout sélectionner

... WHERE $critere AND prix BETWEEN 1 AND 3 ORDER BY ...

Re: utilisation BETWEEN

Posté : 08 nov. 2011, 22:41
par pacphil
voila ce que j'ai fait exactement
<?php
require_once("conf.php");
                               
                 // connexion
                        $cnx = mysql_connect($host,$user,$pass) or die("Impossible de se connecter");
                        $db = mysql_select_db("$bdd") or die("Impossible de se connecter");
                                if (mysql_connect ($host,$user,$pass))
                                {
                                        echo 'Connexion réussie'; echo '<br>';
                                }
                                else
                                {
                                        echo 'Connexion impossible...'.mysql_error(); echo '<br>';
                                }
                       
                // on récupère les critères sélectionnés
                extract($_POST);

                $i = 0;
         
                // si la variable est présente, on lui affecte une place dans le tableau 'choix[]', qui nous servira ensuite à construire le WHERE de la requête.
                if(!empty($type_bien)) { $choix[$i++] = "type_bien = '$type_bien'"; }
                if(!empty($objet)) { $choix[$i++] = "objet = '$objet'"; }
                if(!empty($province)) { $choix[$i++] = "ville = '$province'"; }
		if(!empty($ville)) { $choix[$i++] = "ville = '$ville'"; }
                if(!empty($indice)) { $choix[$i++] = "indice = '$indice'"; }
					
		//recherche entre deux champs prix ajout ////////////////////////////////////////////
		if (!empty( $_GET['prix']) AND !empty($_GET['prix1'])) 
                {
                $critereprix .= '`prix` BETWEEN '.$_GET['prix'].' AND '.$_GET['prix1'];              
                }
				//////////////////////////////////////////////////////////////////////////////////
                // on insère les éléments remplis dans une variable $critere, en commençant par la première occurrence, puis on boucle
                $critere = $choix[0]." ";
         
                for($j=1;$j<$i;$j++)
                {
                       $critere .= " AND ".$choix[$j]." ";		
                }
				
                // enfin on fait la requête si $i >0, ça veut dire qu'il y a des critères
                if($i > 0)
                {
                        // requete de selection
                        $sql = "SELECT * FROM immo WHERE $critere ORDER BY $critereprix";
                        $requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
                }

                // si $i = 0, alors l'utilisateur n'a pas saisi de critère, là soit on fait la même requete mais sans "WHERE $critere", soit on lui demande de saisir au moins un critère.
                else
                {
                        $sql = "SELECT * FROM immo ORDER BY $critereprix";
                }

                        //récupération avec mysql_fetch_array(), et affichage de nos résultats :
                        echo( "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" align=\"center\">\n" );
                        echo( "<tr>
                        <td><div align=\"center\">Bien</div></td>
                        <td><div align=\"center\">Objet</div></td> 
                        <td><div align=\"center\">Province</div></td>
                        <td><div align=\"center\">Ville</div></td>
						<td><div align=\"center\">Indice d'isolement</div></td>
						<td><div align=\"center\">Prix</div></td>
						
                        </tr>" );
 
                        while( $result = mysql_fetch_array( $requete ) )
                        {      
                        echo( "<tr>\n" );
                        echo( "<td><div align=\"center\">".$result["bien"]."</div></td>\n" );
                        echo( "<td><div align=\"center\">".$result["objet"]."</div></td>\n" );
                        echo( "<td><div align=\"center\">".$result["province"]."</div></td>\n" );
                        echo( "<td><div align=\"center\">".$result["ville"]."</div></td>\n" );
                        echo( "<td><div align=\"center\">".$result["indice"]."</div></td>\n" );
						echo( "<td><div align=\"center\">".$result["prix"]."</div></td>\n" );
                        /*echo( "<td><div align=\"center\"><form method='post' action='telechargement.php'><input type='submit' value='Telechargement'/></form></div></td>\n" );*/
                        echo( "</tr>\n" );
                        }
                        echo( "</table><br>\n" );      
                ?>

Re: utilisation BETWEEN

Posté : 09 nov. 2011, 08:22
par xTG
Pas d'erreur ? Si tu affiches $sql cela donne quoi ?

Re: utilisation BETWEEN

Posté : 28 févr. 2012, 21:06
par pacphil
bonjour voilà j'ai une erreur
Notice: Undefined variable: critereprix in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\search-val.php on line 34
ERREUR MYSQL numéro: 1064
Type de cette erreur: Erreur de syntaxe pr�s de '' � la ligne 1

Re: utilisation BETWEEN

Posté : 28 févr. 2012, 22:16
par cydelic
Salut,

Tu peux faire un
echo $sql;
comme ca on pourra voir la requete qui est envoyée à MySQL

Re: utilisation BETWEEN

Posté : 29 févr. 2012, 09:35
par xTG
Et en faisant cela tu verrais (comme l'erreur te l'indique) que $critereprix n'existe pas et donc qu'il n'y a pas de valeur après ORDER BY.

Re: utilisation BETWEEN

Posté : 29 févr. 2012, 10:38
par sirakawa
Ce doit être des réactions de dinosaure, du temps où on évitait les instructions inutiles mais :
1) j'ai du mal à saisir comment on peut mêler du $_POST et du $_GET
             extract($_POST);
...
                                     
                //recherche entre deux champs prix ajout ////////////////////////////////////////////
                if (!empty( $_GET['prix']) AND !empty($_GET['prix1']))
                {
                $critereprix .= '`prix` BETWEEN '.$_GET['prix'].' AND '.$_GET['prix1'];              
                }
Et donc d'où surgit $critereprix....
2) le for lui aussi n'a de sens que si $i > 0; il pourrait très bien se situer dans le if
      
      $critere = $choix[0]." ";   
    for($j=1;$j<$i;$j++)
                {
                       $critere .= " AND ".$choix[$j]." ";             
                }
                               
                // enfin on fait la requête si $i >0, ça veut dire qu'il y a des critères
                if($i > 0)
                {

    $critere = " ";   
                               
                // enfin on fait la requête si $i >0, ça veut dire qu'il y a des critères
                if($i > 0)
                {
                     $critere = $choix[0]." ";         
                       for($j=1;$j<$i;$j++)
                      {
                             $critere .= " AND ".$choix[$j]." ";             
                ....

Re: utilisation BETWEEN

Posté : 29 févr. 2012, 12:24
par pacphil
bonjour , c'est ok c'est pour comparer ma fouchette de prix entre disons 50.000 et 100.000 et tous les bien entre c'est valeur doive être afficher .

Merci