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 :

[Conception] Formulaire multicritères et affichages


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Par défaut [Conception] Formulaire multicritères et affichages
    bonsoir à tous!!!
    j'aimerai savoir si quelqu'un aurait fais un formulaire multicritères avec par exemple une recherche si telle case est cochée et que celle si l est pas...
    comme cette page:
    http://www.netissimmo.fr/search.php

    Pour l'instant j'ai fais un formulaire avec des requêtes simples portant sur un critère et j'aimerai en faire sur plusieurs critères.
    avez vous un exemple de code pour faire ceci ??
    merci
    jérôme

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    C'est un problème d'algorithme. Prends une feuille de papier et écris les conditions de ton programme, le squelette.

  3. #3
    Membre confirmé Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Par défaut
    oui en effet,
    en gros j'y avais déja un peu réflechis:
    j'ai par exemple des champs tel que pièces , chambre,surface, cave

    ce que je voulais faire c est mettre par exemple un grand formulaire avec
    des cases qu on peut cocher type: cave ( cocher=on veut une cave si pas cocher on prend pas en compte ce critère);pièce par exemple dans un menu déroulant on met 1,2,3 et la personne choisie sachant que 0 correspondrait a la valeur ou le parametre n est pas pris en compte.
    il faut donc que je fasse une requête and du type
    select * from bien where parametre 1 and parametre 2 ...
    cependant le problème que j'ai c est que je sais pas comment dire qu' on doit utiliser tel ou tel parametres.

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Ok, je vais te donner mon idée générique et tu te débrouilleras ensuite pour l'adapter à tes besoins :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <form method="post" action="<?php echo basename(__FILE__); ?>">
        Cave :
        <label>
            <input type="radio" name="cave" value="oui" checked="checked" /> oui
        </label>
        <label>
            <input type="radio" name="cave" value="non" /> non
        </label><br />
     
        Terrasse :
        <label>
            <input type="radio" name="terrasse" value="oui" checked="checked" /> oui
        </label>
        <label>
            <input type="radio" name="terrasse" value="non" /> non
        </label><br />
     
        <label>
            Pi&egrave;ces :
            <select name="piece">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
            </select>
        </label><br />
        <input type="submit" value="Chercher" />
    </form>
     
    <?php
     
    if(!empty($_POST))
    {
        $parametres = array();
     
        if($_POST['cave'] == 'oui')
        {
            $parametres[] = 'cave = "oui"';
        }
     
        if($_POST['terrasse'] == 'oui')
        {
            $parametres[] = 'terrasse = "oui"';
        }
     
        if(is_numeric($_POST['piece']))
        {
            $parametres[] = 'pieces = '.intval($_POST['piece']);
        }
     
        $sql = 'SELECT id
                FROM maison
                WHERE '.implode(' AND ', $parametres);
     
        echo $sql;
    }
     
    ?>
    Le principe est d'ajouter les éléments dont tu as besoin au tableau $parametres. Ici, il peut s'agit de la présence de la cave ou de la terrasse ou encore du nombre de pièces.
    Ensuite, la fonction implode() s'occupe d'assembler tous les paramètres dans la requête.

  5. #5
    Membre confirmé Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Par défaut
    merci beaucoup mais je comprend pas un truc:
    d'abord dans ton action tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ?php echo basename(__FILE__); ?>"
    , est ce que moi je suis obligé de le faire aussi ?
    ou je mets juste l'url de la page qui va traiter car je décompose en deux pages.
    sinon
    quand tu marques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .intval($_POST['piece'])
    intval correspond a par exemple 2,19 deviendra 2...
    si je mets deja les parametres style 1,2,3 j ai pas besoin de faire ca ?
    merci en tout cas, je vais m'y mettre dessus

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Tu mets le action="" que tu veux, je ne peux pas deviner ton nom de script.
    Pour intval(), je te recommande vivement de le mettre. As-tu lu mon article sur les formulaires ? J'y évoque les possibilités de hacking de formulaire, c'est tellement simple à faire... Avec intval(), tu serais protégé pour ce champ-là.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/09/2011, 07h28
  2. [Conception] Formulaires identiques pour INSERT et UPDATE
    Par MiJack dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 16/06/2006, 11h34
  3. [Conception] Formulaire et base de donnée ?
    Par heldev dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/03/2006, 17h09
  4. [formulaire] Pb d'affichage
    Par b_steph_2 dans le forum IHM
    Réponses: 14
    Dernier message: 10/01/2006, 12h10
  5. Réponses: 18
    Dernier message: 22/10/2004, 14h49

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