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

Requêtes MySQL Discussion :

Déplacement de données dans la meme table


Sujet :

Requêtes MySQL

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

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut Déplacement de données dans la meme table
    Bonjour,
    J'insert dans une base le contenue d'un array,
    mon probleme est que lors de l'insertion, la base s'auto incremente.
    hors, je voudrais que toute les données issue de l'array soient enregistrer dans la meme ligne(meme id).
    Est ce possible, si oui comment.
    Merci !

  2. #2
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Saluton,
    Il faut faire une requête UPDATE et non une requête INSERT
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut
    Citation Envoyé par Maljuna Kris Voir le message
    Saluton,
    Il faut faire une requête UPDATE et non une requête INSERT
    oui, c est ce que je suis en train de tester sans succes;
    je definis quoi dans le SET l id ?
    j'ai deja essayé, ca ne fonctionne pas.
    ca me donne ca
    "Duplicate entry '1' for key 1"
    avec cette requette = mysql_query("UPDATE exept_tbl SET id = 1 WHERE id >1")or die(mysql_error());
    merci de ton coup de main.

  4. #4
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Je crois qu'il y a méprise.
    Soit l'enregistrement existe déjà et le but est de modifier ses colonnes (mais pas l'identifiant), soit tu crées un nouvel enregistrement et tu dosi donc accepter que le serveur génère l'id autoincrémentée.
    Que contient cet array dont tu nous parles ?
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut
    Citation Envoyé par Maljuna Kris Voir le message
    Je crois qu'il y a méprise.
    Soit l'enregistrement existe déjà et le but est de modifier ses colonnes (mais pas l'identifiant), soit tu crées un nouvel enregistrement et tu dosi donc accepter que le serveur génère l'id autoincrémentée.
    Que contient cet array dont tu nous parles ?
    Oui, les enregistrements existe deja, chacun ayant son propre id;
    ce que je voudrais, c est avoir le contenue de mon array chacun dans son champ, mais sur le meme id.
    soit lors de la 1ere insertion, soit en faisant un update,
    je n ai pas de preference quand a la methode, je veux simplement ce resultat !

    l array contient les case cocher d un formulaire.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonjour,
    ce qu'il vous faut, c'est formater correctement votre requête update, vous n'allez pas faire 5 requêtes sous prétexte que vous avez 5 colonnes à modifier dans la même ligne?

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
     
      $id = 1;
      $tab = array('texte' = 'Je suis un pro du PHP', 'categorie' = 7);
     
      $req = 'UPDATE `votre_table` SET ';
     
      foreach ($tab as $cle => $val) $req .= "`$cle` = '$val', ";
     
      $req = substr($req, 0, strlen($req)-2).' WHERE `id` = '.$id;
     
    ?>
    Je vous rappel qu'ici c'est le forum MySQL et non PHP/MySQL.

    Cordialement,
    DaRiaN.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut
    Citation Envoyé par DaRiaN Voir le message
    Bonjour,
    ce qu'il vous faut, c'est formater correctement votre requête update, vous n'allez pas faire 5 requêtes sous prétexte que vous avez 5 colonnes à modifier dans la même ligne?

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
     
      $id = 1;
      $tab = array('texte' = 'Je suis un pro du PHP', 'categorie' = 7);
     
      $req = 'UPDATE `votre_table` SET ';
     
      foreach ($tab as $cle => $val) $req .= "`$cle` = '$val', ";
     
      $req = substr($req, 0, strlen($req)-2).' WHERE `id` = '.$id;
     
    ?>
    Je vous rappel qu'ici c'est le forum MySQL et non PHP/MySQL.

    Cordialement,
    DaRiaN.
    Merci du coup de main malgres le mauvais endroit ou j ai soumis ma question,
    je vous tiens au courant !

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut
    Coimplement d'info

    Mon array n'est pas déclaré en tant que tel,
    c'est un $_POST.

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Comprenez bien une chose, vous devez modéliser votre formulaire comme vous avez modélisé votre table, ou alors, utilisez les valeurs de la superglobale $_POST pour créer un tableau dont les index correspondent parfaitement aux colonnes de votre table. Vous gagnerez de la lisibilité et du temps, car votre problème sera résolu sans passer par 50.000 requêtes.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut
    Citation Envoyé par DaRiaN Voir le message
    Comprenez bien une chose, vous devez modéliser votre formulaire comme vous avez modélisé votre table, ou alors, utilisez les valeurs de la superglobale $_POST pour créer un tableau dont les index correspondent parfaitement aux colonnes de votre table. Vous gagnerez de la lisibilité et du temps, car votre problème sera résolu sans passer par 50.000 requêtes.

    ma table se creer et se structure en fonction des variables creer par mon formulaire

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Tout cela pour dire que votre superglobale $_POST est un tableau comme $tab = array() l'est aussi. Cela n'est pas un obstacle en soit et ne change en rien la méthode précédemment décrite.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut
    Je precise ma qestion
    j'obtient ca :

    id |champ1|champ2|champ3
    1...|toto1......|vide.......|vide
    2...|vide............|toto2...|vide
    3...|vide............|vide.......|champ3

    ce que je voudrais moi, c'est ca :

    id..|champ1|champ2|champ3
    1...|toto1.....|toto2.....|toto3

    le nombre de champ et de toto est calibré, et sont toujours a la meme valeur.

  13. #13
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Je pense avoir été clair dans mon précédent code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE `votre_table`
     SET `champ1` = 'toto1', `champ2` = 'toto2', `champ3` = 'toto3'
     WHERE `id` = 1;
    Aidez vous de votre tableau pour formater cette requête.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut
    ...

Discussions similaires

  1. recuperer une donnée dans le meme fichier
    Par phpaide dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2006, 11h03
  2. [HIBERNATE] lier 2 bases de données dans une même table
    Par bondarenko dans le forum Hibernate
    Réponses: 4
    Dernier message: 31/03/2006, 16h01
  3. 2 auto increment dans une meme table
    Par gesualda dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 12/10/2005, 09h31
  4. Copier un ensemble d'enregistrement dans la meme table
    Par SergeF dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2004, 18h22

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