• User Attivo

    Oltre ad aver dato alle variabili un nome appropriato la query, per l'immissione del contatto, è errata. Manca appunto prima del VALUES i campi coinvolti nell'insert.

    Es.: INSERT INTO contatti (id, rag.soc.1, com.sed.leg.1, via.1, civ.1, cap.1, pro.1, cod.fis.1, par.iva.1, ref.con.1, tel.1, email_radio, ind.ema.1, cog.2, nom.2, luo.nas.2, dat.nas.2, com.res.2, pro.2, num.civ.2, cap.2, cod.fis.2, rag.soc.3, com.sed.leg.3, prov.3, via.3, num.civ.3, cap.3, des.ban.4, iba.4, cog.int.4, nom.int.4, cod.fis.4, 6.1, 6.2, opt.6.3, pun.for.7, pun.for.8, com.for.8, pro.for.8, via.for.8, civ.for.8, cap.for.8, cod.pod.8, cod.pre.8, pot.kw.8, con.ann.8, ten.ali.8, tip.mis.8, pot.con.8, dis.loc.8, tar.tra.8, mer.pro.8, for.pro.8, off.com.8, canale.8, operatore.8) VALUES (qui le variabili riferite ai campi);

    Prova e fammi sapere
    CIAO


  • User

    @mikslap said:

    Oltre ad aver dato alle variabili un nome appropriato la query, per l'immissione del contatto, è errata. Manca appunto prima del VALUES i campi coinvolti nell'insert.

    Es.: INSERT INTO contatti (id, rag.soc.1, com.sed.leg.1, via.1, civ.1, cap.1, pro.1, cod.fis.1, par.iva.1, ref.con.1, tel.1, email_radio, ind.ema.1, cog.2, nom.2, luo.nas.2, dat.nas.2, com.res.2, pro.2, num.civ.2, cap.2, cod.fis.2, rag.soc.3, com.sed.leg.3, prov.3, via.3, num.civ.3, cap.3, des.ban.4, iba.4, cog.int.4, nom.int.4, cod.fis.4, 6.1, 6.2, opt.6.3, pun.for.7, pun.for.8, com.for.8, pro.for.8, via.for.8, civ.for.8, cap.for.8, cod.pod.8, cod.pre.8, pot.kw.8, con.ann.8, ten.ali.8, tip.mis.8, pot.con.8, dis.loc.8, tar.tra.8, mer.pro.8, for.pro.8, off.com.8, canale.8, operatore.8) VALUES (qui le variabili riferite ai campi);

    Prova e fammi sapere
    CIAO

    Ciao mikslap,
    innanzitutto grazie per la risposta,
    ho modificato la query in questo modo

    [PHP]
    $query = "INSERT INTO contratti ('id', 'rag.soc.1', 'com.sed.leg.1', 'via.1', 'civ.1', 'cap.1', 'pro.1', 'cod.fis.1', 'par.iva.1', 'ref.con.1',
    'tel.1', 'email_radio', 'ind.ema.1', 'cog.2', 'nom.2', 'luo.nas.2', 'dat.nas.2', 'com.res.2', 'pro.2', 'num.civ.2', 'cap.2', 'cod.fis.2', 'rag.soc.3',
    'com.sed.leg.3', 'prov.3', 'via.3', 'num.civ.3', 'cap.3', 'des.ban.4', 'iba.4', 'cog.int.4', 'nom.int.4', 'cod.fis.4', '6.1', '6.2', 'opt.6.3', 'pun.for.7',
    'pun.for.8', 'com.for.8', 'pro.for.8', 'via.for.8', 'civ.for.8', 'cap.for.8', 'cod.pod.8', 'cod.pre.8', 'pot.kw.8', 'con.ann.8', 'ten.ali.8', 'tip.mis.8',
    'pot.con.8', 'dis.loc.8', 'tar.tra.8', 'mer.pro.8', 'for.pro.8', 'off.com.8', 'canale.8', 'operatore.8')
    VALUES ('$ragsoc','$comsedleg1','$via1','$civ1','$cap1','$pro1','$codfis1','$pariva1','$refcon1',
    '$tel1','$email_radio','$indema1','$cog','$luonas2','$datnas2','$comres2','$pro2','$numciv2','$cap2','$codfis2','$ragsoc3',
    '$comsedleg3','$prov3','$via3','$numciv3','$cap3','$desban4','$iba4','$cogint4','$nomint4','$codfis4','$op4','$op5','$op6',
    '$punfor7','$punfor8','$comfor8','$profor8','$viafor8','$civfor8','$capfor8','$codpod8','$codpre8','$potkw8',
    '$conann8','$tenali8','$tipmis8','$potcon8','$disloc8','$tartra8','$merpro8','$forpro8','$offcom8','$canale8','$operatore8')";
    [/PHP]

    solo che continua a darmi lo stesso errore... :arrabbiato:

    Sto valutando cosa possa crearlo, ma non riesco a venirne a capo.

    Saluti!


  • User Attivo

    Ciao,
    per indicare i nomi dei campi tra apici, non devi usare l'apice semplice '
    ma i backquotes ` (alt+96 da tasterieno numerico).
    I backquotes per identificare i nomi dei database, delle tabelle e dei campi non sono obbligatori (se guardi l'esempio di **mikslap **non li ha utilizzati), tuttavia sono necessari quando i nomi possono essere confusi con altre istruzioni, come ad esempio nel tuo caso in cui hai il . nel nome del campo.

    Un'alternativa per evitare di elencare tutti i campi nella query è quella di inserire un valore per ogni campo della tabella.
    La tua query non salvava i dati perchè non c'era corrispondenza tra il numero dei campi della tabella e i valori inseriti, mancava il campo ID, quello con autoincrement, che puoi inserire impostandolo a NULL.

    Ad esempio, se hai una tabella con tre campi:
    id (autoincrement)
    nome
    cognome

    Per inserire i dati puoi fare come ti ha suggerito** mikslap **

    
    INSERT INTO tabella(`nome`,`cognome`) VALUES ('dato_nome','dato_cognome')
    
    

    oppure assegnando NULL al campo con autoincrement

    
    INSERT INTO tabella VALUES (NULL,'dato_nome','dato_cognome')
    
    

    Alessandro


  • User

    Ciao,

    ho modificato la query in questo modo

    
    $query = "INSERT INTO contratti (`rag.soc.1`, `com.sed.leg.1`, `via.1`, `civ.1`, `cap.1`, `pro.1`, `cod.fis.1`, `par.iva.1`, `ref.con.1`, 
     `tel.1`, `email_radio`, `ind.ema.1`, `cog.2`, `nom.2`, `luo.nas.2`, `dat.nas.2`, `com.res.2`, `pro.2`, `num.civ.2`, `cap.2`, `cod.fis.2`, `rag.soc.3`, 
     `com.sed.leg.3`, `prov.3`, `via.3`, `num.civ.3`, `cap.3`, `des.ban.4`, `iba.4`, `cog.int.4`, `nom.int.4`, `cod.fis.4`, `6.1`, `6.2`, `opt.6.3`, `pun.for.7`, 
     `pun.for.8`, `com.for.8`, `pro.for.8`, `via.for.8`, `civ.for.8`, `cap.for.8`, `cod.pod.8`, `cod.pre.8`, `pot.kw.8`, `con.ann.8`, `ten.ali.8`, `tip.mis.8`, 
     `pot.con.8`, `dis.loc.8`, `tar.tra.8`, `mer.pro.8`, `for.pro.8`, `off.com.8`, `canale.8`, `operatore.8`)
     VALUES (NULL, '$ragsoc','$comsedleg1','$via1','$civ1','$cap1','$pro1','$codfis1','$pariva1','$refcon1',
    '$tel1','$email_radio','$indema1','$cog','$luonas2','$datnas2','$comres2','$pro2','$numciv2','$cap2','$codfis2','$ragsoc3',
    '$comsedleg3','$prov3','$via3','$numciv3','$cap3','$desban4','$iba4','$cogint4','$nomint4','$codfis4','$op4','$op5','$op6',
    '$punfor7','$punfor8','$comfor8','$profor8','$viafor8','$civfor8','$capfor8','$codpod8','$codpre8','$potkw8',
    '$conann8','$tenali8','$tipmis8','$potcon8','$disloc8','$tartra8','$merpro8','$forpro8','$offcom8','$canale8','$operatore8')";
    
    

    adesso mi dice che il contratto è stato inserito, solo che quando vado a visualizzare la table contratti, è vuota ❌x o meglio la visualizzo cosi...

    
    1, '', '', '', '', '', '', '', '', '', '', '', 'No', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''
    
    

    Mi è sorto un dubbio...
    i campi che recuperio tramite post

    
    $ragsoc = $_POST['rag.soc.1'];
    $comsedleg1 = $_POST['com.sed.leg.1'];
    $via1 = $_POST['via.1'];
    $civ1 = $_POST['civ.1'];
    
    

    devono avere gli apici semplici o i backquotes ` (alt+96 da tasterieno numerico)?


  • User Attivo

    Verifica come i dati arrivano al php con
    [PHP]
    print_r($_POST);
    [/PHP]
    e troverai il motivo 🙂


  • User

    @Magicale said:

    Verifica come i dati arrivano al php con
    [php]
    print_r($_POST);
    [/php]
    e troverai il motivo 🙂

    Scusa Magicale,
    essendo un perfetto neofita, mi indicheresti in quale parte del codice inserirlo.. 😊

    Thanks!


  • User Attivo

    Nel tuo script è indifferente, puoi inserirlo in qualsiasi punto dello script. Vedrai l'intero contenuto dell'array $_POST ed in particolare i nomi degli indici.


  • User

    Ok Risolto,

    era un errore nella query. 😉

    Thanks!


  • User Attivo

    La query era errata perchè hai fatto un miscuglio delle due soluzioni che ti sono state suggerite 🙂

    Ma mi pare che ci fosse anche qualcosa nel modo in cui recuperavi i dati che ad esempio non erano in
    [php]
    $ragsoc = $_POST['rag.soc.1'];
    [/php]
    ma in
    [php]
    $ragsoc = $_POST['rag_soc_1'];
    [/php]

    L'utilizzo di print_r($_POST) immagino ti abbia evidenziato anche questo 🙂

    Alessandro


  • User

    Ciao Alessandro,
    in effetti io successivamente alla tua risposta e non riuscendo a mettermi in contatto con te, ho sentito un amico il quale mi ha suggerito di evitare di utilizzare il "." ma utilizzare "_".
    Pertanto seguendo i suoi suggerimenti ho modificato sia la struttura del DB, sia tutte le variabili $_POST.

    Alla fine ho spezzettato la query e lo eseguita poco alla volta, fino a trovare l'errore...in effetti nel SELECT INTO contratti avevo indicato correttamente tutti i valori, mentre nel VALUES ne avevo omesso uno.

    Adesso ti chiedo un consiglio, per portare a termine il mio lavoro devo fare altre cose, ossia,

    • vorrei fare in modo di mostrare all'utente un'anteprima dei dati per poi farli inserire;
    • devo creare uno script che mostri i contratti solo all'utente che li ha inseriti, ossia se l'utente che fa il login è pippo quando clicca sul link " i miei contratti" mostra solo i contratti di pippo , se l'utente che fa il logini è pluto quando clicca sul link " i miei contratti" ecc ecc. se l'utente che fa il login è amministratore mostra tutti i contratti...

    mi consigli di aprire un'altro post, o continuare con questo?

    Ciao
    Crescenzo.