Lecture de fichier text avec php
Fermé
mimir87uk
Messages postés
20
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
5 juin 2012
-
9 juin 2009 à 21:17
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 18 juin 2009 à 20:21
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 18 juin 2009 à 20:21
A voir également:
- Lecture de fichier text avec php
- Fichier rar - Guide
- Fichier host - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier iso - Guide
13 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
9 juin 2009 à 22:59
9 juin 2009 à 22:59
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); }
jeremieca
Messages postés
178
Date d'inscription
lundi 9 juillet 2007
Statut
Membre
Dernière intervention
16 mars 2015
28
10 juin 2009 à 14:01
10 juin 2009 à 14:01
Si ça doit marcher tu as mis quel code ?
+
+
jeremieca
Messages postés
178
Date d'inscription
lundi 9 juillet 2007
Statut
Membre
Dernière intervention
16 mars 2015
28
10 juin 2009 à 14:17
10 juin 2009 à 14:17
<?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.
$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.
mimir87uk
Messages postés
20
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
5 juin 2012
10 juin 2009 à 19:12
10 juin 2009 à 19:12
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 ....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
10 juin 2009 à 22:28
10 juin 2009 à 22:28
ça ne marche pas ne veut rien dire !
voilà une solution qui fonctionne qq soit le nombre d'espoace séparateurs
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 } ?>
mimir87uk
Messages postés
20
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
5 juin 2012
11 juin 2009 à 13:05
11 juin 2009 à 13:05
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
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
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
11 juin 2009 à 14:03
11 juin 2009 à 14:03
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 ''
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 ''
mimir87uk
Messages postés
20
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
5 juin 2012
15 juin 2009 à 12:47
15 juin 2009 à 12:47
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
$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
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
15 juin 2009 à 15:28
15 juin 2009 à 15:28
<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:
<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 } ?>
mimir87uk
Messages postés
20
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
5 juin 2012
16 juin 2009 à 23:01
16 juin 2009 à 23:01
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
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
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
16 juin 2009 à 23:05
16 juin 2009 à 23:05
il ne faut pas effacer les donnees une par une mais par phpmyadmin faire un TRUNCATE de ta table (Vider)
mimir87uk
Messages postés
20
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
5 juin 2012
16 juin 2009 à 23:08
16 juin 2009 à 23:08
mais je travail pas avec phpmyadmin , je travail dans linux avec mysql , php , apache
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
18 juin 2009 à 20:21
18 juin 2009 à 20:21
alors installes aussi phpmyadmin sous linux tu verra cela te permet d'intervenir sur ta base Mysql pour gérer tes tables
10 juin 2009 à 13:56