Joomla.it Forum

Componenti per Joomla! => Gestione Form => : giusebos 18 Apr 2015, 12:28:13

: [risolto] Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: giusebos 18 Apr 2015, 12:28:13
ciao mmleoni ho realizzato il tuo "esempio" con successo, prelevando il dato da una tabella dove ci sono questi campi:

razza_cane, nome_cane, anni_cane

quindi usando il campo nome_cane visualizzo tutti i nomi dei cani inseriti.
Vorrei che scegliendo il nome del cane, venissero stampati a video anche il campo razza_cane e anni_cane.

Mi è stato detto che occorre un po di js per popolare questi ulteriori campi, purtroppo nonostante le ricerche non riesco a trovare nessun codice di esempio.

Puoi darmi qualche indicazione?

Grazie
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: mmleoni 20 Apr 2015, 08:30:28
il topic di partenza è: http://forum.joomla.it/index.php?topic=246230.0
ho diviso perché è meglio non continuare un topic già chiuso con un risolto.


ciao giusebos,
in realtà non puoi, almeno con quel codice, perché le informazioni non sono nella pagina. poi usare la select per caricare i dati in una nuova pagina, puoi anche usare ajax se non vuoi ricaricare l'intera pagina. ... ma devi mandare la richiesta al server

se vuoi restare nella pagina devi rendere i dati disponibili per l'elaborazione (ad esempio un oggetto javascript), in modo da poterli visualizzare rapidamente.

quale delle due soluzioni scegliere dipende più che altro dalla quantità di dati presenti: se sono molti la prima è la scelta obbligata.
però è un pezzo che non faccio niente di complicato con CF  :(

ciao
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: giusebos 20 Apr 2015, 09:19:30
hai fatto benissimo a dividere il topic! Non mi accodo mai ma in questo caso ero incerto, forse si sarebbero aggiunte informazioni utili per proseguire l'esempio proposto.

I dati sono destinati a crescere sempre più, quindi la prima "strada" è quella da seguire.

la mia idea era quella di avere delle text box vuote che si popolavano alla scelta di un ID o un numero univoco come il codice fiscale, ma non so se questa è la soluzione giusta.

In pratica la logica dovrebbe essere quella che si usa nei gestionali, dove facendo la fattura si richiama il cliente, se è inserito, oppure si crea una nuova anagrafica se non è mai stato cliente. io pensavo solo di fare una cosa un poco più semplice.


: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: mmleoni 20 Apr 2015, 14:48:37
spero molto più semplice!!  ;D ;D

immagino che le informazioni da visualizzare siano molte più di anni e razza... stando in ajax puoi seguire due strade: fornire a js i dati con cui costruire la parte pagina o fornire la parte di pagina già compilata. il primo metodo è più professionale, il secondo più veloce e meno tecnico. io ti consiglierei il secondo.
da ciò che ricordo CF non ha il supporto per ajax e si doveva ricorrere ad una seconda form per la risposta alla interrogazione; funzionava così:

1a form: CF disegna la form e gestisce l'eventuale submit della form intera
nell' evento 'on load' usi 'load javascript' per caricare il js che gestisce ajax. il codice deve richiamare la seconda form (inserendo &tmpl=component nell'url per ovvi motivi)

2a form: contiene il custom code php che genera la risposta
nell'evento 'on submit' (mi pare) usi
 - 'db read' per leggere i dati (usando il field 'conditions' per leggere il/i records opportuni)
 - 'custom code' per inserire il php che genera la risposta e la stampa a video

io lo ho fatto un paio di volte e poi mi sono reso conto che era molto meglio scrivere un componente.

se hai dubbi chiedi, e se qualcuno è più ferrato di me su CF si senta libero di suggerire.

ciao

: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: giusebos 20 Apr 2015, 15:12:02
solo una cosa, chronoforms V5 ha il supporto ajax, nelle scheda degli eventi dei vari fields c'è un riquadro ajax che in diversi casi ho visto sempre riempire con la parola ajax....
Troppo semplice forse? ;D ;D

Purtroppo la versione CF5 è completamente diversa da quelle precedenti e ogni versione ha una logica troppo diversa da non poter ricreare vecchie "situazioni" create con le vecchie versioni, di cui si parlava in alcune vecchie discussioni di questo forum.

