- Home
- Categorie
- Coding e Sistemistica
- PHP
- trasformare file di testo in database
-
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...
-
ah ecco XD
ora è tutto chiarose hai bisogno....siam quì
-
ehm...
essì, la mia voleva essere una richiesta d'aiuto...
ho chiamto i campi 'nome' 'citta' e 'email' ma non sembra sufficiente...
mi si dice "Questo non è un numero", prob a proposito dei campi 'lunghezza/set'...
poi ci sono un sacco di altri campi:- collation (swe7_swedish_ci vero?)
- attributi
- predefinito
- extra
- primaria indice unica (radio buttons)
- commenti
-
Fai così seleziona il database e poi vai in alto dove c'è la linguetta SQL e incolli questo editando il nome della tabella che vuoi creare
```
CREATE TABLE
nome_tabella
(id
SMALLINT( 5 ) NOT NULL AUTO_INCREMENT ,
nome
VARCHAR( 50 ) NOT NULL ,
citta
VARCHAR( 50 ) NOT NULL ,
mail
VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY (id
)
) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_swedish_ciin questo modo crei un campo id univoco e che si incrementa ad ogni nuovo inserimento, i campi nome, citta, mail la cui lunghezza massima è di 50 caratteri ;)
-
nn so proprio come ringraziarti...
adesso la tabella è stata creata, lo script eseguito e...Duplicate entry '32767' for key 1
questo è l'output...
è normale?
il db mi dice che sono state trovate 32.767 righe quando in realtà nel file txt di righe ce ne sono 3.039...
ricordi?
**nome cognome - citta - email \n **???
-
colpa mia stavolta
mi ero dimenticato una cosa importantissima....così ti va in loop XD
[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());
$i++;
}mysql_close($connessione);
?> [/php]Svuota la tabella (la selezioni e poi clicchi su svuota) e riesegui lo script
scusa per la svista