- Home
- Categorie
- Coding e Sistemistica
- PHP
- trasformare file di testo in database
-
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
-
EVVIVAAAAAAAAA
adesso funziona!!!inizialmente mi ha dato un errore:
You have an error in your SQL syntax...
in pratica l'errore era causato dall'uso dell'apostrofo nei cognomi...
infatti il file txt l'ho dovuto pulire da tutti gli apostrofi prima di richiamarlo con lo script, ed alla fine ha funzionato...adesso ti chiedo 3 cose conseguenti:
- come faccio a far sì che il db non vada in errore a causa degli apostrofi?
- lo script quando funziona dà per output una pagina bianca, immagino che se lo inserisco nella pagina di replay alla firma dell'appello, questo mi consentirà di aggiornare automaticamente il db, vero?
- nella stessa pagina di replay, come faccio ad ottenere un contatore delle firme?
GRAZIE MILLE
p.s.: adesso voglio imparare a scrivere direttamente sul db, ma immagino che questo sarà il tema di un altro post... ho notato che alcuni firmatari hanno usato la medesima mail, e vorrei impedirlo...
-
@cybergiaggia said:
- come faccio a far sì che il db non vada in errore a causa degli apostrofi?
$text=substr($textarray*,0,-1); $text=htmlentities($text, ENT_QUOTES); list($nome_cognome,$citta,$mail)=explode("-",$text);
- lo script quando funziona dà per output una pagina bianca, immagino che se lo inserisco nella pagina di replay alla firma dell'appello, questo mi consentirà di aggiornare automaticamente il db, vero?
No, questo script lo usi una volta e basta
Per mettere le nuove firme direttamente nel Db bisogna togliere la parte relativa al file di testo.
- nella stessa pagina di replay, come faccio ad ottenere un contatore delle firme?
Fai una select di tutta la tabella e poi
[PHP]$row=mysql_num_rows($query);[/PHP]
$row ti restituirà il numero di record contenuti nella tabella
-
rieccomi...
mi piacerebbe molto capirti al volo, ma non è così...
cosa intendi esattamente al punto 3?
dove va inserita quella riga di codice?
-
se fai
[PHP]<?
$sql="SELECT * FROM nome_tabella";
$query=@mysql_query($sql) or die (mysql_error());
$row=mysql_num_rows($query);
echo $row;
?>[/PHP]
facendo così ti stampa il numero di righe contenute nella tabella...ovvero il numero di firme
-
posso inserire questo script in una pagina php in modo che il numero rimanga sempre a vista e sia aggiornato ad ogni refresh?
-
certo
-
grazie mille!!!
se invece volessi leggere le righe direttamente dal file di testo come dovrei fare? Per il momento ho questo script che mi stampa il suo contenuto:[PHP]<?
$varA = file_get_contents($filelocation);
echo nl2br($varA);
?>[/PHP]
-
Cosa intendi per "leggere", potresti specificare meglio?
-
intendo recuperare il numero delle righe direttamente dal file txt e 'stamparlo' sulla pagina in modo che sia sempre aggiornato...
-
[PHP]$var=file("file.txt");
$row=count($var) - 1;
echo $var;[/PHP]
-
lo script mi restituisce in pagina questo: Array
-
scusami ho sbagliato la variabile
cambia questo
[PHP] echo $row;[/PHP]
-
GRAZIE!!!
-
Di nulla
A presto
-
rieccomi a bomba!!!
ho pensato che non è tanto bello che tutti possano leggere la mail di chi sottoscrive l'appello...con questo codice stampo il contenuto del file txt sulla pagina:
[PHP]<?
$varA = file_get_contents($filelocation);
echo nl2br($varA);
?> [/PHP]che mi riporta:
nome ($var1) cognome ($var2) - città ($var3) - email ($var4)è possibile fare in modo che mi legga e stampi solo le prime 3 variabili?
-
Utilizzando file_get_contents() non puoi fare nulla
Dovresti utilizzare file() e poi esploderti ( explode() ) le righe recuperando solo i primi tre parametri con il comando list() ed quindi stampare il tutto
-
intendi:
[PHP]
$mail=$_POST['var4'];
$textarray=file("file.txt");
$i=0;
while($i<count($textarray))
{
$text=substr($textarray*,0,-1);
list($mail)=explode("",$text);}
[/PHP]