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 :

Multi requete non effectuées [PDO]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de sourcilpower
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2011
    Messages : 128
    Billets dans le blog
    2
    Par défaut Multi requete non effectuées
    Bonjour,

    j'ai un petit soucis car mes 5 derniere requete ne se font pas alors que si je les fait une par une ca marche ..

    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
    $pdo2 = conn_pdo();
    $r = array();
    $r[0] = $pdo2->prepare("UPDATE plat SET plat_order='0'");
     
    $r[1] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) VALUES ('".utf8_decode($_POST['entree1_id'])."','".utf8_decode($_POST['entree1l2_id'])."','1','1') ON DUPLICATE KEY UPDATE plat_order='1'");
    $r[2] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) VALUES ('".utf8_decode($_POST['entree2_id'])."','".utf8_decode($_POST['entree2l2_id'])."','1','2') ON DUPLICATE KEY UPDATE plat_order='2'");
    $r[3] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) VALUES ('".utf8_decode($_POST['entree3_id'])."','".utf8_decode($_POST['entree3l2_id'])."','1','3') ON DUPLICATE KEY UPDATE plat_order='3'");
     
    $r[4] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) VALUES ('".utf8_decode($_POST['plat1_id'])."','".utf8_decode($_POST['plat1l2_id'])."','2','1') ON DUPLICATE KEY UPDATE plat_order='1'");
    $r[5] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) VALUES ('".utf8_decode($_POST['plat2_id'])."','".utf8_decode($_POST['plat2l2_id'])."','2','2') ON DUPLICATE KEY UPDATE plat_order='2'");
    $r[6] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) VALUES ('".utf8_decode($_POST['plat3_id'])."','".utf8_decode($_POST['plat3l2_id'])."','2','3') ON DUPLICATE KEY UPDATE plat_order='3'");
    $r[7] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_type,plat_order) VALUES ('".utf8_decode($_POST['platc1_id'])."','5','1') ON DUPLICATE KEY UPDATE plat_order='1'");
    $r[8] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_type,plat_order) VALUES ('".utf8_decode($_POST['platc2_id'])."','5','2') ON DUPLICATE KEY UPDATE plat_order='2'");
    $r[9] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_type,plat_order) VALUES ('".utf8_decode($_POST['platc3_id'])."','5','3') ON DUPLICATE KEY UPDATE plat_order='3'");
     
    $r[10] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) VALUES ('".utf8_decode($_POST['dessert1_id'])."','".utf8_decode($_POST['dessert1l2_id'])."','3','1') ON DUPLICATE KEY UPDATE plat_order='1'");
    $r[11] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) VALUES ('".utf8_decode($_POST['dessert2_id'])."','".utf8_decode($_POST['dessert2l2_id'])."','3','2') ON DUPLICATE KEY UPDATE plat_order='2'");
    $r[12] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) VALUES ('".utf8_decode($_POST['dessert3_id'])."','".utf8_decode($_POST['dessert3l2_id'])."','3','3') ON DUPLICATE KEY UPDATE plat_order='3'");
    $r[13] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) VALUES ('".utf8_decode($_POST['dessert4_id'])."','".utf8_decode($_POST['dessert4l2_id'])."','3','4') ON DUPLICATE KEY UPDATE plat_order='4'");
    $r[14] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) VALUES ('".utf8_decode($_POST['dessert5_id'])."','".utf8_decode($_POST['dessert5l2_id'])."','3','5') ON DUPLICATE KEY UPDATE plat_order='5'");
     
    $r[15] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) VALUES ('".utf8_decode($_POST['fromage1_id'])."','".utf8_decode($_POST['fromage1l2_id'])."','4','1') ON DUPLICATE KEY UPDATE plat_order='1'");
    $r[16] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) VALUES ('".utf8_decode($_POST['fromage2_id'])."','".utf8_decode($_POST['fromage2l2_id'])."','4','2') ON DUPLICATE KEY UPDATE plat_order='2'");
    $r[17] = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) VALUES ('".utf8_decode($_POST['fromage3_id'])."','".utf8_decode($_POST['fromage3l2_id'])."','4','3') ON DUPLICATE KEY UPDATE plat_order='3'");
     
    foreach ($r as $val){
    	$val->execute();
    	$val->closeCursor();
    }

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je crois que tu es complètement passé à côté de l'interêt d'une requête préparée et des tableaux PHP.

    Une requête préparée sert justement à ne pas répéter une requête.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre très actif
    Avatar de sourcilpower
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2011
    Messages : 128
    Billets dans le blog
    2
    Par défaut
    est-il possible de me montrer alors svp

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Renomme tes champs de formulaire pour plat_lib en : plat[numero_du_type][]
    par exemple
    name="plat[1][]" pour toutes les entrées
    name="plat[4][]" pour tous les fromages

    pareil pour le plat_lib2 : plat2[numero_du_type][]

    Ensuite il n'y a plus qu'a parcourir le tour et faire les insertions :
    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
    $plat_order = array();
    // on prépare la structure de l'insertion
    $sth = $pdo2->prepare("INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) VALUES (:plat_lib, :plat_lib2, :plat_type, :plat_order");
     
    // pour chaque type de plat
    foreach ($_POST['plat'] as $plat_type=>$values) {
         // on gère un compteur par type de plat pour "order"
         $plat_order[$plat_type] = isset($plat_order[$plat_type]) ? ++$plat_order[$plat_type] : 1;
         // pour chaque libellé
         foreach ($values as $key=>$lib) {
               // on regarde s'il y a un lib2
                $lib2 = isset($_POST['plat2'][$plat_type][$key]) ? $_POST['plat2'][$plat_type][$key] : '';
                // on execute l'insertion avec les valeurs
                $sth->execute(array(':plat_lib'=>$lib, ':plat_lib2'=>$lib2, ':plat_type'=>$plat_type, ':plat_order'=>$plat_order[$plat_type]));
         }
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre très actif
    Avatar de sourcilpower
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2011
    Messages : 128
    Billets dans le blog
    2
    Par défaut
    merci de ta reponse

    mais je doute qu'avec cette methode tu prend en compte mon "ON DUPLICATE KEY"

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je n'ai pas compris à quoi il pouvait servir.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. [Prototype] IE7 : Requête AJAX non effectuée
    Par air_v dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 21/01/2008, 10h38
  2. [SQL] Requete non fonctionnelle
    Par Romalafrite dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/09/2006, 15h31
  3. VB6 - RECORDSET multi requete
    Par laurent1 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/07/2006, 19h10
  4. [Upload] Upload de wav et renommage non effectué
    Par PuppeT mAsTer dans le forum Langage
    Réponses: 4
    Dernier message: 17/07/2006, 18h22
  5. [C#] Requete non executés
    Par ducker88 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/07/2005, 10h55

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