IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Switch Case et mySQL [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur multimédia
    Inscrit en
    Octobre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Octobre 2007
    Messages : 57
    Par défaut Switch Case et mySQL
    Bonjour a toutes et à tous.

    Voici un formulaire qui me permet de rechercher dans ma base de données des maisons.

    On peut (enfin, je voudrai qu'on puisse...) rechercher par des encadrement de valeur (Prix ou surface). J'ai donc fait un switch/Case.

    Il ne marche pas...
    Voici le code du switch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    switch($TSurfMin)
      	{
      		case $TSurfMin == "":
        		break;
      		case $TSurfMin != "" :
        		$sql = $sql . " AND surface >= ". $TSurfMin;
        		break;
      	}
    	switch($TSurfMax)
      	{
      		case $TSurfMax == "":
        		break;
      		case $TSurfMax != "" :
        		$sql = $sql . " AND surface <= ". $TSurfMax;
        		break;
      	}
     
     
    	switch($TPrixMin)
      	{
      		case $TPrixMin == "":
        		break;
      		case $TPrixMin != "" :
        		$sql = $sql . " AND prix >= ". $TPrixMin;
        		break;
      	}
    	switch($TPrixMax)
      	{
      		case $TPrixMax == "":
        		break;
      		case $TPrixMax != "" :
        		$sql = $sql . " AND prix <= ". $TPrixMax;
        		break;
      	}
    Et voici la requete envoyée...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM ic_bienavendre WHERE type <> 'toutes' AND surface >= 100 AND surface <= AND prix >= AND prix <= ORDER BY prix LIMIT 0, 100
    Quelqu'un arriverai à voir quel est le probleme?

  2. #2
    Membre éprouvé Avatar de bluemartini
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 154
    Par défaut
    essaie avec la fonction strcasecmp pour la comparaison de tes chaines. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    case $TSurfMin == "":
    replacé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    case (strcasecmp($TSurfMin,"")==0):

  3. #3
    Membre averti
    Profil pro
    Développeur multimédia
    Inscrit en
    Octobre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Octobre 2007
    Messages : 57
    Par défaut
    Merci de ta réponse, je vais tenter ma chance, je vous tiens au courant...

    [EDIT]
    Malheureusement, le résultat est identique...
    [/EDIT]

  4. #4
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    switch($TSurfMin)
      	{
      		case $TSurfMin == "":
        		break;
      		case $TSurfMin != "" :
        		$sql = $sql . " AND surface >= ". $TSurfMin;
        		break;
      	}
    Ca n'a aucun intérêt.

    Pourquoi ne fais-tu pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($TSurfMin!="")
        {
        $sql = $sql . " AND surface >= ". $TSurfMin;
        }
    Pas la peine de se compliquer la vie hein :p

  5. #5
    Membre averti
    Profil pro
    Développeur multimédia
    Inscrit en
    Octobre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Octobre 2007
    Messages : 57
    Par défaut
    J4avais essayé cette structure une époque, mais quelque chose déconnaéis, je ne me souviens plus quoi, et j'avais été obligé de passer par ce double test. Ces quelques lignes semblent sure, je les testent de suite...

  6. #6
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Utilise le switch quand tu as une multitude de cas à gérer

  7. #7
    Membre averti
    Profil pro
    Développeur multimédia
    Inscrit en
    Octobre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Octobre 2007
    Messages : 57
    Par défaut
    Ca se présente un peu mieux, mais le résultat n'est pas celui escompté. J'ai des résultats hors de ma fourchette "imposée"...

    Voici la requête crée par la fourchette:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ic_bienavendre WHERE type <> 'toutes' AND prix >= 192000 AND surface <= 194000 ORDER BY prix LIMIT 0, 100
    Créée par ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    if($TSurfMin!="")
        {
        	$sql = $sql . " AND surface >= ". $TSurfMin;
        }
    	if($TSurfMax!="")
        {
        	$sql = $sql . " AND surface <= ". $TSurfMax;
        }
     
    	if($TPrixMin!="")
        {
        	$sql = $sql . " AND prix >= ". $TPrixMin;
        }
    	if($TPrixMax!="")
        {
        	$sql = $sql . " AND surface <= ". $TPrixMax;
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. switch case pour deux variable en meme temps
    Par petitours dans le forum C
    Réponses: 3
    Dernier message: 06/11/2005, 19h20
  2. [Tableaux] Problème avec Switch case
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2005, 16h37
  3. probleme gestion condition switch - case
    Par DarkMax dans le forum Langage
    Réponses: 5
    Dernier message: 07/09/2005, 14h25
  4. [Language] aide sur les switch case
    Par pouss dans le forum Langage
    Réponses: 3
    Dernier message: 05/04/2005, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo