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 :

Faire face à un nombre de place holders dynamique [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 17
    Par défaut Faire face à un nombre de place holders dynamique
    Bonjour,

    https://fmaz.developpez.com/tutoriel...omprendre-pdo/

    Sur le tuto il indique que l'on ne peux pas ,de manière élégante, personnaliser une requête avec des placeholders multiples.
    Est-ce que c'est toujours le cas ?

    J'ai cherché à inclure une valeur par défaut aux argument de ma fonction qui soit "toutes les valeurs disponibles" mais je n'ai pas réussi.

    L'objectif est de crée un requêtes multitâche : les arguments optionnels ne servent qu'a préciser la requêtes.
    Ex: afficher les chaussure($modèle,$couleur,$pointure,$marque). Si on a les 4 arguments, la requête est précise, si il en manque 1 ou 2 on perd en précision.

    Pour l'instant je résous ce problème en fractionnant ma requête et en concaténant le reste en fonction de condition.
    Est-ce selon vous une bonne méthode?
    Que me conseillez vous ?

    J'ai mis un petit exemple ci-dessous pour vous aider à comprendre ma recherche.

    Cordialement


    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
     
    mafonction($argumentObligatoire,$argumentOptionel=null){
     
    // Je crée la requête de base minimum
     
    $req="SELECT * FROM maTable Where column1=argumentObligatoire";
     
    // En fonction de condition, je concatene le reste de la requetes et je bindvalue
     
    if( $argumentOptionel !=null){
    $req.="AND column2 = :argumentOptionel"
    $pdostatement->bindValue( ':$argumentOptionel', $argumentOptionel, PDO::PARAM_STR );
    }
     
    $pdostatement=pdo->prepare($req);

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 670
    Par défaut
    je ne comprend pas trop ce que vous définissez comme "élégant" et je me pose la même question pour l'utilisation de ce mot dans le tutoriel.

    le tutoriel montre un exemple d'utilisation d'un tableau et d'une boucle pour construire une requete avec des marqueurs en nombre variable :
    https://fmaz.developpez.com/tutoriel...dre-pdo/#LIV-B

    ensuite, vous remettez en forme le code et les commentaires pour que le tout reste compréhensible si vous devez vous y replongez dans quelques mois et il n'y aura pas de souci.

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

Discussions similaires

  1. [PDO] Place Holders dynamique un peu délicat.
    Par drYouz dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/02/2012, 16h15
  2. Comment faire une balise <html:text> avec valeur dynamique
    Par chriscoolletoubibe dans le forum Struts 1
    Réponses: 13
    Dernier message: 14/05/2007, 22h13
  3. [VBA-Excel] Faire un filtre dans un tableau croisé dynamique
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/11/2006, 15h05
  4. Réponses: 1
    Dernier message: 28/01/2006, 17h23
  5. [C#] Probleme bouton et place holder
    Par moimoimoi dans le forum ASP.NET
    Réponses: 12
    Dernier message: 02/04/2004, 12h01

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