Da dato db in casella testo con click()
Home › Forum › Non solo jQuery
Per richieste di aiuto POSTATE QUI solo se non riguardano jQuery.
Taggato: click() campi testo
- Questo topic ha 9 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 12 anni, 6 mesi fa da jqueryitalia.
- AutorePost
- 19 Ottobre 2011 alle 10:21 #1636MRPartecipante
Ciao ragazzi, abbiate pietà sono neofita.
Ho una pagina php con dei dati estratti da db in un loop (foreach) , contenuti in un div, ed a fianco un form con dei campi.Vorrei che cliccando su una delle voci del db, automaticamente si compilassero i campi del form.Che strada mi conviene seguire?Grazie20 Ottobre 2011 alle 07:34 #1898jqueryitaliaAmministratoreCiao MR e benvenuto.
Usa una chiamata ajax passando l’id del dato da recuperare e riempi il form 😉
20 Ottobre 2011 alle 07:43 #1899MRPartecipanteCiao e grazie; in realtà è quello che stavo provando. Ho spostato il loop foreach in una pagina php che filtra tutti gli indirizzi del cliente in base all’id e restituisce la lista di div.
Nella pagina principale ho inserito la chiamata ajax:
$.ajax({ type: "GET", url: "ajax_dest.php", data: "ID_cliente"+???dovrei metterci l'ID ricavato da php??, success: function(response){ $("#out").html(response); } });
e funziona, ma lo script di prova che, cliccando sull’idirizzo dovrebbe fare qualcosa non va. Come se i div ottenuti dalla pagina di filtraggio non fossero..utili:
$("#indirizzo").click(function () { alert("test"); });
Grazie in anticipoa chi mi aiuterà.
MAX23 Ottobre 2011 alle 19:22 #1900jqueryitaliaAmministratoreCiao MAX.
Ho provveduto a farti un piccolo esempio che trovi qui https://www.jqueryitalia.org/tutorial/ajaxrequest.html
Provo in due parole a spiegarti come funziona.
La pagina principale contiene l’elenco dei nomi sulla destra ed un form sulla sinistra.
Alle ancore che contengono il testo edita ho dato classe = ‘action’ ed id = ‘elemento-x’ dove x deve essere un identificativo univoco che identifica il dato da estararre nel DB (i questo caso avremo 1, 2 e 3) che puoi recuperare ed associare attraverso la prima chiamata php che fai per estrarre i dati.Ho poi associato alla classe ‘action’ un’azione (che viene eseguita al click) che recupera l’id dell’elemento cliccato ( var elementID = jq(this).attr(‘id’); ), eseguo lo split delo stesso ( var myPieces = elementID.split(‘-‘); ) ed estrare l’id necessario ( var myID = myPieces[1]; ). Eseguo poi la chiamata ajax, indicando che il dato di ritorno deve essere in formato JSON (praticamente un array).
La chiamata ajax viene inidrizzata ad un file php che, dato l’ID, estrae i valori e li inserisce in un array (nel nostro caso ad esempio: $arraydata = array(‘nome’ => ‘Marco’, ‘cognome’ => ‘Rossi’, ‘indirizzo’ => ‘via Monte Calvo, 1’); ). Attraverso il comando php json_encode trasformo l’array in formato JSON e lo rimando indietro (echo json_encode($arraydata);).
A questo punto associo ai campi del form il valore estratto ( nel caso del nome, jq(‘#nome’).val(data.nome); ).Puoi ricopiare tranquillamente il codice della pagina di esempio e riadattarlo per il tuo caso.
24 Ottobre 2011 alle 06:51 #1901MRPartecipanteCiao… (ma il tuo nome dov’è?), ti ringrazio veramente tantissimo per la risposta e l’esempio.
Nel frattempo avevo studiato ed ero riuscito a risolvere il problema, e sono contento che (seppur con differenze dovute al fatto che la lista di partenza è dinamica) , ho proprio percorso la stessa strada! Ho usato il get id per recuperare e passare l’id dell’indirizzo, ed una pagina php che filtra il db.
Avevo trovato un esempio che ho adattato per elaborare la risposta del db:$doc = new DOMDocument(); $doc->formatOutput = true; $r = $doc->createElement( "destinazioni" ); $doc->appendChild( $r ); foreach( $destinazioni as $destinazione ){ $b = $doc->createElement( "destinazione" ); $ID_Destinazione = $doc->createElement( "ID_Destinazione" ); $ID_Destinazione->appendChild( $doc->createTextNode( $destinazione ) ); $b->appendChild( $ID_Destinazione ); $DEST_PRED_Ragione_sociale = $doc->createElement( "DEST_PRED_Ragione_sociale" ); $DEST_PRED_Ragione_sociale->appendChild( $doc->createTextNode( $destinazione ) ); $b->appendChild( $DEST_PRED_Ragione_sociale ); $DEST_PRED_Indirizzo = $doc->createElement( "DEST_PRED_Indirizzo" ); $DEST_PRED_Indirizzo->appendChild( $doc->createTextNode( $destinazione ) ); $b->appendChild( $DEST_PRED_Indirizzo ); [etc..per tutti i valori] $r->appendChild( $b ); } } echo $doc->saveXML();
e nella pagina di partenza:
$(".destinazione").click(function () { $.ajax({ type: "GET", url: "ajax_dest.php", data: $(this).attr("id"), success: xmlParser }); }); function xmlParser(xml) { $(xml).find("destinazione").each(function () { var ID_Destinazione = $(this).find("ID_Destinazione").text(); var DEST_PRED_Ragione_sociale = $(this).find("DEST_PRED_Ragione_sociale").text(); $("#DEST_PRED_Ragione_sociale").val(DEST_PRED_Ragione_sociale); $("#DEST_PRED_Indirizzo").val(DEST_PRED_Indirizzo); }); }
Poi popolo i campi come dicevi tu. La soluzione è un po’ accroccata ma funziona e mi pare lo stesso principio. La tua però è per me ottimo motivo di studio di Json, che mi pare più pratico…
Grazie ancora, sono sicuro che mi risentirai 🙂 )
24 Ottobre 2011 alle 07:04 #1902MRPartecipantePS: potresti postarmi anche il codice della pagina che contiene i dati che vorrei studiarmela? Grazie ancora X!
24 Ottobre 2011 alle 07:37 #1903jqueryitaliaAmministratoreIl mio nome è Davide.
La soluzione con l’XML mi sembra un pò troppo articolata (anche perchè hai la necessita di utilizzare comunque un parser) rispetto a quella da me suggerita. Comunque se funziona… 😉
Il codice php utilizzato nel file richiamato dalla funzione ajax è il seguente:
$dbhost = TUO_HOST; $dbuser = TUO_USERNAME; $dbpass = TUA_PASSWORD; $dbname = TUO_NOME_DB; $id = $_POST["id"]; $arraydata = array(); if ( $dblink = mysql_connect($dbhost, $dbuser, $dbpass) ) { if ( mysql_select_db($dbname, $dblink) ) { $query = "SELECT * FROM TUA_TABELLA WHERE TUO_ID =".$id." LIMIT 0, 1"; $result = mysql_query($query); $row = mysql_fetch_array($result, MYSQL_ASSOC); $arraydata = array('nome' => $row, 'cognome' => $row, 'indirizzo' => $row); } } echo json_encode($arraydata);
24 Ottobre 2011 alle 07:45 #1904MRPartecipanteCiao Davide!
Hai ragione la tua mi pare molto più snella ed elegante, ma la mia sorgente dati db non è su mysql, ma Filemaker (è una situazione particolare). L’output è un array comunque; ora provo a usare la tua soluzione sopra da $array in poi e ti fò sapere.Purtroppo ho tutt’altre competenze e vado a tentativi 😉MAX24 Ottobre 2011 alle 10:24 #1905MRPartecipanteFUNZIAAAAA!!!!!!
Grazie Davide.24 Ottobre 2011 alle 11:53 #1906jqueryitaliaAmministratoreFelice di esserti stato d’aiuto 😀
- AutorePost
- Devi essere connesso per rispondere a questo topic.