• User Attivo

    Ciao,
    puoi postare la struttura della tabella?

    Nel frattempo:
    forse è solo un errore di trascrizione quando hai postato qui, ma alla fine della query manca un apice:

    
    '$email)";
    
    

    dovrebbe essere

    
    '$email')";
    
    

    Fai anche questa modifica e controlla se è generato un errore:
    [php]
    $risultato=mysql_query($query,$db);
    echo mysql_error($db);
    [/php]

    Alessandro


  • User

    Ciao Alessandro,
    per quanto riguarda '$email' ho commesso un errore di battitura, per quanto riguarda 'echo mysql_error($db)' mi ritorna: mysql_error(Resource id #4).
    inserisco la tabella 'elenco_soci' ricavate dall'esportazione di phpmyadmin:

    
    --
    -- Struttura della tabella `elenco_soci`
    --
    
    CREATE TABLE IF NOT EXISTS `elenco_soci` (
      `id_socio` int(10) NOT NULL auto_increment,
      `data_iscrizione` int(13) default NULL,
      `username` varchar(32) default NULL,
      `password` varchar(32) default NULL,
      `cognome` varchar(30) default NULL,
      `nome` varchar(30) default NULL,
      `nazionalità` varchar(20) default NULL,
      `comune_nascita` varchar(30) default NULL,
      `provincia_nascita` varchar(2) default NULL,
      `data_nascita` int(13) default NULL,
      `sesso` varchar(1) default NULL,
      `codice_fiscale` varchar(16) default NULL,
      `comune_residenza` varchar(30) default NULL,
      `provincia_residenza` varchar(2) default NULL,
      `cap` varchar(5) default NULL,
      `indirizzo` varchar(50) default NULL,
      `cartellino_figc` varchar(8) default NULL,
      `telefono_abitazione` varchar(15) default NULL,
      `telefono_cellulare` varchar(15) default NULL,
      `email` varchar(50) default NULL,
      PRIMARY KEY  (`id_socio`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=769 ;
    
    

    e l'ultima parte di codice per il salvataggio dei dati

    
    $query = "INSERT INTO 'elenco_soci' 
    ('data_iscrizione', 'username', 'password', 'cognome', 'nome', 'nazionalita', 'comune_nascita', 'provincia_nascita', 'data_nascita', 'sesso', 'codice_fiscale', 'comune_residenza', 'provincia_residenza', 'cap', 'indirizzo', 'cartellino_figc', 'telefono_abitazione', 'telefono_cellulare', 'email') VALUES
    ('$data_iscrizione', '$username', '$password', '$cognome', '$nome', '$nazionalita', '$comune_nascita', '$provincia_nascita', '$data_nascita', '$sesso', '$codice_fiscale', '$comune_residenza', '$provincia_residenza', '$cap', '$indirizzo', '$cartellino_figc', '$telefono_abitazione', '$telefono_cellulare', '$email')";
    
    echo "<br><br> Query: $query<br><br> db: $db";
    
    $risultato=mysql_query($query,$db);
    echo "<br>my_sql error: mysql_error($db)<br>";  
    echo "<br><br>Risultato: $risultato | mysql_query($query,$db)";
    echo "<br><br>db_host, db_user e db_pass: $db_host, $db_user, $db_pass";
    mysql_close();
    
    

  • User Attivo

    Nome del campo sul db:

    
    `nazionalità`
    
    

    lo hai scritto con à, mentre nella insert è senza accento.


  • User

    E' vero..
    l'ho rinominato nel db da 'nazionalità' a 'nazionalita'
    però mi ritorna sempre lo stesso errore.

    Ma cosa significa 'mysql_error(Resource id #4)'?


  • User Attivo

    Significa che non hai scritto il codice come ti ho suggerito:
    [PHP]
    echo mysql_error($db);
    [/PHP]
    è diverso da
    [PHP]
    echo "<br>my_sql error: mysql_error($db)<br>";
    [/PHP]

    All'interno dei doppi apici vengono valutate le variabili, ma non vengono eseguite le funzioni. Quindi invece di eseguire la funzione che ti ho suggerito hai semplicemente scritto a video il nome della funzione con, tra le parentesi, il contenuto della variabile $db che, come detto prima, è l'unica che è stata valutata.

    Volendo inserire i <br> e altro testo oltre al normale output della funzione avresti dovuto scrivere:
    [PHP]
    echo "<br>my_sql error: ".mysql_error($db)."<br>";
    [/PHP]

    Lo stesso discorso vale per
    [PHP]
    echo "<br><br>Risultato: $risultato | mysql_query($query,$db)";
    [/PHP]
    (Qui sarebbe inutile comunque eseguire la funzione visto che mysql_query() è già utilizzata 2 righe prima).

    Alessandro


  • User

    scusami, hai perfettamente ragione, ma mi sto perdendo un pò.
    l'errore che mi restituisce:

    
    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 ''elenco_soci' ( 'data_iscrizione', 'username', 'password', 'cognome', 'nome' at line 1
    
    

  • User

    Ho tolto tutti gli apici ai nomi dei campi e funziona.

    E' possibile che mi vedeva i singoli apici come doppi apici?

    Ho altre tabelle con gli apici tipo questa e funziona regolarmente:

    
    $query = "INSERT INTO `news` 
    		(`data`, `titolo`, `contenuto`, `nome`, `cognome`) values 
    		('$data', '$titolo','$contenuto', '$nome', '$cognome')";
    		
    		Echo "News inserita correttamente!";
    		
    		$risultato=mysql_query($query,$db);
    
    		mysql_close();
    
    

    qual'è la differenza di questi apici?

    Grazie mille per la tua disponibilità


  • User Attivo

    Confronta la struttura della tabella che ti ha generato phpmyadmin con la tua query.

    Questo ` (backquotes)
    e questo **' **(quotes)
    sono due apici differenti.

    Per delimitare i nomi delle tabelle e dei campi devi usare il primo, backquotes.
    L'altro, ovvero l'apice semplice che ottieni normalmente premendo il relativo tasto sulla tastiera, serve a delimitare i dati.

    [Edit:] stavo giusto scrivendoti quello che poi hai chiesto 🙂

    Alessandro


  • User

    Grazie mille Alessandro, se volsessi scrivere il backquotes da tastiera?


  • User Attivo

    Sulla tastiera italiana non è presente.
    L'unico modo che conosco è passando attraverso il codice ASCII, che è 96.

    ALT + 96 dal tastierino numerico]

    Alessandro


  • User

    grazie e buonanotte 😉