Rechercher : dans
Par :

Lecture de fichier text avec php

Dernière réponse le 18 jun 2009 à 20:21:21 mimir87uk, le 9 jun 2009 à 21:17:33 
 Signaler ce message aux modérateurs

Bonjour,
je voudrais savoir comment un fichier text en PHP qui est divisé en champs, donc je ve lire les champs pour remplir ma base de donnée(MySQL). notant que j'ai pa besoin de tous les champs , et il y a des espace entre les champs dans le fichier.

mon fichier txt est comme ça:

CTN_CDR 200051SSC 024877444 20051120180208 054187785 BMDS7A WTA161D 00003600 00000475
CTN_CDR 200051SSC 021222927 20051120180323 071294410 AINN7A OTA161D 00003601 00000475
CTN_CDR 200051SSC 029348197 20051120180601 077778061 GHARD7A OTA161D 00003583 00000473
CTN_CDR 200051SSC 029871689 20051120180817 079070147 GHARD7A OTA161D 00003601 00000475
CTN_CDR 200051SSC 029350264 20051120181002 077267367 GHARD7A OTA161D 00003601 00000475
CTN_CDR 200051SSC 029712520 20051120181111 050787837 OURGL7A WTA161D 00003152 00000416

Configuration: Windows XP Internet Explorer 7.0

Meilleures réponses pour « lecture de fichier text avec php » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
[Python] Lire et écrire des fichiers CSV VoirLIRE ET ÉCRIRE DES FICHIERS CSV Python www.python.org, dans sa version 2.4 supporte de facto le format CSV (comma-separated values: valeurs séparées par des virgules). La Library Reference est certes très explicative à ce sujet, mais uniquement...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

Alain_42, le 9 jun 2009 à 22:59:16

tu lis ton fichier text par la fonction file() de php pas besoin de fopen et fclose
le resultat est mis dans un array ligne par ligne

$array_fichier=file(ton_fichier.txt);


//tu fais ta connexion à la base 

//puis ensuite tu explore cet array ligne par ligne
for($i=1;$i<=sizeof($array_fichier);$i++0){

array_champs=explode(" ",$$array_fichier); //on explode par rapport à l'espace tu obtiens un array ou les champs sont séparés

$sql="INSERT INTO ta_table VALUES('".array_champs[0]."','".array_champs[1]."' etc........);
mysql_query($sql);

}

Répondre à Alain_42

2

mimir87uk, le 10 jun 2009 à 13:56:14

ça pas marcher, est ce qu'il y a une autre idé ?

Répondre à mimir87uk

3

jeremieca, le 10 jun 2009 à 14:01:11

Si ça doit marcher tu as mis quel code ?

+

Répondre à jeremieca

4

jeremieca, le 10 jun 2009 à 14:17:50

<?php
$array_fichier = file("txt.txt");

for($i=0; $i+1 <= sizeof($array_fichier); $i++){

$array_champs = explode(" ", $array_fichier[$i]);


echo $array_champs[0]."<br>";
echo $array_champs[1]."<br>";
echo $array_champs[2]."<br>";
echo $array_champs[3]."<br>";
echo $array_champs[4]."<br>";
echo $array_champs[5]."<br>";
echo $array_champs[6]."<br>";
echo $array_champs[7]."<br>";
echo $array_champs[8]."<br><br><br>";


}

?>

Voila ça ça marche !

PS : Remplace les echo() par un INSERT sql.

Amicalement, JC.

Répondre à jeremieca

5

mimir87uk, le 10 jun 2009 à 19:12:45

Je pense le problem que dans les lignes le vide entre les champs n'est pa fix dans mon fichier, des fois 3 blanc des fois 4 des fois 7 ....

Répondre à mimir87uk

6

Alain_42, le 10 jun 2009 à 22:28:11

ça ne marche pas ne veut rien dire !

voilà une solution qui fonctionne qq soit le nombre d'espoace séparateurs

<?php
$array_fichier = file("ton_fichier_txt.txt"); //attention mettre le chemin relatif de ton fichier par rapport a ce script php

for($i=0; $i<sizeof($array_fichier); $i++){

$array_champs = preg_split("/[\s]+/", $array_fichier[$i]);

//verification
echo $array_champs[0]."<br>";
echo $array_champs[1]."<br>";
echo $array_champs[2]."<br>";
echo $array_champs[3]."<br>";
echo $array_champs[4]."<br>";
echo $array_champs[5]."<br>";
echo $array_champs[6]."<br>";
echo $array_champs[7]."<br>";
echo $array_champs[8]."<br><br><br>";

//comme te l'a dit jeremieca il te suffit de mettre tes INSERT dans ta table à la place des echo

}

