utilisation BETWEEN

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : utilisation BETWEEN

Re: utilisation BETWEEN

par pacphil » 29 févr. 2012, 12:24

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

Re: utilisation BETWEEN

par sirakawa » 29 févr. 2012, 10:38

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

par xTG » 29 févr. 2012, 09:35

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

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

Salut,

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

Re: utilisation BETWEEN

par pacphil » 28 févr. 2012, 21:06

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

par xTG » 09 nov. 2011, 08:22

Pas d'erreur ? Si tu affiches $sql cela donne quoi ?

Re: utilisation BETWEEN

par pacphil » 08 nov. 2011, 22:41

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

par xTG » 08 nov. 2011, 21:37

Code : Tout sélectionner

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

Re: utilisation BETWEEN

par pacphil » 08 nov. 2011, 21:18

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

par xTG » 08 nov. 2011, 13:50

N'aurais-tu pas tout simplement oublié un AND... Montres nous ta requête. ;)

Re: utilisation BETWEEN

par pacphil » 08 nov. 2011, 13:46

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

par Aureusms » 08 nov. 2011, 00:20

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

par moogli » 07 nov. 2011, 23:09

salut,

et c'est quoi le problème ?

a tu testé quelque chose ?

@+

utilisation BETWEEN

par pacphil » 07 nov. 2011, 22:57

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