Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    52

    Uso dei .txt come database

    salve a tutti, avrei bisogno di un aiuto espongo subito

    ho un file txt con nomi scritti in questo modo:

    codice:
    nome1
    nome2
    nome3
    etc..
    avrei bisogno di fare 2 pagine in php, una ke mi dia l'elenco dei nomi e che me li faccia modificare, l'altra ke mi dia l'elenco dei nomi e meli faccia cancellare, siete in gradi di aiutarmi in proposito?

  2. #2
    Utente di HTML.it L'avatar di Pasco
    Registrato dal
    Apr 2002
    Messaggi
    1,559
    ciao , quello che vuoi fare è piuttosto semplice , si tratta di leggere il file con l'apposita funzione file() , ciclare il suo contenuto con foreach() e scriverlo in un modulo con una <textarea> , in questo modo puoi modificare il contenuto del file o cancellare i record , a questo punto invii il modulo via POST e prendi i la stringa che hai inviato con $_REQUEST o $_POST , poi scrivi il tutto con fwrite o gli operatori di redirezione ( `>` )

    ti ho scritto un esempio

    codice:
    <?php
    
    $path = './public/file.txt';
    
    function fileArray($file){
     	
     	if( is_string($file) and file_exists($file) ):
     	
     		$file = file($file);
     		
     		settype($valori,'string');
    	
    		$righe = count($file);	
    
    		foreach($file as $key => $val):
    	
    			$valori .= $val ;
    	
    		endforeach;
    		
    		return $modulo = <<< FORM
    <form method="post" action="">
    	<textarea name="db" rows="{$righe}" cols="20">
    {$valori}
    	</textarea>
    	
    
    	<input type="submit" />
    </form>
    FORM;
     		
     	else:
     	
     		return null;
     		
     	endif;
    
    }
    
    if(isSet($_REQUEST['db'])){
    	
    	if( is_writeable($path) ):
    	
    		if( fwrite( fopen($path,'w') , $_REQUEST['db'] ) ){
    		
    			die( 'scrittura sul file eseguita' );
    		
    		} else {
    		
    			die( 'scrittura sul file non eseguita' );
    		
    		}
    		
    	else: echo 'file non scrivibile';
    		
    	endif;
    
    } 
    else {
    
    	$file = fileArray($path);
    
    	if($file){
    
    		echo $file;
    	
    	} else {
    
    		echo 'non hai specificato un percorso del db corretto' ;
    	}
    
    }
    
    ?>
    PyFanatics

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    3,259
    tramite la funzione file("file.txt"); ottieni un array con tutte le righe nel file di testo.

    Giocando con questa funzione riesci a fare ciò che hai chiesto.


  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    52
    innanzi tutto grazie mille x aver risposto.
    cmq dovevo precisare ke sono quasitotalmente ignorante in materia php, quindi quello ke avete scritto è molto simile all'arabo x me

    cmq x ora ho fatto questo x scrivere sul file
    codice:
    <?php
    $fp = fopen ("players.txt", "a"); 
    
    $accesso =$nickname; 
    $accesso.="\n"; 
    
    fwrite($fp, $accesso); 
    fclose($fp);
    ?>
    ora cercherò di capire quello ke avete scritto accetto suggerimenti cmq

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    52
    capito tutto vi adoro

  6. #6
    Utente di HTML.it L'avatar di Pasco
    Registrato dal
    Apr 2002
    Messaggi
    1,559
    ho modificato il codice precedente in una classe , magari può interessare a qualcuno (con le dovute modifiche)

    codice:
    class dbFile {
    
    	protected $path;
    	protected $valori = '';
    	
    	public function __construct($path = null){
    	
    		if( !is_string($path) ) throw new Exception('il costruttore richiede una stringa');
    		
    		if( !file_exists($path) ) throw new Exception('il file che hai specificato non esiste');
    		
    		if( !is_writeable($path) ) throw new Exception('il file che hai specificato non è scrivibile');
    		
    		$this->path = $path;
    	
    	}
    	
    	public function modifica(){
    	
    		$file = file($this->path);
    		
    		foreach($file as $key => $val):
    		
    			$this->valori .= $val ;
    		
    		endforeach;
    	
    		return $this->getForm( count($file) , '20' , $this->valori ) ;
    	
    	}
    	
    	public function salva(){
    	
    		if( !isSet($_REQUEST['dbFile']) ) throw new Exception('non hai inviato valori da salvare nel file');
    		
    		if( fwrite( fopen($this->path,'w') , trim($_REQUEST['dbFile']) ) ) echo 'modifica eseguita correttamente' ;
    	
    	}
    	
    	private function getForm($righe , $col , $valori){
    	
    		return 	'<form method="post" action="">' . "\n" .
    				"<textarea name=\"dbFile\" rows=\"{$righe}\" cols=\"{$col}\">\n" . 
    				"{$valori}\n" . 
    				"</textarea>" . 
    				"
    \n<input type=\"submit\" />\n" . 
    				"</form>";
    				
    	}
    
    }
    codice:
    try{
    
    $file = new dbFile('./public/file.txt');
    
    if( isSet($_REQUEST['dbFile']) ): $file->salva() ;
    
    else: echo $file->modifica();
    
    endif;
    
    }
    
    catch(Exception $e){
    
    	echo 'Errore: ' . $e->getMessage() . '' ; 
    
    }
    se qualcuno è interessato posso aggiungere dei commenti
    PyFanatics

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    52
    come faccio invece di mette una textarea a mettere un menù a discesa dove selezionare il nick da cancellare o da modificare?

  8. #8
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    codice:
    $file = file('mioFile.txt');
    $select = '<select name="mioFile">';
    for($i = 0; $i < count($file); $i++)
       $select .= "<option value=\"{$file[0]}\">{$file[0]}</option>";
    $select .= "</select>";
    
    echo $select;

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    52
    nell'elenco mi da solo il primo nome ripetuto tante volte, e cmq devo poter modificare o cancellare un record

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    52

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.