PHP: Recupérer/modifier données fichier texte
Résolu/Fermé
ced29
-
Modifié le 17 avril 2008 à 00:54
R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 - 17 avril 2008 à 00:54
R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 - 17 avril 2008 à 00:54
A voir également:
- Récupérer données fichier txt php
- Fichier rar - Guide
- Recuperer video youtube - Guide
- Fichier host - Guide
- Recuperer message whatsapp supprimé - Guide
- Comment ouvrir un fichier epub ? - Guide
6 réponses
R4f
Messages postés
441
Date d'inscription
dimanche 13 janvier 2008
Statut
Membre
Dernière intervention
5 mai 2008
62
26 févr. 2008 à 17:15
26 févr. 2008 à 17:15
Bon, je t'ai fait la solution complète :
Données (fichier donnees.txt) :
Point d'entrée principal du programme (liste_terminaux.php) :
Affichage formulaire d'un terminal (form_terminal.php) :
Modification d'un terminal (modif_terminal.php) :
Chez moi ça marche.
J'espère que chez toi aussi et que ça fait ce que tu veux !
Raph
Données (fichier donnees.txt) :
terminal3,192.368.0.3 terminal1,192.168.0.1 terminal2,192.268.0.2 terminal4,192.468.0.4
Point d'entrée principal du programme (liste_terminaux.php) :
<?php $nom_fichier = 'donnees.txt'; $terminaux = file($nom_fichier); foreach ($terminaux as $index => $donnee) { list($nom, $adresse) = explode(',', $donnee); $infos_terminal[$index]['nom'] = $nom; $infos_terminal[$index]['adresse'] = $adresse; } ?> <html><head><title>Terminaux disponibles</title></head><body> <h1>Terminaux disponibles</h1> <ul> <?php foreach($infos_terminal as $index => $donnees) { echo "<li><a href=\"form_terminal.php?ligne=$index\">{$donnees['nom']} - {$donnees['adresse']} </a></li>"; } ?> </ul> </body> </html>
Affichage formulaire d'un terminal (form_terminal.php) :
<?php if (!is_numeric($_GET['ligne'])) { header('Location: liste_terminaux.php'); exit(); } $ligne = (int) $_GET['ligne']; $nom_fichier = 'donnees.txt'; $terminaux = file($nom_fichier); list($nom, $adresse) = explode(',', $terminaux[$ligne]); ?> <html><head><title>Modification du terminal <?=$ligne ?></title></head><body> <h1>Modification du terminal <?=$ligne ?></h1> <form action="modif_terminal.php" method="post"> <input type="hidden" name="ligne" value="<?=$ligne ?>"> Nom du terminal : <input type="text" name="nom" value="<?=$nom ?>"><br/>Adresse IP : <input type="text" name="adresse" value="<?=$adresse ?>"><br/> <input type="submit" value="Modifier"> </form> </body> </html>
Modification d'un terminal (modif_terminal.php) :
<?php $ligne = (int) $_POST['ligne']; $nom = $_POST['nom']; $adresse = $_POST['adresse']; $nom_fichier = 'donnees.txt'; $terminaux = file($nom_fichier); $terminaux[$ligne] = "$nom,$adresse\n"; file_put_contents($nom_fichier, implode("",$terminaux)); header('Location: liste_terminaux.php'); exit(); ?>
Chez moi ça marche.
J'espère que chez toi aussi et que ça fait ce que tu veux !
Raph
R4f
Messages postés
441
Date d'inscription
dimanche 13 janvier 2008
Statut
Membre
Dernière intervention
5 mai 2008
62
26 févr. 2008 à 15:37
26 févr. 2008 à 15:37
Salut,
En fait, tu es dans le cas hyper-classique où tu ferais mieux de mettre tes données dans une base de données relationnelle. Éventuellement, tu peux faire ça avec une base de données SQLite.
Bon, sinon, pour répondre à ta question, généralement on ne se déplace par dans les fichiers textes, car on est confronté à la même problématique que toi. Naturellement, avec un éditeur de texte, on croit qu'on peut insérer facilement des données dans un fichier texte, mais en fait, les caractères qui suivent doivent être également décalés. En cas de destruction de texte, les caractères qui suivent doivent également être décalés vers la gauche... Galère !
Donc ce qu'on fait si le fichier de données n'est pas trop gros :
1- on lit le fichier original (AAAA.txt) (ex. avec file() http://fr3.php.net/manual/fr/function.file.php)
2- on le détruit (ou plutôt on le renomme, on ne sait jamais..., par exemple en AAAA.old)
3- dans les données qu'on a en mémoire, on fait les modifs appropriées
4- on écrit les données dans AAAA.txt (nouveau fichier) par exemple avec file_put_contents (http://fr3.php.net/manual/fr/function.file-put-contents.php)
Raph
En fait, tu es dans le cas hyper-classique où tu ferais mieux de mettre tes données dans une base de données relationnelle. Éventuellement, tu peux faire ça avec une base de données SQLite.
Bon, sinon, pour répondre à ta question, généralement on ne se déplace par dans les fichiers textes, car on est confronté à la même problématique que toi. Naturellement, avec un éditeur de texte, on croit qu'on peut insérer facilement des données dans un fichier texte, mais en fait, les caractères qui suivent doivent être également décalés. En cas de destruction de texte, les caractères qui suivent doivent également être décalés vers la gauche... Galère !
Donc ce qu'on fait si le fichier de données n'est pas trop gros :
1- on lit le fichier original (AAAA.txt) (ex. avec file() http://fr3.php.net/manual/fr/function.file.php)
2- on le détruit (ou plutôt on le renomme, on ne sait jamais..., par exemple en AAAA.old)
3- dans les données qu'on a en mémoire, on fait les modifs appropriées
4- on écrit les données dans AAAA.txt (nouveau fichier) par exemple avec file_put_contents (http://fr3.php.net/manual/fr/function.file-put-contents.php)
Raph
merci de ton aide , tu peux juste me donner le code pour mon premier champ texte (en admettant que la donnée que l'on veut récupérer se trouve à la ligne 2 du fichier texte au 15ème caractère) et que l'on puisse réecrire par dessus .
@+
@+
salut j'ai testé ce que tu m'as filé , ça marche quasiment sauf que quand je veux modifier une donnée ça me met : Fatal error: Call to undefined function: file_put_contents() ... on line 7
apparement ça viendrait du faite que j'ai pas php 5???
comment puis-je modifier le code du coup pour que ça fonctionne?
merci d'avance
@+
apparement ça viendrait du faite que j'ai pas php 5???
comment puis-je modifier le code du coup pour que ça fonctionne?
merci d'avance
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
R4f
Messages postés
441
Date d'inscription
dimanche 13 janvier 2008
Statut
Membre
Dernière intervention
5 mai 2008
62
4 mars 2008 à 10:13
4 mars 2008 à 10:13
salut,
eh oui, file_put_contents est spécifique à PHP5... mais il suffit de la définir en PHP4 :
Raph
eh oui, file_put_contents est spécifique à PHP5... mais il suffit de la définir en PHP4 :
function file_put_contents($filename, $data) { if( $file = fopen($filename, 'w') ) { $bytes = fwrite($file, is_array($data) ? implode('', $data) : $data); fclose($file); return $bytes; // return the number of bytes written to the file } }
Raph
je suis en train de créer un site web. j'ai fait la création de plusieurs formulaires. le problème c'est que les données qui vont être affichées dans un formulaire sont initialement existantes dans un fichier excel.Comment alors récupérer les données qui existent dans un fichier excel dans le formulaire dont j'ai besoin par l'intermidiaire du code php ,ou javascript.
R4f
Messages postés
441
Date d'inscription
dimanche 13 janvier 2008
Statut
Membre
Dernière intervention
5 mai 2008
62
17 avril 2008 à 00:54
17 avril 2008 à 00:54
Salut,
Il existe un projet PHP qui a l'air de bien marcher pour gérer le contenu de fichiers Excel (XLS) :
https://sourceforge.net/projects/phpexcelreader/
Raph
Il existe un projet PHP qui a l'air de bien marcher pour gérer le contenu de fichiers Excel (XLS) :
https://sourceforge.net/projects/phpexcelreader/
Raph
29 févr. 2008 à 10:00
@+