|
|
|
|
Posté par
ced29, le mardi 26 février 2008 à 13:54:33Configuration: Windows XP Internet Explorer 6.0
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 |
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 .
@+ |
Bon, je t'ai fait la solution complète :
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
|
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 @+ |
salut,
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.
|
| 16/01 10h10 | [MS-Dos] Ecrire dans un fichier texte en batch | MS-Dos |
| 09/04 20h44 | Modifier son fichier Hosts | Virus |
| 10/05 14h09 | Xubuntu: Modifier le menu "Applications" | Ubuntu |
| 06/11 19h24 | [PHP] Upload de fichiers | PHP |
| 18/10 15h28 | [Internet] Accéder à ses fichiers depuis n'importe où | Internet |
| 12/01 11h59 | Modification d'un fichier texte+php | 0 |
| 11/02 00h15 | Modifier un fichier texte commande unix | 10 |
| 13/07 16h14 | Modifier un fichier texte en C | 1 |
| 29/05 14h07 | Macro Excel pour modifier un fichier texte | 3 |
![]() | SyncBack - SyncBack est un logiciel de synchronisation de répertoires. Il peut être utilisé: pour effectuer des backups de fichiers... | Catégorie: Sauvegarde Licence: Freeware/gratuit |
![]() | Ant Renamer - ANT Renamer permet de renommer un grand nombre de fichiers et dossiers en quelques clics. Il ne fait que modifier les noms... | Catégorie: Gestion de fichiers Licence: Freeware/gratuit |
![]() | Vista Inspirat - Le BricoPack Vista Inspirat est un pack gratuit qui permet de modifier les fichiers systèmes de Windows XP afin de lui... | Catégorie: Personnalisation Licence: Freeware/gratuit |
![]() | Notepad++ - Notepad++ est un editeur de code source qui supporte plusieurs langages. Il s'agit d'un logiciel libre performant et... | Catégorie: Développement Licence: Open Source |
![]() | Textorm Sweety-Cam Chien | Catégorie: Webcam | 15.90 € La Boutique Du Net |
![]() | Textorm 6A19 Mid Tower | Catégorie: Boîtier PC | 41.10 € La Boutique Du Net |
![]() | Textorm 974 Mo Mid | Catégorie: Boîtier PC | 50.80 € La Boutique Du Net |
![]() | Textorm Compact Slim Keyboard | Catégorie: Clavier | 20.19 € PC-look |