Sto scoprendo le cose molto lentamente e con grande difficoltà e anche in lingua inglese fuori dal forum del componente c'è davvero poco e questo poco è riferito a versioni precedenti alla 5.

Finirò il mio form a 70 anni :P :P
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: mmleoni 20 Apr 2015, 15:34:33
in effetti io, come sviluppo, sono rimasto alla 5.0.0 che di ajax ha decisamente poco, la 5.0.9, che ho su altro sito, introduce un sacco di iconcine con la scritta ajax... ma non chiedetemi a che servono.

per un ajax 'tradizionale':
http://forum.joomla.it/index.php/board,37.0.html

: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: mmleoni 20 Apr 2015, 16:06:18
mi sono incuriosito: usare ajax con CF5 (almeno 5.0.9) è facilissimo...

in designer->layout ti fai la tua form e ci aggiungi
. un dropdown (id="DropdownSelection" e soprattutto nome="DropdownSelection")
. un container (id e nome="AjaxTarget")
in deginer->events inserisci "Dynamic html"
 on "change value" of "DropdownSelection (la select)" target "AjaxTarget (il container )" ajax Event "ajaxEvent"

in setup, oltre al normale codice, crei un nuovo evento, nel nostro caso "ajaxEvent"
in 'on ajaxEvent' inserisci un 'custom code'
:
<?php echo json_encode("la tua scelta:" $_GET['DropdownSelection']); ?>
quando cambi, la select appare il valore scelto nel container.
ho impiegato molto più a scrivere come farlo che a farlo...

ps: non usate $_GET per passare valori al sql.
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: mmleoni 20 Apr 2015, 16:19:04
piccola riflessione...
anche se CF5 dice "list should be returned in JSON format" secondo me json qui, nell'html dinamico, ci sta come i cavoli a merenda, suggerirei di rimuoverlo e restituire giusto lo html senza nessun encoding (salvo quello proprio dello html)

: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: giusebos 20 Apr 2015, 16:57:42
scusa non ho capito cosa otteniamo cosi...
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: giusebos 20 Apr 2015, 16:59:13
nel container che type scegliamo...field?
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: mmleoni 21 Apr 2015, 10:50:43
container: div
in modo da poter essere inserito il contenuto restituito dall'event ajaxEvent
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: mmleoni 21 Apr 2015, 11:21:51
allora riprendiamo un poco il topic di origine e la tua richiesta.
nella tua tabella manca un id di riga, che ti consiglio di aggiungere per avere lo stesso comportamento del primo topic e perché e meglio passare numeri che non stringhe (encoding e varie altre considerazioni)

ti faccio un esempio sulla tabella #__users quindi fai quanto nell'altro topic ma usando 'name' al posto di 'title' come nome di campo

fermo restando quanto già detto per questo topic:

nell' ajaxEvent inserisci un db read:
poi aggiungi un custom code
content:
:
<?php 
foreach($form->data["UserFiltered"] as $user){
echo (
"<p>"); 
echo (
"name: " $user["name"] ); 
echo (
"email: " $user["name"] ); 
echo (
"</p>"); 
}
?>


quando selezioni un utente nella select, nel container appaiono nome ed email (il codice è fatto per supportare anche risultati multipli, che ovviamente non ci sono con un id)

io magari do molte cose per scontate, data la mia esperienza, ma ti assicuro è che tuto molto semplice.

ciao
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: mmleoni 21 Apr 2015, 11:25:36
ps: ovviamente $_GET con il type cast ad int non è proprio il massimo del coding joomla, ma non mi ricordavo la sintassi di jinput e quindi lascio a voi metterlo a posto.
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: vales 21 Apr 2015, 11:49:53
Se il valore della GET è numerico int dovrebbe andare bene questo codice

:
JFactory::getApplication()->input->getInt('nome_della_GET', 0);
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: giusebos 21 Apr 2015, 14:37:18
ho eseguito alla lettera, ma non mi funziona.

quando dici
poi aggiungi un custom code
content:

ho inserito un custom code in design,

mentre non ho capito bene cosa è la mia scelta

