Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Modifica valore in file.txt

    Buona sera, vorrei sapere se è possibile dopo aver inserito un valore all'interno di un txt, poterlo riprendere, modificare e riposizionare nello stesso punto?

    E' possibile?Al momento mi manca soltanto questo.Perchè Inserimento e rimozione del dato l'ho fatto, però vorrei anche modificare il valore..

    Spero si possa fare...

    Grazie mille e buona notte a tutti.

  2. #2
    allora, per l'inserimento faccio cosi:
    codice:
    $file_mess="../public/eventi.txt";
    
    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);
    			}
    			
    			# Rimuovere gli slash che PHP mette automaticamente prima dei caratteri speciali 
    			$content=stripslashes($content);
    
    # Mettere le entrate(spazi?) negli array per l'allineamento 
    			$lines = explode("\n",$content);
    			for ($key=1;$key<count($lines);$key++){
    			# quando ci sono 1 o + messaggi nella lista esegue questo inserimento, applicando all'inizio del messaggio uno spazio "\n"
    			$commento =  "\n" . $utente . "
    " . $messaggio . "
    ";
    					
    			}
    
    $filename = $file_mess;
    		$somecontent = $commento;
    		
    		// Verifica che il file esista e sia riscrivibile
    		if (is_writable($filename)) {
    
    if (!$handle = fopen($filename, 'a+')) {
    				echo "Il messaggio non è stato inserito!";
    								location.href=\"?eventi_ins=1&c_sf=$c_sf\";
    							</script>";
    		   }
    else{
    echo "La nuova data è stata inserita negli Eventi!";
    fclose($handle);
    }
    Per la rimozione del dato faccio cosi:

    codice:
    $file_mess="../public/eventi.txt";
    
    if (!file_exists($file_mess)) {
    				$newfile = fopen($file_mess,"w+");
    				fclose($newfile);
    			}
    			$newfile = fopen($file_mess,"r");
    			$content = fread($newfile, filesize($file_mess));
    			fclose($newfile);
    $arrStopCaratt = array(0=>"\\'",1=>'\\"');
    			$arrSostituisciCon = array(0=>"", 1=>'');
    			$content = str_replace($arrStopCaratt, $arrSostituisciCon, $content);
    
    $out="";
    
    $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";
    
    # Se il messaggio è nella lista...
    				if ($found == 1){
    					$newfile = fopen($file_mess,"w+");
    					fwrite($newfile, $out);
    					fclose($newfile);
    
    echo "Messaggio rimosso con successo!";
    			$disp="no";
    				}
    # se l'email non è nella lista	
    				if ($found != 1){
    echo "Non è stato possibile cancellare il Messaggio!";
    				$disp="YES";
    				}
    Spero da qui possiate darmi un'aiuto, sulla mia richiesta...Devo fare l'update assolutissimamente, ma non so come fare, potete aiutarmi cortesemente per favore?

    Grazie mille...come sempre

  3. #3
    bhe in teoria l'hai gia fatto!!...quando cancelli il dato se nn ho visto male lo sostituisci con una stringa vuota o sbaglio???...basta mettere al posto della stringa vuota il nuovo valore del dato e il gioco è fatto!!

  4. #4
    grazie per avermi risposto, ma...ti riferisci al valore $out?
    altrimenti non mi ritrovo...puoi illuminarmi?per favore?

    grazie ancora....

  5. #5
    Allora tu scrivi (se nn sbaglio) nel nuovo file il valore di $out che hai settato tu poco sopra come valore nullo $out=""; ... ora se nn ho capito male è proprio questo che cancella il messaggio...credo (se mi sbaglio dimmelo ) cmq... se è cosi basta che dai a $out il valore del nuovo messaggio e sei a posto...

  6. #6
    e ok...però dovrebbe, nel momento dell'update, o sovrascrivere il nuovo dato modificato sopra quello che ho modificato oppure eliminarlo, ed inserirlo nella stessa posizione...

    Ma come si fà?Mamma mia....

  7. #7
    allora devo sapere una cosa il file .txt contiene solo quel messaggio o ne contiene anche altri? perche se contiene solo quel messaggio è facile puoi anche fare cosi:
    unlink($file);
    e poi ti fai un nuovo file chiamato come quello di prima con il nuovo testo.

    altrimenti se contiene anche altri messaggi puoi fare cosi:
    1) prendi il contenuto del file cn tutti i messagi
    2) sostituisci con str_replace($vecchio_messaggio, $nuovo_messaggio, $testo_file) il nuovo messagio nel testo di tutti i messaggi
    3) riscrivi tutto il file o come detto sopra oppure aprendolo con il puntatore dalla prima posizione (ti consiglio comunque unlink perche cosi cancella il file e lo riscrive e si evitano eventuali errori sovrascrittura)...

  8. #8
    ti ringrazio, anch'io dopo tanto ho pensato a str_replace, però ho un dubbio.
    Io vorrei, sostituire e quindi aggiornare, la porzione di testo che mi interessa, però non sò se con unlink è possibile farlo.Nel file.txt ci sono tantissimi messaggi, che di volta in volta, saranno eliminati.

    Comunque, sono arrivato fin qui:

    codice:
    if($update_bacheca!=""){
                                                       $file_mess="../public/bacheca.txt";
    				$nickUt = $_POST['nickUt'];
    				$Old_mex = trim($_POST['old_mex']);
    				$New_mex = trim($_POST['new_mex']);
    				
    				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);
    				}
    
    $content=stripslashes($content);
    				
    $lines = explode("\n",$content);	
    			for ($key=1;$key<count($lines);$key++){
    					//$content1 = "\n".$content[$key];
    					$content1=explode("|",stripslashes($lines[$key]));				//}
    					
    					$content3 = str_replace("
    ","",array($content1[3]));
    
    //confronto il vecchio valore passato per POST, con quello estrapolato dal .txt, se c'è, eseguo una replace del vecchio con il nuovo
    					if (in_array($Old_mex,$content3)){
    						echo "era ora 
    ";
    //sostituisco la porzione del messaggio che mi interessa
    $New_mess = str_replace($Old_mex,$New_mex,$content3);
    
    $lines = explode("\n",$content3);
    						for ($key=1;$key<count($lines);$key++){
    							$New_mess = str_replace($Old_mex,$New_mex,$content3);
    
    $commento =  "\n" . $nickUt . "
    " . $New_mess . "
    ";
    			}
    												if (is_writable($file_mess)) {
    							if (!$handle = fopen($file_mess, 'a+')) {
    								echo " 	Il messaggio non è stato inserito_1!";
    							}
    							if (!fwrite($handle, $commento)) {
    								echo " Il messaggio non è stato inserito_2!";
    							}
    							echo "La nuova data è stata inserita nella Bacheca!";
    							fclose($handle);
    						}//close 2° if
    					}//close 1° if
    				}//close for
    			}//close $update_bacheca
    Cosi facendo, mi inserisce un altro messaggio, ma il messaggio vero e proprio viene inserito come stringa "Array"...

    Da qui puoi capire dove sbaglio?grazie ancora...grazie mille.

  9. #9
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    Voglio provare a dare il mio contributo in questa discussione per me interessantissima.
    premesso che il file.txt viene riempito da messaggi che "entrano" ed "escono cancellati"
    codice:
    Nel file.txt ci sono tantissimi messaggi, che di volta in volta, saranno eliminati.
    Queste stringhe "dinamiche" non provengono da un db. La mia idea è che sarebbe meglio inserirle ciascuna in un proprio filex.txt (x è per la identificazione secondo un certo criterio) e poi costruire il file.txt con l'unione [ .= ] delle varie stringhe e con un elemento identificatore (un accapo od altro) che le distingua.
    Nel momento dell'aggiornamento (mi sembra di capire frequentissimo) si fa una copia del file.txt, si fa visualizzare la copia a browser, si cancella l'originale e si costruisce il nuovo.
    Con una schedulazione (scheduler per windows ... operazione pianificata) si aggiorna la copia ogni tot di tempo.
    Spero di essermi spiegato.

  10. #10
    più o meno ho capito...ma l'aggiornamento di queste informazioni, potrebbero essere frequentissime, ma non lo sono...

    Volevo solo capire se, il percorso che sto seguendo è giusto o meno....perchè sono 2 giorni che ci sbatto la testa...

    E' possibile fare come dico io o no?

    Grazie ancora per l'aiuto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.