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

  1. #1
    Membre régulier
    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
    Points : 124
    Points
    124
    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();
    }
    N'oublie pas le pouce vert

  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
    Points : 44 155
    Points
    44 155
    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 régulier
    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
    Points : 124
    Points
    124
    Billets dans le blog
    2
    Par défaut
    est-il possible de me montrer alors svp
    N'oublie pas le pouce vert

  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
    Points : 44 155
    Points
    44 155
    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 régulier
    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
    Points : 124
    Points
    124
    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"
    N'oublie pas le pouce vert

  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
    Points : 44 155
    Points
    44 155
    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

  7. #7
    Membre régulier
    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
    Points : 124
    Points
    124
    Billets dans le blog
    2
    Par défaut
    C'est pour éviter de dupliquer les plats mais j'ai trouver une bonne solution pour aider les autres :

    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
     
    $pdo2 = conn_pdo();
     
    	$pdo2->exec("UPDATE plat SET plat_order='0'");
     
    	$sql = "
    	INSERT INTO plat (plat_lib,plat_lib2,plat_type,plat_order) 
    	VALUES 
    	('".utf8_decode(str_replace("'", "\'", $_POST['entree1_id']))."','".utf8_decode(str_replace("'", "\'", $_POST['entree1l2_id']))."','1','1')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['entree2_id']))."','".utf8_decode(str_replace("'", "\'", $_POST['entree2l2_id']))."','1','2')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['entree3_id']))."','".utf8_decode(str_replace("'", "\'", $_POST['entree3l2_id']))."','1','3')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['plat1_id']))."','".utf8_decode(str_replace("'", "\'", $_POST['plat1l2_id']))."','2','1')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['plat2_id']))."','".utf8_decode(str_replace("'", "\'", $_POST['plat2l2_id']))."','2','2')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['plat3_id']))."','".utf8_decode(str_replace("'", "\'", $_POST['plat3l2_id']))."','2','3')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['platc1_id']))."','','5','1')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['platc2_id']))."','','5','2')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['platc3_id']))."','','5','3')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['dessert1_id']))."','".utf8_decode(str_replace("'", "\'", $_POST['dessert1l2_id']))."','3','1')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['dessert2_id']))."','".utf8_decode(str_replace("'", "\'", $_POST['dessert2l2_id']))."','3','2')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['dessert3_id']))."','".utf8_decode(str_replace("'", "\'", $_POST['dessert3l2_id']))."','3','3')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['dessert4_id']))."','".utf8_decode(str_replace("'", "\'", $_POST['dessert4l2_id']))."','3','4')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['dessert5_id']))."','".utf8_decode(str_replace("'", "\'", $_POST['dessert5l2_id']))."','3','5')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['fromage1_id']))."','".utf8_decode(str_replace("'", "\'", $_POST['fromage1l2_id']))."','4','1')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['fromage2_id']))."','".utf8_decode(str_replace("'", "\'", $_POST['fromage2l2_id']))."','4','2')
    	,('".utf8_decode(str_replace("'", "\'", $_POST['fromage3_id']))."','".utf8_decode(str_replace("'", "\'", $_POST['fromage3l2_id']))."','4','3')
    	ON DUPLICATE KEY UPDATE plat_order=VALUES(plat_order);";
     
    	$pdo2->exec($sql);
    N'oublie pas le pouce vert

  8. #8
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu as les index adéquats dans ta table, tu ne peux pas avoir de doublons.

    Comme je t'ai dit, ce que tu fais est monstrueux mais tu fais ce que tu veux.
    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, 11h38
  2. [SQL] Requete non fonctionnelle
    Par Romalafrite dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/09/2006, 16h31
  3. VB6 - RECORDSET multi requete
    Par laurent1 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/07/2006, 20h10
  4. [Upload] Upload de wav et renommage non effectué
    Par PuppeT mAsTer dans le forum Langage
    Réponses: 4
    Dernier message: 17/07/2006, 19h22
  5. [C#] Requete non executés
    Par ducker88 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/07/2005, 11h55

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