:
<?php echo json_encode("la tua scelta:" $_GET['DropdownSelection']); ?>
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: giusebos 21 Apr 2015, 14:50:06
sto riprovando da capo, quindi fino a vedere i nomi dentro la mia dropdown, di cui field name e fild ID si chiamano DropdownSelection,
funziona, vedo i nomi degli uenti, ma appena aggiungo in setup>>Db read>>condition

:
<?php return array('id' => (int)$_GET['DropdownSelection']); ?>
nel front-end vedo solo la select box vuota.
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: mmleoni 21 Apr 2015, 14:55:24
mi sa che stai inserendo la condizione nel 'db read' sbagliato: la condizione va sotto l'evento ajax, non sotto l'evento 'load'
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: mmleoni 21 Apr 2015, 15:01:33
dimenticavo: "la tua scelta" è il value della option della select che è tramesso alla selezione del valore tramite ajax all'evento ajaxjEvent

chiaro, no?  ;D ;D
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: giusebos 21 Apr 2015, 15:07:11
ci siamo quasi, sono andato avanti inserendo il container(div) AjaxTarget,
il dynamic HTML
in setup un On ajaxEvent  con dentro

:
<?php return array('id' => (int)$_GET['DropdownSelection']); ?>
e in effetti scegliendo un nome nella select list in front-end per un attimo vedo l'iconcina di progressione che cerca qualcosa da caricare....., ma devo rimettere questo codice:

:
<?php 
foreach($form->data["UserFiltered"] as $user){
echo (
"<p>"); 
echo (
"name: " $user["name"] ); 
echo (
"email: " $user["name"] ); 
echo (
"</p>"); 
}
?>


che non ho capito bene dove va...
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: mmleoni 21 Apr 2015, 15:08:19
per quelli a cui è venuto il mal di testa, facciamo così: scaricate ed installate la form (formato back up di CF5.0.9)

ricordate di:
buon divertimento

ps: ma perché non leggete il manuale? dite che non esiste proprio? e vi pare una buona ragione per non leggerlo?  ;D ;D ;D ;D

---
edited: inserito file compattato, anziché con doppia estensione
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: mmleoni 21 Apr 2015, 15:11:59
il codice
:
<?php 
foreach($form->data["UserFiltered"] as $user){
echo (
"<p>"); 
echo (
"name: " $user["name"] ); 
echo (
"email: " $user["email"] ); /*opps, avevo scritto name due volte*/
echo ("</p>"); 
}

?>

va nell' ajaxEvent in un custom code dopo il db read (la condizione va nelle conditions del db read, invece).
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: giusebos 21 Apr 2015, 15:14:22
fatto come dici tu, ma ha smesso di funzionare

grazie per il file.....forse è danneggiato, non si scompatta
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: mmleoni 21 Apr 2015, 15:17:52
non va scompattato, va solo tolta la estensione .zip
(in effetti non è stata una mossa geniale...  :-[ )

-----
edited: ho inserito un file compattato con zip in modo da evitare disguidi ad altri utenti
: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: giusebos 21 Apr 2015, 15:27:56
edit

: Re:Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: giusebos 21 Apr 2015, 15:45:04
funziona perfettamente, io mi ero perso la parte di mettere un ulteriore db read dentro onajax event.


adesso quando si scegli l'utente, sotto appare

name: pino catozzoemail: pinocatozzo@gmail.com


Sicuramente questa discussione grazie a mmleoni  :) :) aggiungerà ulteriore luce su chronoforms




: Re:[risolto] Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: sh7va 17 Jul 2016, 01:04:20
Ciao a tutti,
scusate se  riprendo una vecchia discusssione.
Ho seguito tutta le vostre indicazioni e sono riuscito ad adattare con successo un evento onajax che richiama i data da una tabella sul mio form. Volevo sapere se è possibile inviare il contenuto che viene fuori nel container tramite mail. Infatti quando faccio la prova di invio mail vengono inviati correttamente tutti i dati inseriti nel form tranne il campo container che rimane vuoto.

Grazie per l'aiuto.
: Re:[risolto] Chronoforms V5 - Creare campo form che richiami i dati di una tabella
: giusebos 17 Jul 2016, 09:51:26
la discussione è risolta, quindi cortesemente apri un nuovo post!