Joomla.it Forum
Componenti per Joomla! => Gestione Form => : Ago_ 28 Jun 2016, 12:04:55
-
salve ragazzi, ho un problemino nel salvataggio dei dati.
Ho due textbox in lettura da una tabella con due campi codiceprodotto e nomeprodotto
1) textbox codiceprodotto con autocompleter
2) textbox nomeprodotto
autocompleter con codice
<?php
foreach($form->data['Datacom'] as $un_codice){
if(!empty($form->data['tag']) AND stripos($un_codice['codiceprodotto'], $form->data['tag']) === false){
continue;
}
$json[] = array('id' => $un_codice['nomeprodotto'], 'text' => $un_codice['codiceprodotto']);
}
echo json_encode($json);
?>
load javascript in on load (per textobox nomeprodotto) con codice
jQuery(document).ready(function(jQ) {
jQ('#codiceprodotto').on("select2-selecting", function(evt) {
jQ('#nomenome').val(evt.choice.id);
});
});
#codiceprodotto l'ID dell'autocompleter e #nomenome l'ID del texbox nomeprodotto
Nel form che compilo funziona tutto bene, nel codiceprodotto visualizza il codice e il nomeprodotto il nome del prodotto
Al momento del salvataggio nelo db succede il problema, in codiceprodotto salva il nome e in nomeprodotto non salva niente
C'è qualcuno più esperto di me che capisce dove sta il problema ??
-
controlla che il name del campo del nomeprodotto coincida con quello del campo della tabella in cui va salvato
metti anche delle action debugger per vedere cosa succede in certi punti del On Submit
-
controlla che il name del campo del nomeprodotto coincida con quello del campo della tabella in cui va salvato
metti anche delle action debugger per vedere cosa succede in certi punti del On Submit
ciao vales, grazie dell'aiuto....in effetti c'era qualche problemino dove hai detto...ho sistemato un po di cose e ricreato e rigenerato tabella/mail
riepilogo
autocompleter
<?php
foreach($form->data['Datacom'] as $uno){
if(!empty($form->data['tag']) AND stripos($uno['codiceprodotto'], $form->data['tag']) === false){
continue;
}
$json[] = array('id' => $uno['nomeprodotto'], 'text' => $uno['codiceprodotto']);
}
echo json_encode($json);
?>
javascript
jQuery(document).ready(function(jQ) {
jQ('#codice').on("select2-selecting", function(evt) {
jQ('#nome').val(evt.choice.id);
});
});
nel form visivo vedo tutto correttamente al suo posto
nella mail e nel db mi restituisce due volte il nome del prodotto (sia nel campo codice che nel nome)
non vorrei azzardare ma secondo me il problema sta nel codice autocompleter...c'è un po di confusione li
questo il debug
Data Array
Array
(
[option] => com_chronoforms5
[view] => form
[Itemid] => 127
[chronoform] => PRATICA
[event] => submit
[codiceutente] => WebMaster
[mail] => polizzano@feelplus.it
[datapratica] => 28-06-2016
[contatto] => inserire nome e/o telefono se diverso
[codice] => DH-9000 18"45
[nome] => DH-9000 18"45
[descrizionedifetto] => ygje
[manifestazionedifetto] => yytjtej
[datigaranzia] => 0
[numeroddt] => 1234.55555
[dataddt] => 14/06/2016
[datascontrino] =>
[dichiarazione] => 1
[inviopratica] => INVIA PRATICA
[mailutente] => polizzano@feelplus.it
[id] => 57
[ip_address] => xxxxxxxx
)
Array
(
)
Errors
Array
(
)
Debug Info
Array
(
[4] => Array
(
[DB Save] => Array
(
[Queries] => Array
(
[0] => INSERT INTO `garanzia_pratiche` (`codiceutente`, `mail`, `datapratica`, `contatto`, `descrizionedifetto`, `manifestazionedifetto`, `datigaranzia`, `numeroddt`, `dataddt`, `datascontrino`, `dichiarazione`, `inviopratica`, `user_id`, `uniq_id`, `created`) values ('WebMaster', 'polizzano@feelplus.it', '28-06-2016', 'inserire nome e/o telefono se diverso', 'ygje', 'yytjtej', '0', '1234.55555', '14/06/2016', '', '1', 'INVIA PRATICA', '628', '9ea886d0cf259f33c1cf773a3523549383e37a8e', '2016-06-28 16:03:36');
)
)
)
[9] => Array
(
[Email] => Array
(
[0] => An email with the details below was sent successfully:
[1] => To:polizzano@feelplus.it, garanzia@feelplus.it
[2] => Subject:FEELPLUS - Pratica di Assistenza
[3] => From name:FEELPLUS - Assistenza Tecnica
[4] => From email:garanzia@feelplus.it
[5] => CC:
[6] => BCC:
[7] => Reply name:
[8] => Reply email:
[9] => Attachments:
[10] => Array
(
)
[11] => Body:
<table border="1">
<tr><td>Codice Utente</td><td>WebMaster</td></tr>
<tr><td>E-Mail</td><td>polizzano@feelplus.it</td></tr>
<tr><td>Data Pratica</td><td>28-06-2016</td></tr>
<tr><td>Contatto</td><td>inserire nome e/o telefono se diverso</td></tr>
<tr><td>Codice Prodotto</td><td>DH-9000 18"45</td></tr>
<tr><td>Nome Prodotto</td><td>DH-9000 18"45</td></tr>
<tr><td>Descrizione Difetto</td><td>ygje</td></tr>
<tr><td>Come si è manifestato il difetto ?</td><td>yytjtej</td></tr>
<tr><td>Dati garanzia</td><td>0</td></tr>
<tr><td>N. DDT</td><td>1234.55555</td></tr>
<tr><td>Data DDT</td><td>14/06/2016</td></tr>
<tr><td>Data Scontrino</td><td></td></tr>
<tr><td>Scontrino</td><td></td></tr>
<tr><td>id</td><td>57</td></tr>
</table><br /><br />IP: xxxxxxx
)
)
)
-
mi sembra strana questa riga
$json[] = array('id' => $uno['nomeprodotto'], 'text' => $uno['codiceprodotto']);
a logica id dovrebbe essere associato a codiceprodotto e text a nomeprodotto
ma non conoscendo i campi delle tabelle usate per autocompleter e db save è difficile essere precisi
-
mi sembra strana questa riga
$json[] = array('id' => $uno['nomeprodotto'], 'text' => $uno['codiceprodotto']);
a logica id dovrebbe essere associato a codiceprodotto e text a nomeprodotto
ma non conoscendo i campi delle tabelle usate per autocompleter e db save è difficile essere precisi
mmm...in effetti non avevo mai fatto caso a quell'id in mezzo al codice...
la tabella dei codici è composta solo da due campi (codiceprodotto,nomeprodotto), non esiste nessun campo id in questa tabella.
il campo id esiste nella tabella di salvataggio del form, a parte ovviamente (campo autoincrementale che crea il sistema chronoforms alla creazione della tabella di salvataggio del form)
-
dal debug che hai postato e da quello che hai precisato penso che il codice dovrebbe essere modificato così:
<?php
foreach($form->data['Datacom'] as $uno){
if(!empty($form->data['tag']) AND stripos($uno['nomeprodotto'], $form->data['tag']) === false){
continue;
}
$json[] = array('id' => $uno['codiceprodotto'], 'text' => $uno['nomeprodotto']);
}
echo json_encode($json);
?>
inoltre nei campi della tabella che viene salvata non ci sono i campi codice e nome
-
dal debug che hai postato e da quello che hai precisato penso che il codice dovrebbe essere modificato così:
<?php
foreach($form->data['Datacom'] as $uno){
if(!empty($form->data['tag']) AND stripos($uno['nomeprodotto'], $form->data['tag']) === false){
continue;
}
$json[] = array('id' => $uno['codiceprodotto'], 'text' => $uno['nomeprodotto']);
}
echo json_encode($json);
?>
inoltre nei campi della tabella che viene salvata non ci sono i campi codice e nome
con questo codice nel form si invertono, quindi nel codice autocompleter si vede il nome...e nel campo nome compare il codice
appena salvo nella mail e nel db in entrambi i campi compare il codice
nella tabella di salvataggio ci sono molte colonne tra cui codiceprodotto (dove si salva il codice e nomeprodotto per il nome)
io mi chiedo, questo "id" nel codice a cosa si riferisce, purtroppo non sono un programmatore da zero e qualche passaggio delle stringhe mi salta...
-
nella tabella di salvataggio ci sono molte colonne tra cui codiceprodotto (dove si salva il codice e nomeprodotto per il nome)
appunto nel form non hai campi con quei nomi, quindi non possono essere salvati.
id e text sono nella funzione ajax e non influiscono nelle successive operazioni. text è ciò che si vede nel campo e id e ciò che viene inserito realmente come valore.
hai un link al form
-
appunto nel form non hai campi con quei nomi, quindi non possono essere salvati.
id e text sono nella funzione ajax e non influiscono nelle successive operazioni. text è ciò che si vede nel campo e id e ciò che viene inserito realmente come valore.
hai un link al form
allora se nomino i due campi della tabella di salvataggio con codiceprodotto e nomeprodotto come nella tabella del read DB...dovrebbe funzionare...
-
direi di si
-
niente, con queste impostazioni e campi db uguali alla tabella dei codici, nel form si invertono i campi e nel db/mail si visualizza in entrambi il codice
questo il link
http://atalabici.net/garanzia/index.php?option=com_chronoforms5&view=form&Itemid=127 (http://atalabici.net/garanzia/index.php?option=com_chronoforms5&view=form&Itemid=127)
-
mi sembra che in campo nome prende il valore del codice e questo dipende dal javascript che hai realizzato
-
mi sembra che in campo nome prende il valore del codice e questo dipende dal javascript che hai realizzato
allora il colpevole è qua...
jQuery(document).ready(function(jQ) {
jQ('#codiceprodotto').on("select2-selecting", function(evt) {
jQ('#nomeprodotto').val(evt.choice.id);
});
});
-
vales grazie per l'aiuto, ma visto i problemi ho deciso di unire i due campi nomeprodotto e codice prodotto e fare unico campo textbox con autocompleter, così taglio la testa al toro. se vuoi vedere l'effetto il link rimane valido.
-
se posso darti un consiglio, alla voce class inserisci una di queste classi,
L in maiuscolo, così avrai ampliato le dimensioni dei box secondo bootstrap
Queste le classi complete che puoi usare per ridimensionare i box
XS, S, M, L, XL
-
se posso darti un consiglio, alla voce class inserisci una di queste classi,
L in maiuscolo, così avrai ampliato le dimensioni dei box secondo bootstrap
Queste le classi complete che puoi usare per ridimensionare i box
XS, S, M, L, XL
buono a sapersi...thx giusebos