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 :

requete sur champ vide [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 4
    Points : 4
    Points
    4
    Par défaut requete sur champ vide
    Bonjour,

    Je souhaite lors de cette requête

    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
    <?php
    try
    {
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '',
    $pdo_options);
     
    $req = $bdd ->prepare('SELECT * FROM agence WHERE reference = :reference AND code_postal = :code_postal');
     
    $req ->execute(array(
    'reference' => $_POST['reference'],
    'code_postal' => $_POST['code_postal'],
    ));
     
    while ($donnees = $req->fetch())
    {
    	echo 'Référence : ' . $donnees['reference'] . ' ';
    	echo 'Code Postal : ' . $donnees['code_postal'] . ' ';
    }
     
    $req->closeCursor();
    }
     
    catch(Exception $e)
    {
    	die('Erreur : '.$e->getMessage());
    }
     
    ?>
    avec une variable $_POST['reference'] = ' ' (champ vide d'un formulaire) et une variable $_POST['code_postal'] = 12000 (par exemple)
    faire afficher toutes les entrées de ma table "agence" correspondant à $_POST['code_postal'] = 12000
    malheureusement cela ne me renvoie aucun résultat tant que $_POST['reference'] = ' '

    Après une soirée de recherches, de prise de tête et d'essais en tout genre je ne suis malheureusement pas parvenu à résoudre mon problème ... du coup si quelqu'un a la solution je l'en remercie d'avance vivement !

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    1) Les champs sont à la campagne ou dans les formulaires, pas dans les tables SQL qui ne sont composées que de colonnes et de lignes.

    2) Il vaut mieux éviter la guerre des étoiles !

    3) Le résultat est logique si aucune référence n'est vide dans la table.
    1ère solution : Vous ne mettez pas de condition sur la référence dans la requête.

    2ème solution : Si vous voulez une requête générique si le champ référence est renseigné ou pas par l'utilisateur, c'est la construction de la requête qu'il faut gérer.

    Essaie un truc de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $sql = 'SELECT * FROM agence WHERE code_postal = :code_postal';
    $param = array('code_postal' => $_POST['code_postal']);
     
    if ($_POST['reference'] != '')
    {
    	$sql .= ' AND reference = :reference';
    	$param['reference'] = $_POST['reference'];
    }
    $req = $bdd ->prepare($sql);
     
    $req ->execute($param);

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Muchas Gracias !!!

    Je remets le code avec un petit ajout (si jamais cela peut resservir à qqn ...) de manière à gérer le cas où "code_postal" est vide et pas "reference"

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $sql = 'SELECT reference,code_postal FROM agence WHERE 1';
    $param = array();
    if ($_POST['code_postal'] != ''){
    	$sql .= ' AND code_postal = :code_postal';
    	$param['code_postal'] = $_POST['code_postal'];
    }
    if ($_POST['reference'] != ''){
    	$sql .= ' AND reference = :reference';
    	$param['reference'] = $_POST['reference'];
    }
    $req = $bdd ->prepare($sql);
    $req ->execute($param);

    Et encore merci Bonne journée !

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

Discussions similaires

  1. [AC-2002] requete sur champs vides
    Par stilan dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/07/2011, 22h25
  2. Problème requete sur champs xml
    Par fred6655 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/09/2006, 13h19
  3. Test evenement sur champ vide dans une table
    Par eddyG dans le forum Access
    Réponses: 3
    Dernier message: 30/05/2006, 17h02
  4. Date/Heure Requête sur champ vide
    Par Polo_973 dans le forum Access
    Réponses: 3
    Dernier message: 19/04/2006, 21h19
  5. Requete sur champ vide
    Par Eltaz dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/06/2005, 13h36

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