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 :

Place Holders dynamique un peu délicat.


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 24
    Points : 12
    Points
    12
    Par défaut Place Holders dynamique un peu délicat.
    Bonjour à tous, je reviens vers vous pour du place holder dynamique.

    Soit mon code suivant :
    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
    $sql = "INSERT INTO bonusratio (idratio, idjeu, idtypecontent, idlangue, idniveau, bonus, descBonus) VALUE ('', ?, ?, ?, ?, ?, ?)";
            $prep = $db->prepare($sql);
     
            //décut des tests pour savoir quoi inserer
            if (isset($idjeu) && $idjeu != NULL) {
                $prep->bindValue(1, $idjeu, PDO::PARAM_INT);
            } else {
                $req = "SELECT idjeu FROM jeux";
                $res = $db->query($req)->fetchALL(PDO::FETCH_ASSOC);
                $arr = array();
                foreach ($res as $value) //Création d'un tableau contenant mes id
                    $arr[] = $value['idjeu'];
     
     
                //Associer les valeurs aux place holders
                for ($i = 0; $i < count($arr); $i++) {
                    $prep->bindValue(1, $arr[$i], PDO::PARAM_INT);
                }
                //$prep->execute();
    En gros je regarde si mes id sont passé en paramètre et différents de null.
    Si c'est le cas, j'ai une valeur pour mon bindValue.

    Si il est null, je dois insérer toute les possibilités, donc avec tout mes idJeu pour cette exemple.
    Mais je dois tester pour tout mes id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function ajouterBonus($idjeu, $idlangue, $idtypecontent, $idniveau, $bonus, $descBonus)
    En faite si vous vous voulez cette fonction insère dans ma BDD un bonus en fonction de l'idjeu, idlangue, idtypecontent, idniveau.

    Exemple, je veux donner 20% de bonus au traduction faite en italien :
    ajouterBonus(null,3,2,null,0.2,'Bonus de 20% pour les traductions faite en italien")

    La où c'est null je dois passer tout les id de ma table, pour couvrir toutes les possibilités possible.

    J'ai donc 2 questions :
    1 - Ce code vous paraît-il bon ? (pas encore testé)
    2 - $prep->execute(); dois-je le passer tout à la fin de ma function lorsque tout mes tableaux contenant mes id seront chargés ?

    Merci.

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2009
    Messages : 141
    Points : 194
    Points
    194
    Par défaut
    Bonjour,

    Ce code me parait bon mais ne fais pas ce que vous souhaitez.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Associer les valeurs aux place holders
                for ($i = 0; $i < count($arr); $i++) {
                    $prep->bindValue(1, $arr[$i], PDO::PARAM_INT);
                }
                //$prep->execute();
    Le bindValue ne retient pas toutes les valeurs consécutives qu'on lui passe mais seulement la dernière donc le code actuel ne fera qu'une insertion pour le dernier idJeu de la base de données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Associer les valeurs aux place holders
                for ($i = 0; $i < count($arr); $i++) {
                    $prep->bindValue(1, $arr[$i], PDO::PARAM_INT);
                    $prep->execute();
                }
    Ce code devrait permettre l'insertion pour tous les jeux de la base.

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/01/2015, 21h08
  2. [MySQL] passage à mysqli un peu délicat
    Par lesarbres dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 15/11/2014, 18h37
  3. [Débutant] Place Holder disparaît
    Par Whippet dans le forum ASP.NET
    Réponses: 1
    Dernier message: 22/10/2012, 23h35
  4. place holder et find control
    Par mermich dans le forum ASP.NET
    Réponses: 1
    Dernier message: 29/04/2008, 09h21
  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