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 UPDATE sous PDO


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 21
    Par défaut requete UPDATE sous PDO
    Bonjour;
    svp j'ai un petit souci dans mon code php qui fait une mise à jour de ma table mais la table se rempli avec la dernière itération de la boucle

    voici mon code php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $id=$_POST['id'];
    $secteur=$_POST['secteur'];
    $inspection=$_POST['inspection'];
    $etab=$_POST['etab'];
    for($i=0; $i<count($secteur); $i++){
     
    	     $req=$bdd->query('SET NAMES `utf8`');
                 $req= $bdd->prepare("UPDATE choix_etab SET secteur='$secteur[$i]',inspection='$inspection[$i]',etab='$etab[$i]' WHERE employe ='$id'");
    	     $req->execute(array());  	 
                          }
    voici le echo de ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req= $bdd->prepare("UPDATE choix_etab SET secteur=4,inspection=3,etab=7 WHERE employe =2501");
    $req= $bdd->prepare("UPDATE choix_etab SET secteur=1,inspection=1,etab=1 WHERE employe =2501");
    $req= $bdd->prepare("UPDATE choix_etab SET secteur=2,inspection=4,etab=8 WHERE employe =2501");
    $req= $bdd->prepare("UPDATE choix_etab SET secteur=3,inspection=2,etab=4 WHERE employe =2501");
    $req= $bdd->prepare("UPDATE choix_etab SET secteur=4,inspection=3,etab=6 WHERE employe =2501");
    mais dans ma table je trouve que la dernière itération!!!!!!!
    quelqu'un pourra m'aider svp merci
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    salut,

    Utiliser PDO comme tu le fais n'a absolument aucune utilité. Relis un ou deux tuto ou la doc.
    Ensuite c'est logique : tu mets à jour 5 fois consécutivement les mêmes enregistrements donc c'est normal qu'à la fin de ton script tes enregistrements reflètent la dernière mise à jour
    Au lieu de faire WHERE employe = 2501, tu fais WHERE id = xxx alors là tu mettrais à jour qu'un seul enregistrement

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je pense qu'il faut s'y prendre autrement :

    1- Tu supprimes d'abord (DELETE) toutes les anciennes lignes avec cet id ("employe").
    2- Tu fais une boucle pour AJOUTER les nouvelles lignes (INSERT).

    IMPORTANT : on utilise des requêtes préparées (correctement) :
    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
    <?php
    $id = $_POST['id'];
    $secteur = $_POST['secteur']; // array
    $inspection = $_POST['inspection']; // array
    $etab = $_POST['etab']; // array
    // ----------
    // 1- On DELETE d'abord les anciennes lignes
    $sql_delete = "DELETE FROM choix_etab WHERE employe = :employe");
    $req_delete = $bdd->prepare($sql_delete);
    $req_delete->execute(array(
    	':employe' => $id
    	));  	 
    // ----------
    // 2- On INSERT ensuite les nouvelles lignes
    $sql_insert = "INSERT INTO choix_etab (employe,secteur,inspection,etab) VALUES (:employe,:secteur,:inspection,:etab)";
    $req_insert = $bdd->prepare($sql_insert);
    foreach( $secteur as $i => $secteur_val )
    {
    	$req_insert->execute(array(
    	':employe' => $id,
    	':secteur' => $secteur[$i],
    	':inspection' => $inspection[$i],
    	':etab' => $etab[$i]
    	));  	 
    }
    // ----------

  4. #4
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 21
    Par défaut
    Bonjour
    merci pour vos réponse, enfaîte j'ai pensé a cette solution déjà (DELETE, INSERT) mais j'ai préférer les fusionné dans une seul requête Update

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

Discussions similaires

  1. [PDO] Requete UPDATE avec PDO fonctionnelle en local mais pas sur OVH
    Par olinet dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/12/2014, 14h57
  2. la requete UPDATE sous sql server
    Par ibrahimCA dans le forum ASP.NET
    Réponses: 7
    Dernier message: 23/05/2011, 19h43
  3. probleme Requete Update sous paradox
    Par toxicoakatox dans le forum Bases de données
    Réponses: 11
    Dernier message: 14/07/2009, 03h44
  4. probleme de requetes UPDATE sous CentOS
    Par King_T dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/03/2007, 16h35
  5. Requete Update sous Acces à partir d'une autre
    Par Le_Phasme dans le forum Access
    Réponses: 1
    Dernier message: 09/10/2006, 10h48

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