- Home
- Categorie
- Coding e Sistemistica
- Coding
- trasformare file di testo in database
- 
							
							
							
							
							trasformare file di testo in databaseciao a tutti, 
 ho un file di testo in cui vengono scritti, su un'unica riga, i dati dei sottoscrittori di un appello in questo modo:nome cognome - città - email ovvero: [PHP]if (!file_exists($filelocation)) { 
 $newfile = fopen($filelocation,"w+");
 fclose($newfile);
 }
 $lines = array_map('rtrim', file( $filelocation ));
 for ( $key = 0; $key < count($lines); $key++ ) {
 if ( $lines[$key] == ($_POST['var1'] . " " . $_POST['var2'] . " - " . $_POST['var3'] . " - " . $_POST['var4'])) {
 $found = 1;
 }
 }
 [/PHP]Poichè i sottoscrittori stanno aumentando vertiginosamente, mi chiedevo se esiste un modo per estrapolare questi dati, e magari trasferirli all'interno di un db mysql. Meglio ancora, importarli direttamente dentro un db. 
 Vi prego, ditemi di siiiiiiiiii 
 
- 
							
							
							
							
							@cybergiaggia said: Vi prego, ditemi di siiiiiiiiii 
 SI Ciao cybergiaggia Utilizzando la funzione file() che trovi quì ottieni un elemento array per ogni riga del file 
 Esplodi ogni riga tramite un ciclo utilizzando list() e explode()[php]list($nome_cognome,$citta,$mail)=explode("-",$array['$i']);[/php]e per ogni ciclo poi ti salvi i valori ottenuti sulla tua tabella  Se c'è qualcosa di non chiaro siam quì  
 
- 
							
							
							
							
							grazie! era proprio la risposta che volevo ricevere...  
 e per passare alla domanda successiva: come si fa???     ho dato un'occhiata alle funzioni... 
 come fa la funzione file() a contare gli 'n' array???quello che ho per il momento ho, sono: - il file di testo;
- un db mysql;
- tanta buona volontà!
 aiutoooooooooo 
 
- 
							
							
							
							
							come avrai letto ad ogni newline la funzione crea un nuovo elemento array  
 
- 
							
							
							
							
							no, intendevo il codice php, i puntini sospensivi fanno parte del codice? echo $textarray[0]; // risultato: testo1\n 
 echo $textarray[1]; // risultato: testo2\n
 .........
 echo $textarray; // risultato: teston\n
 
- 
							
							
							
							
							mi puoi dare qlche dritta in piu sul da farsi? 
 grazie
 
- 
							
							
							
							
							[PHP]$textarray=file("percorso/nomefile.txt"); 
 $i=0;
 while($i<count($TEXTARRAY))
 {
 $text=substr($textarray*,0,-1);
 list($nome_cognome,$citta,$mail)=explode("-",$text);$sql="INSERT INTO nome_tabella (nome,citta,mail) VALUES ('$nome_cognome', '$citta', '$mail')"; 
 $query=@mysql_query($sql) or die (mysql_error());
 }[/PHP]
 così dovrebbe andare 
 
- 
							
							
							
							
							mille grazie!!! 
 questa è una query per il mio db?
 ho provato a inserirla ma mi dà questo errore relativo al percorso del file di testo:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$textarray=file("appello.txt")' at line 1 Se il db è collegato al dominio 'miodominio.it' e il file di testo è nella directory principale, quale deve essere il percorso? ancora grazie per il disturbo!!! 
  
 
- 
							
							
							
							
							Intanto metti questa riga così 
 [php]while($i<count($textarray))[/php]
 mi era scappato il maiuscolo se il file di testo e' nella root e questo script è nella root va bene come lo hai postato  
 
- 
							
							
							
							
							non so dove sia lo script... 
 io lo eseguo come query all'interno del db...
 o lo devo inserire in un file php???
 :bho:scusa, ma sono una frana... 
 
- 
							
							
							
							
							ah ecco...infatti non capivo perchè fosse il mysql a darti noie...ma il sonno....  No questo script deve effere un file .php dal pannello del Db puoi solo effettuare comandi di MySQL  
 
- 
							
							
							
							
							se chiamo il file php con quello script il risultato è questo: Can't connect to MySQL server on 'localhost' (10061) c'è qlcsa che mi manca evidentemente... 
  
 
- 
							
							
							
							
							se hai copincollato tutto così com'è certo! devi mettere i dati di connessione al Db  Dai un'occhiata quì 
 
- 
							
							
							
							
							... ti aggiorno sulla mia triste situazione...  ho fatto come mi hai detto, ho messo in connessione il db e tutto sembrava andare per il meglio, nel senso che non è uscita la scritta "Connessione al Db non stabilita"... poi ho inserito lo script in questo modo: 
 [php]<?
 $db_host = "NOME_HOST";
 $db_user = "NOME_USER";
 $db_psw = "PASSWORD";
 $db_name = "NOME_DB";$connessione = mysql_connect ($db_host, $db_user, $db_psw) or die ("Connessione al server non stabilita"); $db_NOME_DB = mysql_select_db ($db_name, $connessione) or die ("Connessione al Db non stabilita"); $textarray=file("NOME_FILE.txt"); 
 $i=0;
 while($i<count($textarray))
 {
 $text=substr($textarray*,0,-1);
 list($nome_cognome,$citta,$mail)=explode("-",$text);$sql="INSERT INTO NOME_TABELLA (nome,citta,mail) VALUES ('$nome_cognome', '$citta', '$mail')"; 
 $query=@mysql_query($sql) or die (mysql_error());
 }mysql_close($connessione); 
 ?>[/php]
 Ti confermo che il file php e il file txt sono nella stessa root e il risultato è stato questo:Table 'NOME_DB**.NOME_TABELLA****' doesn't exist** Allora ho provato a crearla io la tabella NOME_TABELLA all'interno dell'interfaccia di mysql, dandole 3 campi. 
 Ma il risultato è stato identico... Grazie ancora per la pazienza... 
 sento di essere vicina alla meta...
  
 
- 
							
							
							
							
							ma il Db si chiama NOME_DB ? 
 
- 
							
							
							
							
							si, nel senso che a NOME_DB devi sostituire il vero nome che ho preferito non rendere pubblico... p.s.: ma ho fatto bene a crearla io la tabella? 
 
- 
							
							
							
							
							certo devi crearla tu la tabella  
 per l'errore che ti ha restituito significa che il nome della tabella non corrisponde con quello messo nello script....
 domanda: nel nome della tabella hai per caso messo spazi?
 hai percaso chiamato la tabella Tabella e la richiami scrivendo *tabella?
 *il nome della tabella nello script deve essere messo esattamente per come è nel Db e non mettere spazi nei nomi tabella 
 
- 
							
							
							
							
							ti giuro di no! 
 per sicurezza ho copiato e incollato il nome nell'interfaccia mysql...
 l'ho rifatto adesso, assicurandomi che non ci fossero spazi dopo aver incollato...
 boh
 
- 
							
							
							
							
							beh...l'errore è molto chiaro, la tabella *comesichiama non esiste. 
 *per lo spazio intendevo non tanto lo spazio dopo ma dentro
 nome tabella è diverso da nome_tabella ed il primo caso non va bene 
 
- 
							
							
							
							
							ci sono! 
 pensavo di averla creata ma non era vero... 
 adesso mi si chiede di riempire i campi della tabella...