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 :

Deux requêtes à la suite, non exécution de la première [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut Deux requêtes à la suite, non exécution de la première
    Bonjour,

    je copie une ligne d'une table "TABLE" dans une table temporaire "TABLETEMP".
    Ensuite, je modifie la ligne dans ma table temporaire via une requête.

    Je souhaite enfin supprimer la ligne de ma table "TABLE" et insérer dans la table "TABLE" la ligne de la table temporaire pour avoir les modifications dans la bonne table.

    Je fais donc ces requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $reqdp = 'DELETE FROM TABLE WHERE Repr_id = '.$id;
    $resdp = mysql_query($reqdp);
     
    // On insère les nouvelles données
    $reqip = 'INSERT INTO TABLE
    		SELECT * FROM TABLETEMP WHERE Repr_id ='.$id;
    $resip = mysql_query($reqip);
    Problème : à l'insertion j'ai l'erreur de duplication de la clé. Ma ligne ne s'est apparemment pas supprimée (1ère requête) dans ma table TABLE et donc aucune copie de TABLETEMP vers TABLE n'est faite.

    J'ai essayé de faire mes requêtes une à une dans phpmyadmin, aucun problème. J'ai fait des echo de chaque requête, elles sont bonnes. Aucune erreur n'est détectée.

    Est-ce que vous avez une idée ? Merci !

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    on peut vois la structure de TABLE ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Par défaut
    Si ta requete 1 ne fonctionne pas c'est etrange c'est qu'il doit y avoir un probleme dans les noms de colonnes :

    essaye ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $reqdp = 'DELETE FROM TABLE WHERE Repr_id = '.$id;
    $resdp = mysql_query($reqdp) or die('Erreur SQL !<br />'.$reqdp.'<br />'.mysql_error());
    il devrait te donner un indice sur le probleme rencontré, sinon c'est que la requete s'effectue mais que $id n'est pas bon essaye un echo $id aussi pour voir ce qu'il contient.

  4. #4
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut
    Voici la structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE TABLE `TABLE` (
      `idx_retour` int(11) NOT NULL AUTO_INCREMENT,
      `Repr_id` int(11) NOT NULL,
      `Rtpd_id` int(11) NOT NULL,
      `Repr_num_bon` int(11) NOT NULL ,
      `Repr_date_generation` date NOT NULL ,
      `Clie_nom` varchar(50) NOT NULL,
      `Clie_id` int(11) NOT NULL,
      PRIMARY KEY (`idx_retour`),
      UNIQUE KEY `Repr_id` (`Repr_id`),
      KEY `Rtpd_id` (`Rtpd_id`)
    ) ;
    EDIT : j'ai déja fait ces tests, aucune erreur sur ma requête et $id contient bien l'id que je veux.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Par défaut
    Ce que je comprend pas trop c'est que tu supprime la ligne en 1er et que tu l'insert apres ? Sinon ton code n'a pas l'air de contenir d'erreur vraiment flagrante ^^

    Perso le code je l'ecrit comme ca dans la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $reqdp = "DELETE FROM TABLE WHERE Repr_id = $id";
    $resdp = mysql_query($reqdp);

  6. #6
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut
    Citation Envoyé par nightfall59 Voir le message
    Ce que je comprend pas trop c'est que tu supprime la ligne en 1er et que tu l'insert apres ? Sinon ton code n'a pas l'air de contenir d'erreur vraiment flagrante ^^
    En fait, les deux lignes (une dans la TABLE et une dans la TABLETEMP) sont identiques au niveau des clés. Seulement, dans TABLETEMP je fais des modifications sur le contenu. Une fois que ces modifications sont finies, il faut que je les mette dans ma TABLE. Donc que je copie/colle ma ligne de TABLETEMP dans TABLE.

    Les lignes étant identiques par les clés, je dois d'abord supprimer la ligne de TABLE pour ensuite insérer la copie de TABLETEMP dans TABLE et avoir ma ligne avec ses modifications. Si je ne la supprime pas, j'aurai une erreur de "duplicate key".

    MaitrePylos > juste pour vérifier dans ma table maintenant ou dans mon programme ? Si c'est maintenant : je n'ai aucun doublon. Si c'est dans le programme : j'en ai un, c'est pour ça que je veux le supprimer avant l'insertion ^^

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Par défaut
    tu as essayé un UPDATE au lieu de supprimer et re inserer apres?

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    tu peux aussi faire un requête sur la table en vérifiant que tu n'aurais quand même pas des doublons sur Repr_id

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/11/2010, 19h01
  2. Réponses: 6
    Dernier message: 01/09/2009, 13h01
  3. Exécuter plusieurs requêtes à la suite
    Par FrenchFrogger dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 14/10/2008, 19h16
  4. exécuter deux requêtes SQL à partir d'un bouton de commande
    Par Platon93 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/12/2006, 17h57
  5. [MySQL] Requête non exécutée
    Par harlock59 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 03/05/2006, 15h42

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