|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Date d'inscription: mars 2009
Messages: 108
|
Bonjour,
J'utilise 2 tables Je rapatrie le contenu d'un fichier CSV vers la table "mailrse", je rempli le champ "mail_rse.Agence" en executant la requête "$eXtractAgence". Voilà la strucuture des 2 tables que j'utilise: Code :
CREATE TABLE `equipmt_region` ( `equipement` varchar(15) NOT NULL, `region` varchar(4) NOT NULL, UNIQUE KEY `equipement` (`equipement`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `mailrse` ( `site` varchar(10) NOT NULL, `parent` varchar(10) NOT NULL, `Auteur` varchar(20) NOT NULL, `Type` text NOT NULL, `date` varchar(20) NOT NULL, `Commentaire` text NOT NULL, `Region` varchar(20) NOT NULL, `Agence` varchar(20) NOT NULL, `motif` text NOT NULL, `num_evt` varchar(20) NOT NULL, KEY `site` (`site`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Code :
$fichier = fopen("monFichier.CSV","r"); //tant qu'on est pas a la fin du fichier : while (!feof($fichier)) { /* variable pour avoir la taille de ligne */ $tailleLigne = 0; // On recupere toute la ligne $uneLigne = fgets($fichier); $tailleLigne = strlen($uneLigne); $uneLigne = substr($uneLigne,1,$tailleLigne-4); //On met dans un tableau les differentes valeurs trouvés (ici séparées par un '","') $tableauValeurs = explode(";", $uneLigne); $eXtractAgenceSQL= mysql_query('SELECT equipmt_region.region FROM equipmt_region, mailrse WHERE mailrse.site=equipmt_region.equipement OR mailrse.parent=equipmt_region.equipement'); $eXtractAgence=mysql_fetch_row($eXtractAgenceSQL); // On crée la requete pour inserer les donner (ici il y a 5 champs donc de [0] a [4]) if($tableauValeurs[0]!=""){ mysql_query("INSERT INTO mailrse (site,parent,Auteur,Type,date,Commentaire,Region,Agence,motif,num_evt) VALUES (\"$tableauValeurs[4]\",\"$tableauValeurs[6]\",\"$tableauValeurs[11]\",\"$tableauValeurs[1]\",\"$tableauValeurs[9]\", \"$tableauValeurs[12]\",\"$tableauValeurs[7]\",\"$eXtractAgence[0]\",\"$tableauValeurs[13]\",\"$tableauValeurs[0]\")"); } } Exemple: Code :
INSERT INTO `mailrse` (`site`, `parent`, `Auteur`, `Type`, `date`, `Commentaire`, `Region`, `Agence`, `motif`, `num_evt`) VALUES ('C20195B', 'S20195', 'toto', 'Coupure, '22/01/2010 09:51', '1025250', '', 'IDF', '', 'VT00001892'); Code :
INSERT INTO `equipmt_region` (`equipement`, `region`) VALUES ('S20195', 'MED'); Code :
('C20195B', 'S20195', 'toto', 'Coupure, '22/01/2010 09:51', '1025250', '', 'MED', '', 'VT00001892'); Code :
('C20195B', 'S20195', 'toto', 'Coupure, '22/01/2010 09:51', '1025250', '', 'IDF', '', 'VT00001892'); |
|
|
|
|
|
#2 |
|
Membre à l'essai
![]() Date d'inscription: avril 2009
Localisation: 69
Messages: 40
|
Tu as vérifié la valeur de $eXtractAgence[0] ?
Tu es sur que celle-ci correspond bien à ce que tu attends ? Sinon personnellement je ne vois pas |
|
|
|
|
|
#3 |
|
Membre du Club
![]() Date d'inscription: mars 2009
Messages: 108
|
$eXtractAgence[0] me retourne le champ "equipmt_region.region", sauf que pour "S20195" le résultat doit être "MED" et pas "IDF"
C'est bien le champ que je souhaite mais pas la bonne valeur quoi. |
|
|
|
|
|
#4 |
|
Membre à l'essai
![]() Date d'inscription: avril 2009
Localisation: 69
Messages: 40
|
Bon alors je reformule ma question
Quel valeur récupère tu dans $eXtractAgence[0] ? Peut tu l'afficher ? Si cette valeur comme tu dis ne correspond pas à ce que tu attends c'est que le problème se situe dans ta base de données lors de l'enregistrement soit dans la requête que tu passe à ta base de données pour récupérer cette valeur |
|
|
|
|
|
#5 |
|
Expert Confirmé
![]() Date d'inscription: mai 2002
Localisation: Auvergne
Messages: 1 567
|
Bonjour,
Tu verras bien en fonction de la valeur $eXtractAgence[0] que Djilow te demandes d'afficher ... Sinon, je ne ferais pas ta requête comme celà (les jointures sur les where sont plutôt à modifier par le mot clé JOIN) et puis ensuite tu fais ton OR. De même faire des clés sur des chaîne c possible mais plus long dans les requêtes (et puis moi je trouve pas celà trop clair) de plus tu fais des recherches sur des chaînes de longueurs différentes ... Voilà comment, je ferais (a toi de voir ensuite), création d'un id sur chaque table (id_equip sur equipement et id_mail sur mailrse) puis la requête Code :
$eXtractAgenceSQL= mysql_query('SELECT equipmt_region.region FROM equipmt_region E INNER JOIN mailrse M ON E.id_equip = M.id_mail WHERE M.site=E.equipement OR M.parent=E.equipement');
__________________
fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran) |
|
|
|
|
|
#6 |
|
Membre du Club
![]() Date d'inscription: mars 2009
Messages: 108
|
Finalement j'ai résolu mon pb en exécutant 2 requêtes successives. C'est peut être lourd mais ça résoud le pb
Code :
if($tableauValeurs[0]!=""){ mysql_query("INSERT INTO mailrse (site,parent,Auteur,Type,date,Commentaire,Region,Agence,motif,num_evt) VALUES (\"$tableauValeurs[4]\",\"$tableauValeurs[6]\",\"$tableauValeurs[11]\",\"$tableauValeurs[1]\",\"$tableauValeurs[9]\", \"$tableauValeurs[12]\",\"$tableauValeurs[7]\",\"\",\"$tableauValeurs[13]\",\"$tableauValeurs[0]\")"); } } $eXtractAgenceSQL= "UPDATE mailrse SET Agence =( SELECT region FROM equipmt_region WHERE equipmt_region.equipement = mailrse.parent OR equipmt_region.equipement = mailrse.Site)"; $eXtractAgence=mysql_query($eXtractAgenceSQL); Cordialement. |
|
|
|
|
|
![]() |
||
Requête retournant résultat inattendu
|
||
| Outils de la discussion | |
|
|