Sarebbe meglio se specifichi pure qual'è il campo non obbligatorio;
in ogni caso a mio avviso quando ci sono dei campi non obbligatori è meglio costruire la query solo coi campi che sono stai riempiti e che quindi vanno inseriti.
Ovvero:
Dividi la query in due, esempio:
Codice PHP:
$query1 = "INSERT INTO utenti (username, nome, cognome, ragione, indirizzo, citta, provincia, cap, telefono
$query2 = )VALUES('".Addslashes ($username)."','".Addslashes ($nome)."','".Addslashes ($cognome)."','".Addslashes ($ragione)."','".Addslashes ($indirizzo)."','".Addslashes ($citta)."','".Addslashes ($provincia)."','".Addslashes ($cap)."','".Addslashes ($telefono)."','".Addslashes ($fax)."'
Quindi fai un if che se il campo web è settato aggiungi una parte di query che contenga l'email, ad esmpio:
Codice PHP:
$query1 .= ", web";
$query2 .= ",'" . $email . "'";
Pio unisci le due semiquery
Codice PHP:
$query = $query1 . £query2 . ");";
Devi stare attento alle parentesi e alle virgole infatti le virgole ti conviene mettere all'inizio del pezzo di query che eventualmente aggiungi, in modo che se non viene aggiunto, non hai problemi con virgole in più, che troveresti se metti la virgola nella "query di partenza".
P.S.
Per quanto riguarda l'esempio, ho cercato di riferirmi a quello da te postato, ma se questa è la query che usi, non ti può funzionare, perchè nei values metti molti più campi di quelli che indichi nell'insert.
P.P.S.
é la prima volta che vedo l'addslahes messo direttamente nel costrutto della query, cioè stai inserendo le slash, ma il risultato non lo stai memorizzando in nessuna varabile,
io ho sempre fatto tipo : $variabile = addslashes ($variabile)
e poi usavo la variabile;
Volevo sapere se questo metodo l'hai usato altre volte e ti funziona.
Ciao.