IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Conserver les données lors d'ouverture de fichier en a+ fopen


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Points : 70
    Points
    70
    Par défaut Conserver les données lors d'ouverture de fichier en a+ fopen
    Bonjour, j'ai besoin d'envoyer et conserver des données écrites dans un fichier et je me sert de fopen en a+.
    tout le texte est ouvert en a+ dans le formulaire lors de la mise a jour du fichier, pour ajout et (ou) corrections des textes.
    il m'est arrivé, lors d'une coupure d'électricité ou simplement par distraction de fermer mon navigateur avec le texte ouvert dans le formulaire.
    Ma question est :
    Est-il possible d'ajouter au script "si rien n'a été changé dans le texte lors de son ouverture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ouvre=fopen("texte1.txt","a+");
    dans le formulaire > ne pas en effacer les données..."
    Je demande peut être la lune^^ sur Google ou autres moteur je n'arrive pas à trouver... Can you help me^^merci. :-)

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    si vous fermez le navigateur sans envoyer le formulaire, le fichier n'est pas modifié
    à quel moment vous effacez le contenu du fichier ?

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Points : 70
    Points
    70
    Par défaut
    @mathieu bonjour, ah alors ça doit être mon formulaire qui ne va pas^^je n'suis pas un crac en php, j'ai écrit ça il y a plus d'un an avec quelques cours et l'aide d'exemples, mais j'ai du noyer quelque peu certaines bonnes procédures Ça fonctionnait jusqu'au jour où je me suis rendu compte de ce problème....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    <form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
    <textarea style="width:800px; height:600px"; name="commentaire">
    <?php
    include('texte1.txt'); 
    ?>	
    <?php
    # On n'exécute la boucle que si nécessaire
    if(get_magic_quotes_gpc() == 1){
     
    # Définition de la fonction récursive.
    function remove_magic_quotes(&$array)
    {
     foreach($array as $key => $val){
     
      # Si c'est un array, recurssion de la fonction, sinon suppression des slashes
      if(is_array($val)){
       remove_magic_quotes($array[$key]);
      } else if(is_string($val)){
       $array[$key] = stripslashes($val);
      }
     }
    }
     
    # Appel de la fonction pour chaque variables.
     
    remove_magic_quotes($_POST);
    remove_magic_quotes($_GET);
    remove_magic_quotes($_REQUEST);
    remove_magic_quotes($_SERVER);
    remove_magic_quotes($_FILES);
    remove_magic_quotes($_COOKIE);
    }
    $ouvre=fopen("texte1.txt","a+");
    while (!feof ($ouvre))
    {
    $lecture = fgets($ouvre, 4096);
    $donnee=explode("|",$lecture);
    $combien=count($donnee)-1 ;
    echo "";
    for ($i=0;$i<$combien;$i++)
    {
    // suppression des données
    // on supprime la donnée si elle contient ""
    if (ereg("\|",$donnee[$i]))
    {
    $donnee[$i]=$donnee[$i]="";
    }
    // stockage temporaire des données si donnée non nulle
    if ($donnee[$i]!="")
    {
    $liste_modif.=$donnee[$i]."*";
    }
    }
    }
    fclose($ouvre);
    $ouvre=fopen("texte1.txt","w");
    fclose($ouvre);
    ?>
    </textarea>
    <input type="submit" value="Valider">
    </form><br/>
     
    <?php
    /* si register_globals off (à partir de PHP 4.3)*/
    $commentaire = $_POST['commentaire']; 
     
    if ($commentaire!="")
    	{
    $ouvre=fopen("texte1.txt","a+"); // ouverture en lecture ( a)
    fwrite($ouvre,$commentaire);    // écriture fichier
    fclose($ouvre);			// fermeture fichier
    echo "<b>*</b>".$_POST['f_commentaire']."<br/>";
    }
    ?>	
     
    <font color="#009900">Voici dans le tableau ci-dessous la réplique approximative de la mise en page !</font>
    <table summary="" border="2" width='710px' style="height: 600px;">
    	<tr>
    		<td style="vertical-align:top;text-align:left;">
    <?php
    include("texte1.txt"); 
    if(empty($_POST ['commentaire'])){ echo '<span style="color:red">LE TEXTE n\'est pas encore validé !</span>';} else { echo '<b><span style="color:#003300">
    LE TEXTE a bien été validé !</span></b></div>';}
    ?>
    </td>
    	</tr>
    </table>
    <?php 
      }else{ // Sinon,...
      exit; // ... on stoppe le script.
      }
      ?>
    </div>
    Des scripts il y en a plein, mais j'aimerais autant corriger celui-là, pour reprendre php et comprendre là où j'ai du sûrement aller trop vite ou maladroit. Je me suis sûrement égaré à vouloir trop employer et essayer....

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Points : 70
    Points
    70
    Par défaut
    En passant par une page intermédiaire et non en $_SERVER["PHP_SELF"]; le problème ne se pose plus. (Merci @mathieu d'étre passé par ici)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/01/2007, 17h46
  2. Conserver les données passées en POST
    Par kevinf dans le forum Langage
    Réponses: 24
    Dernier message: 03/11/2006, 00h39
  3. Réponses: 12
    Dernier message: 28/04/2006, 11h38
  4. recuperer les données a l'ouverture
    Par stefano dans le forum Bases de données
    Réponses: 16
    Dernier message: 19/03/2006, 19h43
  5. Réponses: 8
    Dernier message: 19/05/2005, 16h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo