Ciao ragazzi, abbiate pietà sono neofita.
jQuery Italia - Forum » Non solo jQuery
Da dato db in casella testo con click()
(10 articoli)-
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?GraziePubblicato 7 months fa #
-
Ciao MR e benvenuto.
Usa una chiamata ajax passando l'id del dato da recuperare e riempi il form ;-)
Pubblicato 7 months fa # -
Ciao 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à.MAXPubblicato 7 months fa # -
Ciao MAX.
Ho provveduto a farti un piccolo esempio che trovi qui http://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.
Pubblicato 6 months fa # -
Ciao... (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['ID_Destinazione'] ));$b->appendChild( $ID_Destinazione );$DEST_PRED_Ragione_sociale = $doc->createElement( "DEST_PRED_Ragione_sociale" );$DEST_PRED_Ragione_sociale->appendChild($doc->createTextNode( $destinazione['DEST_PRED_Ragione_sociale'] ));$b->appendChild( $DEST_PRED_Ragione_sociale );$DEST_PRED_Indirizzo = $doc->createElement( "DEST_PRED_Indirizzo" );$DEST_PRED_Indirizzo->appendChild($doc->createTextNode( $destinazione['DEST_PRED_Indirizzo'] ));$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 :-))Pubblicato 6 months fa # -
PS: potresti postarmi anche il codice della pagina che contiene i dati che vorrei studiarmela? Grazie ancora X!
Pubblicato 6 months fa # -
Il 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['nome'], 'cognome' => $row['cognome'], 'indirizzo' => $row['indirizzo']);
}
}
echo json_encode($arraydata);Pubblicato 6 months fa # -
Ciao 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 ;-)MAXPubblicato 6 months fa # -
FUNZIAAAAA!!!!!!
Grazie Davide.Pubblicato 6 months fa # -
Felice di esserti stato d'aiuto :-D
Pubblicato 6 months fa #
Replica
Devi aver fatto il login per poter pubblicare articoli.