• User

    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!!!
    🙂


  • Consiglio Direttivo

    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 😉


  • User

    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...


  • Consiglio Direttivo

    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 😉


  • User

    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...
    😞


  • Consiglio Direttivo

    se hai copincollato tutto così com'è certo!

    devi mettere i dati di connessione al Db 😉

    Dai un'occhiata quì


  • User

    ...

    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... :arrabbiato:

    Grazie ancora per la pazienza...
    sento di essere vicina alla meta...
    🙂


  • Consiglio Direttivo

    ma il Db si chiama NOME_DB ?


  • User

    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?


  • Consiglio Direttivo

    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 😉


  • User

    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


  • Consiglio Direttivo

    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 😉


  • User

    ci sono!
    pensavo di averla creata ma non era vero... 😞
    adesso mi si chiede di riempire i campi della tabella...


  • Consiglio Direttivo

    ah ecco XD
    ora è tutto chiaro 😉

    se hai bisogno....siam quì 😄


  • User

    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

  • Consiglio Direttivo

    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_ci

    
    in 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 ;)

  • User

    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 **

    ???


  • Consiglio Direttivo

    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 😉


  • User

    :vai::vai::vai:

    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:

    1. come faccio a far sì che il db non vada in errore a causa degli apostrofi?
    2. 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?
    3. 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...


  • Consiglio Direttivo

    @cybergiaggia said:

    1. 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);
    
    1. 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.
    1. 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 😉