Autore Topic: [risolto] Chronoforms V5 - Creare campo form che richiami i dati di una tabella  (Letto 6069 volte)

Offline giusebos

  • Fuori controllo
  • *
  • Post: 19604
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
    • Demo iCagenda
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
« Ultima modifica: 21 Apr 2015, 15:45:45 da giusebos »
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
    • marco maria leoni web consulting
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
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline giusebos

  • Fuori controllo
  • *
  • Post: 19604
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
    • Demo iCagenda
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.


su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
    • marco maria leoni web consulting
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

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline giusebos

  • Fuori controllo
  • *
  • Post: 19604
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
    • Demo iCagenda
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
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
    • marco maria leoni web consulting
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

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
    • marco maria leoni web consulting
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'
Codice: [Seleziona]
<?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.
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
    • marco maria leoni web consulting
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)

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline giusebos

  • Fuori controllo
  • *
  • Post: 19604
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
    • Demo iCagenda
scusa non ho capito cosa otteniamo cosi...
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline giusebos

  • Fuori controllo
  • *
  • Post: 19604
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
    • Demo iCagenda
nel container che type scegliamo...field?
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
    • marco maria leoni web consulting
container: div
in modo da poter essere inserito il contenuto restituito dall'event ajaxEvent
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
    • marco maria leoni web consulting
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:
  • table name: #__users
  • multi read: yes
  • enable model id: yes
  • model id: UserFiltered
  • conditions: <?php return array('id' => (int)$_GET['DropdownSelection']); ?>
poi aggiungi un custom code
content:
Codice: [Seleziona]
<?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
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
    • marco maria leoni web consulting
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.
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 7961
  • Sesso: Maschio
    • Mostra profilo
    • Test di Albo Pretorio On LIne e Moduli Scuola On Line per Joomla 3
Se il valore della GET è numerico int dovrebbe andare bene questo codice

Codice: [Seleziona]
JFactory::getApplication()->input->getInt('nome_della_GET', 0);
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/joomla3/

Offline giusebos

  • Fuori controllo
  • *
  • Post: 19604
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
    • Demo iCagenda
ho eseguito alla lettera, ma non mi funziona.

quando dici
Citazione
poi aggiungi un custom code
content:

ho inserito un custom code in design,

mentre non ho capito bene cosa è la mia scelta

Codice: [Seleziona]
<?php echo json_encode("la tua scelta:" $_GET['DropdownSelection']); ?>
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline giusebos

  • Fuori controllo
  • *
  • Post: 19604
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
    • Demo iCagenda
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

Codice: [Seleziona]
<?php return array('id' => (int)$_GET['DropdownSelection']); ?>
nel front-end vedo solo la select box vuota.
« Ultima modifica: 21 Apr 2015, 14:52:26 da giusebos »
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
    • marco maria leoni web consulting
mi sa che stai inserendo la condizione nel 'db read' sbagliato: la condizione va sotto l'evento ajax, non sotto l'evento 'load'
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
    • marco maria leoni web consulting
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
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline giusebos

  • Fuori controllo
  • *
  • Post: 19604
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
    • Demo iCagenda
ci siamo quasi, sono andato avanti inserendo il container(div) AjaxTarget,
il dynamic HTML
in setup un On ajaxEvent  con dentro

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

Codice: [Seleziona]
<?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...
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
    • marco maria leoni web consulting
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:
  • decompattate il file: lo zip serve solo per permettere l'upload sul forum
  • sostituire i nomi delle tabelle nei due db reader (cf non supporta i prefissi di joomla per le tabelle)
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
« Ultima modifica: 21 Apr 2015, 15:21:24 da mmleoni »
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 

Host

Torna su