?>

Répondre à Alain_42

7

mimir87uk, le 11 jun 2009 à 13:05:36

Merci bcp, ça marche comme ça,
maintenent j'ai un champs dans ma table qui doit prendre le numero de chaque ligne,

par exemple 1 pour la ligne numero 1

c'est à dire je veut metre auto_increment pour ce champs

et merci d'avance

Répondre à mimir87uk

8

Alain_42, le 11 jun 2009 à 14:03:05

Tu mets ton champ numero en INT (3) autoincrement au moment ou tu cree ta table

et qd tu fais ton insert tu fais VALUE('',' etc...

c'est a dire que tu ne mets pas de valeur pour le champ numero, juste ''

Répondre à Alain_42

9

mimir87uk, le 15 jun 2009 à 12:47:38

Bonjour

$array_fichier = file("fp.txt");

comment metre le fichier que je choisi avec le bouton parcourir dans cette instruction, c'est à dire au lieu de metre file("fp.txt"), je veu metre le fichier choisi avec le bouton parcourir


j'ai met
<form method='post' action='lecture.php' encrypte='multipart/form-data'>
<input type='file' name='fichier'>
<input type='submit' value='envoyer'>
</form>

la page lecture.php qui va lire mon fichier pour insérie les données dans ma base de données

Répondre à mimir87uk

10

Alain_42, le 15 jun 2009 à 15:28:43

<form method='post' action='lecture.php' encrypte='multipart/form-data'>
<input type='file' name='fichier'>
<input type='submit' value='envoyer'>
</form>


attention ce formulaire te permet de parcourir un fichier sur ton PC, tu peux récupérer le nom du fichier par la variable globale $_FILES:

$_FILES['fichier']['name']

MAIS ton script php ne peut travailler qu'avec un fichier qui est PRESENT sur le serveur hors ton fichier sera encore sur ton PC donc la fonction file() ne pourra pas le lire

alors soit ton serveur est "local" sur ton PC c a d Wamp ou easyPhp auquel cas ce serait possible

soit tu transfert d'abord tes fichiers sur le serveur et par ton script php tu explore le dossier dans lequel tu les as mis vas voir readdrir() ce qui te generara une liste

cette liste remplacera l'input type="file"

En résumé:

tu transferes tes fichiers sur le serveur en ftp dans un dossier "fichiers_a_traiter" par exemple

tu fais une première page de choix du fichier à traiter avec:


<form method="post" action="lecture.php">

<select name="fichier" >
<?php
$rep_fichiers="fichiers_a_traiter"; //tu changes si tu n'as pas nommé ainsi ton dossier
//generation de la liste des fichiers
if ($handle = opendir($rep_fichiers)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") { // on ne tient pas compte des fichiers . et .. 
            echo '<option value="'.$file.'">'.$file.'</option>';
        }
    }
    closedir($handle);
}
?>
</select>
<input type='submit' name="envoyer" value='Envoyer'>
</form>

et le script lecture.php:

<?php
if(isset($_POST['envoyer'])) {
	$fichier=$_POST['fichier']; //recupération du choix dans la liste
	
	$array_fichier=file($fichier);
	
	//etc....la  tu fais ton traitement vers la BDD
}
?>

Répondre à Alain_42

11

mimir87uk, le 16 jun 2009 à 23:01:45

Merci bcp ça marché ,

maintenent quand j'ai met AUTO_INCREMENT dans l'identifiant de la table, la première insertion des données a été bien il incrémente de '1' jusqu'à 'n' la ligne derniere, aprés j'ai éfacé les donnée donc dans la 2 insertion des données il commance d'incrementer de 'n' , comment remetre AUTO_INCREMENT a 0

Répondre à mimir87uk

12

Alain_42, le 16 jun 2009 à 23:05:16

Il ne faut pas effacer les donnees une par une mais par phpmyadmin faire un TRUNCATE de ta table (Vider)

Répondre à Alain_42

13

mimir87uk, le 16 jun 2009 à 23:08:10

Mais je travail pas avec phpmyadmin , je travail dans linux avec mysql , php , apache

Répondre à mimir87uk

14

 Alain_42, le 18 jun 2009 à 20:21:21

Alors installes aussi phpmyadmin sous linux tu verra cela te permet d'intervenir sur ta base Mysql pour gérer tes tables

Répondre à Alain_42