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 :

Problème : Insertion dans base de donnée


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Problème : Insertion dans base de donnée
    Bonjour,


    Suite à une longue recherche, je vais vous faire part de mon problème.

    Dans 1 base de donnée, je dois récupérer des donnée d'un table et les copier dans une autre. Je récupère que les donnée, pas la structure. Très simple me dite vous, et je suis d'accord.

    Sauf que lorsque je passe à la parti code, je visualise bien les données de la première table en php, et lors de l'insertion ou l'update dans la second table, certaines valeurs du champ description sont vide, alors qu'il y a bien un contenu sur la table source. La structure des 2 tables sont identiques, le script s’exécute jusqu'au bout, et je n'ai pas de message d'erreur pendant l'exécution.

    Si quelqu'un peut éclairer ma lanterne. Pendant ce temps, je cherche une alternative.

    Merci



    code utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    // Ajout de la variable annonce
     
    $query = "UPDATE jos_jea_properties  SET description=".$annonce." WHERE ref='".$ref."'";

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Si je comprends bien, il s'agit d'un processus qui nécessite l'intervention de l'utilisateur et/ou un éventuel traitement entre la sélection des données et leur copie dans l'autre table ?

    On peut voir la structure des tables ?

    Tu as fait un echo de la requête réellement envoyée au serveur ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Le but est de récupérer des données d'une ancienne table pour les dupliquer sur la nouvelle table. Cette action ne sera pas à être effectuer par des utilisateurs, elle est exécuté qu'une fois.

    la connexion sur la base de donnée s’effectue bien, je rappel pas le code

    je détail le processus :

    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
     
    $articles_xml = simplexml_load_file('annonces.xml');
    foreach ($articles_xml ->annonces as $article) {
     
    //décodage de la conversion utf8  
     
            $txt= utf8_decode("{$article->Annonce}");
     
    //établissement de la requête
     
            $query = "UPDATE properties  SET description='".$txt."' WHERE ref='{$article->Ref}'";
     
           echo $query;
     
    //exécution de la requête
     
            $rq = mysql_query($query,$link);
     
    }
    le echo me retourne :


    UPDATE properties SET description='Mon texte' WHERE ref='3183'

    UPDATE properties SET description='Il fait très froid' WHERE ref='3335'

    UPDATE properties SET description='Mon texte bis' WHERE ref='2713'
    dans ma base de donnée sur la table destination :

    Champ : description
    Type : varchar(255)
    Interclassement : utf8_general_ci


    Guillaume

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Le but est de récupérer des données d'une ancienne table pour les dupliquer sur la nouvelle table. Cette action ne sera pas à être effectuer par des utilisateurs, elle est exécuté qu'une fois.
    Pourquoi s'embêter à développer une procédure en PHP alors ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO la_nouvelle_table (les_colonnes_a_alimenter)
    SELECT les_colonnes_utiles
    FROM l_ancienne_table
    WHERE condition_eventuelle
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    A défaut de ne pas maîtriser parfaitement le sql, j'ai utilisé une solution de remplacement.

    J'ai utilisé le modèle de requête que tu m'as présenté, et ça fonctionne en parti. La requête s’exécute bien, mais je retrouve le même problème qu'avant il n'effectue pas tout les enregistrements. J'ai 457 valeurs dans la table initial, et j'en récupère 384 sur la table destination.

    voici la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $query = "INSERT INTO properties (id,ref) SELECT IDAnnonce,Ref FROM annonces ";
     
    $rq = mysql_query($query,$link);
    J'ai essayé en faisant des insertions par groupe de 100 à l'aide de l'attribut LIMIT dans la requête, mais ca n'a rien changé. Je ne pense pas que ce soit un problème de nombre d'enregistrement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $query = "INSERT INTO properties (id,ref) SELECT IDAnnonce,Ref FROM annonces LIMIT 0, 100";
    Guillaume

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Les type, taille et Interclassement des champs des deux tables sont identiques, même en ne mettant que 2 enregistrement ( id et ref ), je n'ai pas tout les enregistrement.

    Guillaume

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    On peut voir la structure des tables ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Structure de la table initial :



    Structure de la table destination


  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Retire provisoirement l'auto-incrément de la table destination, insère les données puis remets l'auto-incrément pour les futures données.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    J'ai effectué la manipulation et le problème persiste.

    Guillaume

  11. #11
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Au lieu de passer par ton programme PHP, si tu essaies directement ta requête dans phpMyAdmin, ça donne quoi ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    En effectuant la requête dans phpMyAdmin, j'ai une erreur
    Duplicate entry '3224' for key 'ref'
    J'ai corrigé le problème de doublon, puis refais un test et l'enregistrement à abouti.

    Dorénavant j'utiliserai plus souvent le mode de requête dans phpMyAdmin

    Merci Beaucoup CinePhil pour ton aide,

    cordialement


    Guillaume

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

Discussions similaires

  1. Problème d'insertion dans base de donnée
    Par Maestro57 dans le forum Langage
    Réponses: 4
    Dernier message: 11/06/2007, 10h04
  2. [VB.NET]Requete INSERT dans base de données access
    Par mael94420 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/10/2006, 13h57
  3. Réponses: 6
    Dernier message: 09/06/2006, 12h17
  4. Réponses: 9
    Dernier message: 13/10/2005, 18h24
  5. Réponses: 8
    Dernier message: 11/05/2005, 14h48

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