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 imbriqués ou autre ?


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Par défaut switch imbriqués ou autre ?
    slt,
    voila je suis sur le dev d'un moteur de recherche immobilier dont voila une partie du 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
    18
    19
    20
    21
    22
    23
    24
     
    if(isset($_POST["typerech"]))
    {
     
    switch($_POST["typerech"]){
    case "vente" : //ton code pour vente
    echo 'ventes';
    $query = "select * from appartement";
    break;
     
    case "location" : //ton code pour location
    echo 'locations';
    $query = "select * from location";
    break;
     
    default : //ton code par défaut
    break;
    }
     
    }
    else
    {
    echo'erreur';
    }
    ce code permet donc de faire une selection entre des ventes et des locations, seulement je dois egalement faire une selection a l'aide de menus déroulants entre le type de bien, son nombre de pièces, sa localisation et son prix.
    Je pense donc imbriquer plusieurs switch a celui ci afin de diriger la recherche entre chaque choix, mais voila je me demande si c'est la meilleure solution,en gros, vais je droit dans le mur?

  2. #2
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    Il faut que tu construises ta requête pas à pas

    Démonstration :

    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
     
    if(isset($_POST["typerech"]))
    {
    $query = "select * from ";
    switch($_POST["typerech"]){
    case "vente" : //ton code pour vente
       echo 'ventes';
       $query .= "appartement";
    break;
     
    case "location" : //ton code pour location
    echo 'locations';
    $query .= "location";
    break;
     
    default : //ton code par défaut
    break;
    }
     
    }
    else
    {
    echo'erreur';
    }
     
    switch($tonwhere)
    {
      case 'nb_pieces' : $query .= 'where nb_pieces='.$ton_nb_pieces; break;
      case 'superficie' : $query .= 'where superficie='.$ta_superficie;  break;
    }
    echo $query; // Pour vérifier que tu fais pas nawak
    Avec un truc dans ce genre tu peux construire facilement des requêtes sans avoir à les réécrire 40 fois !
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Par défaut
    ok je te remercie, effectivement c'est plus pratique, je vais tester ça

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Par défaut
    par contre j'aimerai avoir un peu plus d'explication, en fait si je comprend bien $ton_nb_pieces correspond au nom que j'ai assigné au menu déroulant, pour mon exemple c'est nbpieces:
    <select name="nbpieces" class="titrerecherche"style="WIDTH: 188px">

    et de même pour la variable $ta_superficie, c'est ça?
    par contre la variable $tonwhere elle correspond a quoi?
    Je dois la lier à mes variables nbpieces,superficie et les autres pour pouvoir ensuite jouer sur sa valeur non?

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Par défaut
    bon alors voila comme je m'y prend, je ne sais pas si c'est exact mais c'est pour savoir si j'ai bien compris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    switch($test)
    {
      case 'nbpieces' :
      $query .= 'where NBPIECE='.$ton_nb_pieces;
      break;
     
      case 'type' :
      $query .= 'where TYPE='.$ton_type;
      break;
    }
    j'ai donc nommé test tous mes menus déroulants et je leur ai affecté une valeur unique a savoir nbpieces pour le menu y correspondant et type pour l'autre menu déroulant, de cette façon:
    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
     
    <td> 
    <select name="test" class="titrerecherche" style="WIDTH: 188px" value="type">
    <option value="" selected>Tous types de bien</option> 
    <option value='1'>Appartement</option>
    <option value='2'>Villa</option>
    <option value='3'>Terrain</option>
    <option value='4'>Commerce</option>
    <option value='5'>Garage</option>
    </select>
    </td>
     
    <td> 
    <select name="test" class="titrerecherche"style="WIDTH: 188px" value="nbpieces">
    <option value="0" selected>Indifférent</option> 
    <option value="1">Studio</option> 
    <option value="2">2 pi&egrave;ces</option> 
    <option value="3">3 pi&egrave;ces</option> 
    <option value="4">4 pi&egrave;ces</option> 
    <option value="5">5 pi&egrave;ces</option> 
    <option value="6">6 pi&egrave;ces</option> 
    <option value="7">7 pi&egrave;ces</option>
    </select>
    </td>
    Reste les deux variables $ton_nb_pieces et $ton_type.
    comment je dois donc faire pour que ces variable prennent les valeurs de ce que je leur ai affecté lors de la selection dans le menu déroulant?
    merci

  6. #6
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    <select name="mon_formulaire"

    Il te faut nommer tes 2 selects différemment

    ensuite pour récupérer leur valeur il te suffira de submit ton formulaire et d'accéder aux variables par $_POST["mon_formulaire"]
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

Discussions similaires

  1. une histoire de switch imbriqués
    Par Invité dans le forum Débuter
    Réponses: 10
    Dernier message: 17/09/2009, 11h05
  2. Switch imbriqués
    Par babou54 dans le forum Langage
    Réponses: 3
    Dernier message: 04/05/2009, 17h13
  3. [AS3] Autre méthode pour switch imbriqués ?
    Par 187bundy dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 15/02/2009, 15h35
  4. Réponses: 8
    Dernier message: 12/11/2007, 14h46
  5. [XSLT]for-each imbriqués, et autres galères...
    Par Sarrus dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 16/03/2006, 17h57

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