Joomla.it Forum

Componenti per Joomla! => Gestione Form => : gianlucalog 15 Dec 2010, 10:44:25

: Chronoform - Server Side Validation e On Submit code - before sending email Info
: gianlucalog 15 Dec 2010, 10:44:25
Ciao ragazzi, mi presento per la prima volta sul forum dopo 3 anni di letture quotidiane.. Per prima cosa, un grazie a tutto e tutti perchè i contenuti presenti sul sito e forum mi hanni permesso di seguire e imparere joomla negli ultimi 4 anni..
Veniamo al perche di questo topic.
Utilizzo Chronoform e Chronoconnectivity da tempo e ora mi trovo a dover scegliere come risolvere un problema. Mi spiego meglio:

Ho creato un form in cui l'utente compila una sorta di richiesta di verifica alla quale segue una regiostrazione su dB e 2 mail, una all'Admin ed una a se stesso. Il form oltre a inserire i dati digitati o scelti dall'utente, esegue parecchie query su sB ed in base al risultato di esse vengono composte le mail e fatta la validazione.
Ho fatto così:
4 campi input hidden in cui memorizzo i risultati delle query inserendo il codice in On Submit code - before sending email:
Validazione Server Side per i campi digitati dall'utente.
mail e dB. Fin qui tutto ok.
Orta volevo fare la validazione dei campi hidden sempre lato server side ma mi sono accorto (attivando il debug) che la validazione viene eseguita prima del codice on  submit... infatti i valori delle input nel debug sono a null mentre nelle mail vengono poi correttamente validati..

Secondo voi, dovrò come immagino spostare il codice php creato nella sezione on submit in codice Javascript nel form code per poter gestire la validazione? Spero di no, altrimenti mi toccherà aggiungere delle input select da popolare con php con tutti i dati necessari per la validazione (array non proprio piccoli)

Dimenticavo, provando ad inserire lo stesso codice php nella Validation Server Side non sono comunque riuscito a farlo funzionare....

scusate la prolissità, non sono riuscito a sintetizzare di più

ciao e grazie in anticipo
: Re:Chronoform - Server Side Validation e On Submit code - before sending email Info
: gianlucalog 15 Dec 2010, 17:33:36
Per ora ho risolto così. Dico per ora perchè non mi piace granchè come soluzione..

i 4 tag del form invisibili, popolati nel form code da php-mysql
:
<input type="hidden" name="campo1" value="<?php echo $user->name?>" />
<input type="hidden" id="email" name="email" value="<?php echo $user->email?>" />
<select type="hidden" class="cf_inputbox" id="select_10" size="1" title=""  name="campo2"><?php echo $nome_options2?></select>
<select type="hidden" class="cf_inputbox" id="saldofido2" size="1" title=""  name="campo3"><option value=""><?php echo $nome_options3?></select>

il javascript attivato all'onChange di uno dei campi obbligatori [onChange="SelectDati(this.value);] che mi rende selected le options desiderate. (ciclando su tutti gli elementi, e questo mi piace poco)
:
// JavaScript Document
function SelectDati(idSel){
 var sel=document.ChronoContact_cb_richiesta_transact2.campo2;
 var sel2=document.ChronoContact_cb_richiesta_transact2.campo3;
  for(var k=0;k<sel.options.length;k++){
    if(sel.options[k].value==idSel){
       sel.selectedIndex=k;
       break;
       }
  }
  for(var k=0;k<sel2.options.length;k++){
    if(sel2.options[k].value==idSel){
       sel2.selectedIndex=k;
       break;
       }
  }
}

: Re:Chronoform - Server Side Validation e On Submit code - before sending email Info
: vales 15 Dec 2010, 19:58:03
Benvenuto nella comunità italiana di Joomla gianlucalog (fantasma del forum da 3 anni) ;D ;D

Presumo che le query usino dei campi inseriti nel form altrimenti potresti estrarre i valori direttamente nel form.

A mio parere puoi poter fare le query per i campi nascosti anche in validation server, deve funzionare io lo faccio li normalmente, puoi leggere i valori dei campi inseriti con

:
JRequest::getVar('nome_campo','','post)
ed in base al risultato esegui il codice che ti pare oppure invii l'info di errore.

Comunque se sono campi hidden ed il loro valore deriva da query puoi sempre valutare il loro valore in qualsiasi punto a valle delle query.

Non ho capisco il significato delle <select> nascoste. Mi sembrano illogiche. Se sono nascoste non selezioni nulla basta un <input> nascosto. A meno che non tratti select multivalore, ma nell'esempio hanno nomi distinti.
: Re:Chronoform - Server Side Validation e On Submit code - before sending email Info
: gianlucalog 16 Dec 2010, 13:33:37
Benvenuto nella comunità italiana di Joomla gianlucalog (fantasma del forum da 3 anni) ;D ;D

Presumo che le query usino dei campi inseriti nel form altrimenti potresti estrarre i valori direttamente nel form.

A mio parere puoi poter fare le query per i campi nascosti anche in validation server, deve funzionare io lo faccio li normalmente, puoi leggere i valori dei campi inseriti con

:
JRequest::getVar('nome_campo','','post)
ed in base al risultato esegui il codice che ti pare oppure invii l'info di errore.
Ci  avevo provato, senza però raggiungere il risultato desiderato.. Lo stesso codice php del tipo:
:
<?php
$db 
=& JFactory::getDBO();
$user =& JFactory::getUser();
$_POST['campo1'] = $user->name;
$_POST['email'] = $user->email;

$query "SELECT denominazione FROM `sito_user_mosaico` where id_utente = ".$_POST['cb_utente2']. "";

$db->setQuery($query);
$nomes $db->loadAssocList();
foreach ( 
$nomes as $v 
    {
     
$_POST['affiliato2'] = $v['denominazione'];
    } 
?>

inserito in On Submit code - before sending email: mi valorizzava correttamente i campi passandoli alla mail, inserito in Validation Code no...

Non ho capisco il significato delle <select> nascoste. Mi sembrano illogiche. Se sono nascoste non selezioni nulla basta un <input> nascosto. A meno che non tratti select multivalore, ma nell'esempio hanno nomi distinti.
In pratica le select fungono da tabelle indicizzate (id, campo1) dove l'id scelto nel form (altra select visibile) deve rendere selected la options relativa.. In questo modo è come se ci fosse una selezione da parte dell'utente..

ciao e grazie.

il fantasma del forum :-)
: Re:Chronoform - Server Side Validation e On Submit code - before sending email Info
: vales 16 Dec 2010, 18:47:14
Ok, per la select ora ho compreso.

C'è qualcosa però che non mi torna. In Validation Server arrrivano tutti i campi inviati dal form e sono recuperabili con le API di Joomla. Quindi li dovresti poter gestire tutte le verifiche che sono necessarie. Gli altri valori li prendi dalle query e condisci tutto come vuoi.

L'uso dell'array globale è sconsigliato meglio e più sicuro per leggere i campi il metodo che ho già citato e per settare un campo questo esempio:

:
JRequest::setVar('nome_campo',$user->name,'post')