- Home
- Categorie
- Coding e Sistemistica
- PHP
- trasformare file di testo in database
-
trasformare file di testo in database
ciao 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
SICiao 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 maiuscolose 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...