Modifier la ligne X d'un fichier txt

Résolu
Utilisateur anonyme - 24 juin 2007 à 16:56
vilhjalms Messages postés 591 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 16 juillet 2009 - 9 juil. 2007 à 20:04
Bonjour à vous,
Je suis pas très fort en php et je n''arrive pas à réaliser un petit script pour mon site, je m''explique:
Je
souhaiterai modifier la ligne x d''un fichier texte récupéré grace à un
lien du type /edit.php?id=431 pour modifier la ligne 431 grace à un
simple formulaire
La page edit charge alors la ligne a éditer dans
le formulaire avec un bouton modifier pour ré enregister la ligne au
meme emplacement
Si quelqu''un peut m''aider...
Merci d''avance
Cordialement,

19 réponses

audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
1 juil. 2007 à 13:28
Meme joueur joue encore :
<?php
$file = 'http://www.bastagogne.com/blablateur.txt';
if (($lines = file($file)) !== FALSE) {
 if (isset($_GET['id']) AND isset($lines[(int) $_GET['id']])) {
  $temp = explode('
', $lines[(int) $_GET['id']]);
  if (isset($_POST['change'])) {
   if (isset($_POST['message']) AND $_POST['message'] !== '') $temp[count($temp)-1] = stripslashes($_POST['message']);
   $temp = implode('
', $temp);
   $lines[(int) $_GET['id']] = $temp;
   $lines = implode("\r\n", $lines);
   if (($fp = fopen($file, 'w')) !== FALSE) {
    fwrite($fp, $content);
    fclose($fp);
   }
  }
  else {
   $message = str_replace(array('<hr />', "\n"), '', end($temp));
   echo '<form action="',$_SERVER['PHP_SELF'],'?id=',$_GET['id'],'" method="post">Message :
<textarea cols="50" name="message" rows="10">',$message,'</textarea>

</form>';
  }
 
 }
 else echo 'La ligne indiqué n\'existe pas.';




}
else echo 'Le fichier "',$file,'" est introuvable.';
?>




For every choice, a consequence (Fable)
3
vilhjalms Messages postés 591 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 16 juillet 2009 2
24 juin 2007 à 23:40
Saell og blesuð

Bon alors c est pas beau comme code mais alors pas beau du tout :(

<?php
$file='test.txt';
$content=file($file);

if(isset($_GET['id']) && !empty($_GET['id'])){
    $ligne=$_GET['id']-1;
    echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">';
    echo '';
    echo '';
    echo '';
    echo '</form>';
    exit;
}

if(isset($_POST['text']) && !empty($_POST['text'])){
    $text=$_POST['text'];
    $ligne=$_POST['ligne'];
    $fp=fopen($file,'w');
    $i=-1;
    while($content[++$i]){
        ($i==$ligne) ? fputs($fp,$text."\r\n") : fputs($fp,$content[$i]);
    }
    fclose($fp);
    exit;
}

?>



Vilhjálms


Sigurðsdóttir aka Frëyjá
0
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
25 juin 2007 à 00:16
salut basta je suis amezghal ^^
Au début, on essaye de trouver une solution qui marche, et puis on cherche la meilleure solution.
0
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
25 juin 2007 à 11:27
Salut,
Vilhjalms pourquoi utiliser une boucle au lieu de la fonction "implode" ?
<?php
$file = 'text.txt';

if (is_file($file)) $content = file($file);
else $content = array();

if (isset($_GET['id']) AND isset($content[(int) $_GET['id']-1])) {
    if (isset($_POST['text'])) {
        $content[(int) $_GET['id']] = $_POST['text'];
        $content = implode("\r\n", $content);
        if (($fp = fopen($file, 'w')) !== FALSE) {
            fwrite($fp, $content);
            fclose($fp);
        }
    }
    else
        echo '<form action="',$_SERVER['PHP_SELF'],'?id=',$_GET['id'],'" method="post">
           
           
        </form>';
}

?>

For every choice, a consequence (Fable)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vilhjalms Messages postés 591 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 16 juillet 2009 2
25 juin 2007 à 12:44
Saell og blesuð

"Vilhjalms pourquoi utiliser une boucle au lieu de la fonction "implode" ?"
> Parce que " [...] c est pas beau comme code mais alors pas beau du tout :("
:)

Vilhjálms
Sigurðsdóttir aka Frëyjá
0
Utilisateur anonyme
29 juin 2007 à 11:54
Merci de vos réponses mais en fait mon fichier contient uniquement des lignes formatés comme ceci:
[DATE @ HEURE]
Pseudo
Message<hr />
Et il apparait uniquement ca <span class=
0
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
29 juin 2007 à 17:37
Dans le fond çà ne change pas grand chose. Essayes comme ceci (j'ai pas testé) :
<?php
$file = 'tonfichier.txt';




if (isset($_GET['id']) AND ($fp = fopen($file, 'r')) !== FALSE) {
 $content = '';
 while (!feof($fp)) $content .= fgets($fp, 4096);
 
 $content = explode('
', $content);
 if (isset($content[(int) $_GET['id']])) {
  if (isset($_POST['text'])) {
   $content[(int) $_GET['id']] = preg_replace('`.+?`', ''.$_POST['text'].'', $content[(int) $_GET['id']]);
   $content = implode('
', $content);
  }
  else {
   $content[(int) $_GET['id']] = preg_replace('`(.+?)`', '$1', $content[(int) $_GET['id']]);
   echo '<form action="',$_SERVER['PHP_SELF'],'?id=',(int) $_GET['id'],'" method="post">
            
            
         </form>';
  }
 }
}
?>





For every choice, a consequence (Fable)
0
Utilisateur anonyme
30 juin 2007 à 14:09
Merci beaucoup pour ta réponse mais l'affichage n'est toujours pas correct, il affiche toujours un bout de phrase
Je pense qu'il faudrait essaye de récupérer la ligne de facon brute, mais j'ai aucune connaissance pour le faire.. :(
Merci pour votre aide
0
vilhjalms Messages postés 591 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 16 juillet 2009 2
30 juin 2007 à 14:17
Saell og blesuð

Est ce que le fichier text est correctement modifier ?
et
Comment affichez vous vos phrases ?


Vilhjálms Sigurðsdóttir aka Frëyjá
0
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
30 juin 2007 à 14:42
Si des infos se situent avant la chaîne "" essayons comme ceci :
<?php$file 'tonfichier.txt';if (isset($_GET['id']) AND ($fp fopen($file, 'r')) !== FALSE) {
 $content = '';
 while (!feof($fp)) $content .= fgets($fp, 4096);
 
 $content = explode('
', $content);
 if (isset($content[(int) $_GET['id']])) {
  if (isset($_POST['text'])) {
   $content[(int) $_GET['id']] = preg_replace('`(.+?).+?`', '$1'.$_POST['text'].'', $content[(int) $_GET['id']]);
   $content = implode('
', $content);
  }
  else {
   $content[(int) $_GET['id']] = preg_replace('`.+?(.+?)`', '$1', $content[(int) $_GET['id']]);
   echo '<form action="',$_SERVER['PHP_SELF'],'?id=',(int) $_GET['id'],'" method="post">
             '" />
            
         </form>';
  }
 }
}
?>

For every choice, a consequence (Fable)
0
Utilisateur anonyme
1 juil. 2007 à 02:29
Ca marche pas, ca n'affiche qu'une petite partie de la phrase. Je vous donne le fichier que je cherche à éditer
http://www.bastagogne.com/blablateur.txt
Merci de ta réponse
0
Utilisateur anonyme
2 juil. 2007 à 14:51
Wow Nikel, cela affiche bien correctement le message mais on ne peut pas enregistrerla modification ???
0
Utilisateur anonyme
5 juil. 2007 à 13:49
UPPP svp :-)
0
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
5 juil. 2007 à 19:38
Oups sorry j'avais pas vu la question XDRemplaces "$file 'http://www.bastagogne.com/blablateur.txt';" par "$file './dossier/blablateur.txt';".

For every choice, a consequence (Fable)
0
Utilisateur anonyme
6 juil. 2007 à 01:47
J'ai mis "$file = '../blablateur.txt';" et lorsque je souhaite modifier la ligne ca efface tout
0
Utilisateur anonyme
9 juil. 2007 à 06:38
une idée pour la solution finale ?
0
vilhjalms Messages postés 591 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 16 juillet 2009 2
9 juil. 2007 à 09:23
Saell og blesuð

il y a un $content bizarre a remplacer par $lines :

if (($fp = fopen($file, 'w')) !== FALSE) {
    fwrite($fp, $lines);
    fclose($fp);
}

Vilhjálms
Sigurðsdóttir aka Frëyjá
0
Utilisateur anonyme
9 juil. 2007 à 19:18
Alors ça fonction mais ca ne formate pas le texte comment il faut, le mieux je pense serrai d'extraire entierement la ligne de facon brut et de faire un preg_replace.
Quand pensez vous ?
0
vilhjalms Messages postés 591 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 16 juillet 2009 2
9 juil. 2007 à 20:04
Saell og blesuð

Qu est ce qui ne va pas dans le formatage ?


Vilhjálms
Sigurðsdóttir aka Frëyjá
0