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 :

INSERT et UPDATE [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut INSERT et UPDATE
    Bonjour,


    Je dispose de scripts sql permettant d'ajouter des données dans une base en utilisant l'instruction INSERT.
    Dans ces instruction je met l'ID des champs à NULL (je n'ai pas d'autre choix sur ce point).
    Ce qui fait qu'en cas d'ajout préalable de cette même ligne , il y a création de doublons.

    Je souhaite ajouter dans mon script un contrôle supplémentaire permettant d'éviter l'ajout de Doublon (contrôle sur le champ nom par exemple).

    Je n'ai pas trouvé d'informations à ce sujet, auriez-vous un conseil ou une orientation a suivre pour réaliser ce controle?

    Merci.

  2. #2
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    regarde du coté d'ON DUPLICATE KEY

  3. #3
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut
    le problème est que si j'ai bien compris le fonction de ON DUPLICATE KEY, cette commande détecte les id identiques.

    Or dans mon cas je n'ai pas la main sur les ID. et insert des lignes n'ayant pas d'id spécifié par défaut, il est généré tout seul par mysql lors de l'insertion.

  4. #4
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    sans forcément connaître la valeur des identifiant tu peux faire de la sorte :

    INSERT INTO tatable VALUES (blabla...)
    ON DUPLICATE KEY UPDATE id = select last_insert_id() +1;

  5. #5
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut
    Je ne suis pas sur que l'on se comprend bien

    Disons que j'ai cela dans ma table :

    id | nom | prenom
    5 OK OK2

    j'ai ma commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table (nom,prenom) VALUES ('OK','OK2')
    Cette instruction va crée un doublon dans la table

    En faisant cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO table (nom,prenom) VALUES ('OK','OK2')
    ON DUPLICATE KEY UPDATE id = select last_insert_id() +1;
    Cela va betement executer l'instruction INSERT et aussi créer un doublon

  6. #6
    Membre chevronné
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par défaut
    Bah, tu fais un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT nom, prenom FROM client;
    Si cela ne te retourne pas de lignes : Tu fais un INSERT.

    Saurais-tu coupler ça avec le PHP maintenant ?

  7. #7
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut
    tout en script sql , avec du php j'aurais trouvé une magouille depuis longtemps

  8. #8
    Membre chevronné
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par défaut
    C'est avec un Trigger dans ce cas. Je ne vois pas un autre moyen de faire cela.

  9. #9
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    ou sinon tu purge ta table à la fin de tes insert

    tu supprime les doublons à la fin, mais un trigger serait plus approprié!

    je ne t'avais effectivement pas compris, tu parlais d'ID null, de doublons, pour moi les doublons étaient sur les identifiants (qui étaient donc non unique )

  10. #10
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut
    Merci pour ces conseils , je vais creuser la dessus

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

Discussions similaires

  1. [Conception] Formulaires identiques pour INSERT et UPDATE
    Par MiJack dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 16/06/2006, 11h34
  2. performance delete/insert vs update
    Par Dionisos dans le forum Langage SQL
    Réponses: 6
    Dernier message: 01/08/2005, 18h23
  3. [Debutant] Insert ou update...
    Par kluh dans le forum Oracle
    Réponses: 15
    Dernier message: 13/07/2005, 14h35
  4. événement sur INSERT, DELETE, UPDATE
    Par papouAlain dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/12/2004, 15h40
  5. [Débutant][PS] modifier un insert en update
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 19/05/2004, 16h33

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