Parcours de 2 fichiers - PHP - Programmation
Marsh Posté le 28-02-2012 à 15:51:56
Moi je dit ça comme ça, mais :
- import fichier 1 dans une table BDD temp1
- import fichier 2 dans une table BDD temp2
- consolidation des données dans une table BDD temp3 via requête SQL
- export fichier via requête SQL
Ça sera bien plus simple et rapide que de recoder tout à la main je dirais.
Marsh Posté le 06-03-2012 à 16:01:32
Bonjour,
J'ai suivi le conseil de MEI et j'ai importé les données dans 2 tables sous MySQL. Les 2 tables sont faites comme suit :
Citation : |
Je suis coincé sur la requête SQL visant à trouver, dans la table routage, les numord qui n'apparaissent pas dans circuit (en vue de nettoyer les datas donc). J'ai essayé plusieurs choses mais en vain, ça ne sort pas ce que j'aimerais. Auriez vous une solution ?
Marsh Posté le 28-02-2012 à 13:57:50
Bonjour,
Je suis coincé sur un script pourtant relativement simple mais j'avoue que je bloque un peu.
J'ai 2 fichiers de données extraits d'une BDD 4D, qui hélas ne vérifie pas l'intégrité des data, si bien qu'on se retrouve avec des enregistrements fantômes :
routage.txt qui contient des enregistrements de la forme :
32653;0;1;ptt123;ft;....;0;0
15099;0;1;ptt123;ft;...;0;0
29849;0;1;ptt123;ft;...;0;0
.......
et circuit.txt
8704;22001;;autocom pole;01;faux;...;0;0
32653;22099;;autocom A;01;...;0;0
8324,22123;;local licorne;...;0;0
.....
J'ai commencé à essayer d'organiser un peu ça :
<?php
$fileroutage=fopen('./routage.txt',"r" );
$filecircuit=fopen('./circuit.txt","r" );
while (!feof($filerouage))
{
$bufferroutage=fgets($fileroutage,4096);
//mise en forme dans un array
$listingroutage = list($numordre,$paralle,$liaison,$codeS,$codeR,$tete,$amorce,$observ,$pos_rout,$paire,
$MAJ,$numpaire,$etat,$rubrique,$ordre) = explode (";",$bufferroutage);
}
while (!feof($filecircuit))
{
$buffercircuit=fgets($filecircuit,4096);
$listingcircuit= list ($ordinateur,$circuit,$appellation,$un,$adresse,$code_centre,$dispo,
$code_societe,$MAJ,$constitution,$nature,$observ,$datelib,$SDA,$numGTR,$averifier,$groupe,
$nummanc,$titulaire,$vital,$cservice,$czonegeo,$deux,$trois,$quatre,$cinq) = split (';',$buffercircuit);
}
?>
Le but du jeu est de rechercher, pour chaque ligne du premier fichier, si on trouve dans le 2e fichier la même valeur pour une variable donnée. En l’occurrence, parcourir le fichier routage et à chaque ligne, verifier si on retrouve dans le fichier circuit : $numordre==$ordinateur quelque part dans le fichier circuit ? (Par exemple, dans cet extrait, on voit qu'on retrouve 32653 dans les 2 fichiers) si oui, on écrit la ligne valide routage dans un autre fichier en écriture ou affichage dans le navigateur (je cherche à faire du ménage dans les enregistrements fantômes en fait). J'ai essayé via boucle imbriquée, ou bien de mettre dans 2 tableaux mais je me perds tout seul et ça ne retourne pas ce que je voudrais
Si une âme charitable pouvait m'aider, j'en serais ravi
Message édité par roswellentongues le 28-02-2012 à 14:01:45