Back to top

Autore Topic: Chronoform - Server Side Validation e On Submit code - before sending email Info  (Letto 4903 volte)

Offline gianlucalog

  • Nuovo arrivato
  • *
  • Post: 19
    • Mostra profilo
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
« Ultima modifica: 15 Dic 2010, 10:46:18 da gianlucalog »

Offline gianlucalog

  • Nuovo arrivato
  • *
  • Post: 19
    • Mostra profilo
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
Codice: [Seleziona]
<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)
Codice: [Seleziona]
// 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;
       }
  }
}


Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
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

Codice: [Seleziona]
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.
« Ultima modifica: 15 Dic 2010, 20:00:45 da vales »
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline gianlucalog

  • Nuovo arrivato
  • *
  • Post: 19
    • Mostra profilo
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

Codice: [Seleziona]
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:
Codice: [Seleziona]
<?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 :-)

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
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:

Codice: [Seleziona]
JRequest::setVar('nome_campo',$user->name,'post')
« Ultima modifica: 16 Dic 2010, 18:49:23 da vales »
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

 



Web Design Bolzano Kreatif