Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/12/2010, 10h36   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 7
Points : 1
Points : 1
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 :
1
2
3
4
5
 
 
// Ajout de la variable annonce
 
$query = "UPDATE jos_jea_properties  SET description=".$annonce." WHERE ref='".$ref."'";
guillaume62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 10h48   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 957
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 957
Points : 18 165
Points : 18 165
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 11h11   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 7
Points : 1
Points : 1
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 :
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 :

Citation:

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
guillaume62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 11h13   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 957
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 957
Points : 18 165
Points : 18 165
Envoyer un message via MSN à CinePhil
Citation:
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 :
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 11h41   #5
Invité de passage
 
Inscription : décembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 7
Points : 1
Points : 1
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 :
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 :
1
2
3
 
 
$query = "INSERT INTO properties (id,ref) SELECT IDAnnonce,Ref FROM annonces LIMIT 0, 100";
Guillaume
guillaume62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 12h10   #6
Invité de passage
 
Inscription : décembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 7
Points : 1
Points : 1
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
guillaume62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 13h35   #7
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 957
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 957
Points : 18 165
Points : 18 165
Envoyer un message via MSN à CinePhil
On peut voir la structure des tables ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 13h53   #8
Invité de passage
 
Inscription : décembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 7
Points : 1
Points : 1
Structure de la table initial :



Structure de la table destination

guillaume62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 13h55   #9
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 957
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 957
Points : 18 165
Points : 18 165
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/12/2010, 13h58   #10
Invité de passage
 
Inscription : décembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 7
Points : 1
Points : 1
J'ai effectué la manipulation et le problème persiste.

Guillaume
guillaume62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 14h01   #11
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 957
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 957
Points : 18 165
Points : 18 165
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 14h13   #12
Invité de passage
 
Inscription : décembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 7
Points : 1
Points : 1
En effectuant la requête dans phpMyAdmin, j'ai une erreur
Citation:
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
guillaume62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h10.


 
 
 
 
Partenaires

Hébergement Web