Autore Topic: visualizzare istantaneamente  (Letto 378 volte)

Offline Ago_

  • Abituale
  • ****
  • Post: 823
  • Sesso: Maschio
    • Mostra profilo
visualizzare istantaneamente
« il: 27 Feb 2017, 17:57:12 »
ho una tabella con 4 campi (cliente, info1, info2, info3)
il form ha 4 elementi, il primo con autocompletamento (cliente), i restanti tre elementi rilevano i valori delle info con questo custom code

Codice: [Seleziona]
<?php
$db 
= \JFactory::getDBO();
$query "
SELECT `nome`
FROM `aaa_tabella`
WHERE `codice` = '
{$form->data['cliente']}' ;
"
;
$db->setQuery($query);
$form->data['nomecliente'] = $db->loadResult();
?>


il salvataggio del form è ok, io vorrei far visualizzare instantaneamente nei 3 textbox il valore salvato. grazie

allego screen di esempio

Offline Alex21

  • Appassionato
  • ***
  • Post: 482
    • Mostra profilo
    • servizi web
Re:visualizzare istantaneamente
« Risposta #1 il: 01 Mar 2017, 13:54:54 »
Visualizzare istantaneamente ... Io capisco visualizzare i valori provenienti dal db nella pagina web che viene inviata.
Se è giusto così allora si utilizza l' attributo value del tag html <input , in questo modo ad esempio:
Codice: [Seleziona]
<input type="text" name="helpsearch" size="40"  value="<?php echo $this->escape($this->help_search);?>" class="inputbox" />Se prima analizzi l' input e poi invii i risultati ti serve un richiamo alla stessa pagina (tipo PHP_SELF) oppure una richiesta ajax che è molto più veloce in questo caso.
Utilizzi gli input dal form per le query del db, se non erro. In questo caso bisognerebbe sanificarle per non introdurre vulnerabilità. I metodo Joomla che conosco è
Codice: [Seleziona]
$jinput = JFactory::getApplication()->input;però la pagina di tutor è stata recentemente eliminata dalla Documentazione  Joomla. Quindi non so.
Ciao!

Offline Ago_

  • Abituale
  • ****
  • Post: 823
  • Sesso: Maschio
    • Mostra profilo
Re:visualizzare istantaneamente
« Risposta #2 il: 01 Mar 2017, 15:21:27 »
questo è il codice nella tab in setup del textbox "nomecliente"

Codice: [Seleziona]
<?php
$db 
= \JFactory::getDBO();
$query "
SELECT `nome`
FROM `aaa_tabella`
WHERE `codice` = '
{$form->data['cliente']}' ;
"
;
$db->setQuery($query);
$form->data['nomecliente'] = $db->loadResult();
?>

purtroppo della tua corposa spiegazione ho capito ben poco, forse perche mi sono spiegato male io o non sono arrivato a capire la tua spiegazione (molto probabile)

il textbox codice è un completamento automatico da db
il codice sopra richiama nel textbox "nomecliente" il relativo nome del codice scelto, semplicissimo. appena invio il form si salva correttamente, ma il nome non viene visualizzato immediatamente nel textbox appena scelgo il codice dal completamento, io vorrei proprio questo...farlo visualizzare immediatamente per un controllo visivo nel caso qualcuno sbaglia a digitare il codice.
Provo a spararla lì, magari serve un'ultima stringa nel codice che dice di stampare il nome ricavato nel texbox
« Ultima modifica: 01 Mar 2017, 15:26:21 da Ago_ »

Offline Ago_

  • Abituale
  • ****
  • Post: 823
  • Sesso: Maschio
    • Mostra profilo
Re:visualizzare istantaneamente
« Risposta #3 il: 01 Mar 2017, 16:38:29 »
sto cercando di ragionare, anche se non sono un programmatore

Mettendo il codice che richiama gli altri dati del record in ogni singolo textbox in "On Submit" tutto questo avviene all'invio del form quindi durante il salvataggio e la scrittura sul database dei dati inseriti. Non può MAI farmi vedere immediatamanete durante la compilazione del form i campi richiamati (perchè ancora non sono stati chiamati dal db di lettura)....è una questione di cronologia delle azioni, io sto cercando di fare fare Y dopo X ma ancora X non l'ha eseguito (come mangiare la pasta senza cucinarla, impossibile).


