• User

    Update valore nel file di testo

    Buon giorno a tutti.Ho un problema serio con l'Update di un valore all'interno di file di testo.MI spiego meglio.

    All'interno del file di testo, posso avere tot messaggi, che vengono inviati tramite il classico form e nel file di testo sono cosi strutturati:

    
    "\n".$user."|".$data."|".$ora."<br/>".$messaggio
    
    

    Questo è il codice che dovrebbe rimuovere e/o modificare il messaggio che scelgo.Purtroppo il problema è che, la rimozione è ok, ma l'update no.

    Potreste aiutarmi gentilmente?E' importantissimo e sono 2 settimane che ci provo ma niente da fare...

    Scusate la lunghezza dello script...

    
    $file_mess="../public/bacheca.txt";
     $email_news = $_GET['rimuovi_bacheca'];
     $update_bacheca = $_GET['update_bacheca'];
     $nickUt = $_POST['nickUt'];
     $Old_mex = trim($_POST['old_mex']);
     
     $New_mex = trim($_POST['new_mex']);
     
     $ar_orario = getdate();
     $ora = $ar_orario['hours'];
     $minuti = $ar_orario['minutes'];
     $secondi = $ar_orario['seconds'];
     
     $dt = date("d/m/Y");
     $orario = $ora.":".$minuti.":".$secondi;
     $utente = $nickUt."|".$data."|".$orario."|";
     
     if (!file_exists($file_mess)) {
      $newfile = fopen($file_mess,"w+");
      fclose($newfile);
     }
     $newfile = fopen($file_mess,"r");
     if(filesize($file_mess)==0){
      $content = "\n";
      $new_file=fopen($file_mess,"a+");
      fwrite($newfile,$content);//fputs = a fwrite
      fclose($newfile);
     }
     else{
      $content = fread($newfile, filesize($file_mess));
      fclose($newfile);
     }
     
     #Modifica il valore selezionato
     if($update_bacheca!=""){
      # Rimuovere gli slash che PHP mette automaticamente prima dei caratteri speciali 
      $content=stripslashes($content);
     
      //$out="";
      # Mettere le entrate(spazi?) negli array per l'allineamento 
      $lines = explode("\n",$content);
      //print_r($lines);
      for ($key=1;$key<sizeof($lines);$key++){
      # quando il messaggio non è nella lista, aggiungere i vecchi messaggi
       if ($Old_mex == $lines[$key]){
        //echo "SI";
        //print_r($lines[$key]);
        //suddivido la stringa, passata dalla input hidden form, in 4 parti, prendendone il contenuto(messaggio)
        list($user, $data, $ora, $contenuto) = split("*", $Old_mex, 4);
        //eseguo la replace, del tag <br/> con stringa vuota "", del contenuto
        $New_mess = str_replace("<br/>","",$contenuto);
     
        //suddivido la stringa, all'interno del .txt, in 4 parti, prendendone il contenuto(messaggio)
        list($user2, $data2, $ora2, $contenuto2) = split("*", $lines[$key], 4);
        //eseguo la replace, del messaggio del .txt, con quello passato dalla input text del form,del contenuto
        $New_m = str_replace($New_mess,$New_mex,$contenuto2);
     
        //echo "1°| " . $New_mess ." vs 2°| " . $New_m . "<br/>";
        //lavorare sul $lines[$key] e fare la replace della porzione di testo che è al suo interno e poi riagganciare tutto e reinserire
        if($key==1){
         echo "Si_2<br/>";
         $out .= "\n".$user2."|".$dt."|".$orario."|".$New_m;
         echo "Out: " . $out;
        }
        else{
         echo "NO_2<br/>";
     
         $out .= "\n".$user2."|".$dt."|".$orario."|".$New_m;
         $out .= "\n".$lines[$key];
         echo "Out: " . $out;
        }
        //fare reverse dell'array al momento dell'inserimento
        $found=1;
        if($found==1){
         $newfile = fopen($file_mess,"w+");
         fwrite($newfile, $out);
         fclose($newfile);
         echo "  <script language=\"javascript1.2\">
             alert(\"La nuova data è stata inserita nella Bacheca!\");
             location.href=\"?bacheca_ins=1&c_sf=$c_sf\";
            </script>";
        }
        exit;
       }
       # quando è già nella lista,(trovato=1)
       else {
        //echo "NO";
        $found=0;
       }
      }
     
     }//close $update_bacheca
     //elimina il record
     else{
      $out="";
      //echo "altro...";
      # Mettere le entrate(spazi?) negli array per l'allineamento 
      $lines = explode("\n",$content);
      for ($key=1;$key<sizeof($lines);$key++){
      # quando il messaggio non è nella lista, aggiungere i vecchi messaggi
       if ($lines[$key] != $email_news){
        $out .= "\n".$lines[$key];
       }
      # quando è già nella lista,(trovato=1)
       else {
        $found=1;
       }
      }
      $disp="no";
      # If the email is in the list...
      # Se il messaggio è nella lista...
      if ($found == 1){
       $newfile = fopen($file_mess,"w+");
       fwrite($newfile, $out);
       fclose($newfile);
       # display the message for deleted items...
       # display con messaggio per avvenuta cancellazione del messaggio
        echo " <script language=\"javascript1.2\">
          alert(\"Messaggio rimosso con successo!\");
          location.href=\"?bacheca_ins=1&c_sf=$c_sf\";
         </script>";
       $disp="no";
      }
      # if the email is not in the list
      # se l'email non è nella lista 
      if ($found != 1){
      # display the message that tells that...
      # visualizza messaggio di cancellazione non avvenuta
       echo " <script language=\"javascript1.2\">
          alert(\"Non è stato possibile cancellare il Messaggio!\");
          location.href=\"?bacheca_ins=1&c_sf=$c_sf\";
         </script>";
       $disp="YES";
      }
     }//close else
     
    
    

    Aiuto ragazzi, sono proprio in difficoltà..io continuo con le mie povere conoscenze, voi fatemi lui, per pietà!!!

    Grazie mille...


  • Consiglio Direttivo

    Ciao, purtroppo adesso non posso dare un'occhiata al codice, vado un po di fretta che fra un po si torna a lavurà 😄
    Posso segnalarti questo script che feci tempo fa per un altro utente. Lo script di base, mi sembra di aver capito, che faccia quello che vuoi tu, magari c'è da aggiungere qualche controllo in più 😉 o comunque puo' servirti per controllare se magari hai saltato qualcosa ;). Spero possa esserti utile 😉


  • User

    grazie mille, grazie mille....grazie ancora!!!!ancora grazie...molto gentile!!!
    cioè, sei un grande....mille grazie 😄