Offline Alex21

  • Appassionato
  • ***
  • Post: 482
    • Mostra profilo
    • servizi web
Re:visualizzare istantaneamente
« Risposta #4 il: 01 Mar 2017, 17:39:21 »
sto cercando di ragionare, anche se non sono un programmatore

Mettendo il codice che richiama gli altri dati del record in ogni singolo textbox in "On Submit" tutto questo avviene all'invio del form quindi durante il salvataggio e la scrittura sul database dei dati inseriti. Non può MAI farmi vedere immediatamanete durante la compilazione del form i campi richiamati (perchè ancora non sono stati chiamati dal db di lettura)....è una questione di cronologia delle azioni, io sto cercando di fare fare Y dopo X ma ancora X non l'ha eseguito (come mangiare la pasta senza cucinarla, impossibile).
Un pochino per volta capisco pure io, spiegarsi non è sempre facile.
La sequenza è questa allora: Invio della pagina, Compilazione del form, Ritorno  al  server  a seguito dell'evento submit da parte del visitatore, Elaborazione degli input con query del database, (il tuo frammento di codice), Successivo invio della pagina con il form e i campi valorizzati.
Quello che vuoi è riempire i campi del form non appena il visitatore ne ha riempito uno, quello principale che ti serve da chiave per leggere il database.
Esistono appunto le richieste ajax per fare questo. Quando il campo principale del form è compilato dal visitatore un evento avvia la richiesta ajax che esegue l'interrogazione del database e riempie gli altri campi del form. NON viene inviata una pagina intera, soltanto i valori che devono avere gli altri campi del form.
Ci sono? E' così?
Ciao!




Offline Ago_

  • Abituale
  • ****
  • Post: 823
  • Sesso: Maschio
    • Mostra profilo
Re:visualizzare istantaneamente
« Risposta #5 il: 01 Mar 2017, 17:52:05 »
esatto alex, pensavo proprio a questo...spostare il codice che ho postato dall'area submit ad una nuova area eventi collegata al primo (campo con completamento)

lì sarei un poco in difficoltà per strutturare il nuovo l'evento (azzardando che il codice in mio possesso rimanga invariato)...ma posso fare qualche prova

Offline Alex21

  • Appassionato
  • ***
  • Post: 482
    • Mostra profilo
    • servizi web
Re:visualizzare istantaneamente
« Risposta #6 il: 01 Mar 2017, 18:20:32 »
esatto alex, pensavo proprio a questo...spostare il codice che ho postato dall'area submit ad una nuova area eventi collegata al primo (campo con completamento)

Per una richiesta Ajax hai bisogno di: Una parte javascript che intercetta la compilazione del campo del form che ti interessa, una funzione che reagisce alla modifica del campo,  onchange  per esempio. Il javascript deve poi  eseguire l'invio al server del  valore del campo medesimo. Ancora, javascript deve gestire la risposta del server dopo l'interrogazione del database.
Poi ti serve una parte in php per recuperare l'invio fatto da javascript,  interrogare il database - il tuo codice - e produrre un invio che javascript possa leggere. Il nuovo php può essere in uno script separato oppure collocato nello script principale ma in questo caso bisogna che sia elaborabile saparatamente, con una classe distinta tutta sua per esempio.
Infine il fattore sicurezza. La richiesta ajax deve essere eseguita solo se richiamata dalla pagina giusta, non sempre, altrimenti troverai un sacco di chiamate di spider e, tenuto conto che viene interrogato il db, la cosa ha i suoi rischi. Per questo puoi usare una chiave che viene impostata da javascript e inviata nella richiesta ajax e che deve trovare una corrispondenza nello script principale.
Concettualmente è semplice, come vedi, praticamente ci vuole un po' di esercizio preparatorio se non ne hai mai scritta una.
Ciao!

 

Torna su