Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    34

    Autocompletamento form all'inserimento di un dato in una textbox

    Buongiorno a tutti, mi trovo di fronte a una cosa che ho dato per possibile, senza però averla mai fatta quindi mi servirebbe una mano, premetto che non sono sicuro di essere nella sezione esatta, chiedo ai modanatori di spostarla nella sezione che ritengono più corretta comunque vi spiego.
    Ho una pagina PHP con un form html parecchio esteso che si divide invpiù sezioni, dati cliente, dati impianto ecc.
    Io vorrei fare in modo che la sezione dati cliente, inserendo in una prima textbox codice fiscale o partita ivadi un cliente già presente nel mio db si possa completare completamente o parzialmente in base alle informazioni che io già dispongo per quel cliente (nome,cognome, ragione sociale, email, cel ecc).
    Sò come far apparire nella textbox i risultati giò presenti nel mio db, saprei anche come prcuparmi tramite una query SQL le info che mi interessano, quello che non so è come tornare al form e farlo apparire con i dati del cliente scelto gia compilati.
    L'unica idea che mi è venuta è utilizzare il vettore session metterci i dati del cliente che ho scelto tramite cod fis o piva e ricaricare la pagina con il form di modo che se session è pieno faccio già apparire i dati.
    Può funzionare consigli?
    Grazie in anticipo

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,691
    Ciao, la parola magica è AJAX (quindi JavaScript).

    Al campo "codice fiscale o partita iva" del tuo form applichi un gestore per l'evento change, dove andrai a fare la tua chiamata AJAX per recuperare i dati che ti servono e aggiornare al volo i relativi campi interessati, senza che la pagina stessa sia ricaricata.

    L'argomento è ampiamente discusso sia sul web sia su questo forum. Fai magari qualche ricerca in questo senso per iniziare a farti un'idea su come impostare la cosa.

    Per questo tipo di applicazione consiglio vivamente di utilizzare jQuery che dispone di metodi semplificati per poter effettuare chiamate AJAX e aggiornare gli elementi sulla pagina; vedi ad esempio il metodi load().
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    34
    In effetti già uso AJAX nelle textbox per recuperare i dati dal db, ho una funzione del genere "<script type='text/javascript'>new Ajax.Autocompleter('tipo','suggerimenti_tipo', 'cerca.php?par=tipo', {minChars: 2});" che uso sia per leggere i dati dal db sia per visualizzare sotto alla textbox i suggerimenti ovvero i dati simili ai caratteri che inserisco nella textbox.
    Non sapevo si potesse usare anche per riportare i dati nel form o meglio non so come perchè in realtà la utilizzo ma non so bene come funziona, l'ho implementata con una guida ahaha ti ringrazio mi documenterò

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    34
    Allora è tutta la mattina che guardo in rete, e se non altro ora so cosa fa realmente AJAX in particolare la funzione Autocompleter però non sono riuscito a capire come invece posso fare a farmi "ritornare" dalla pagina php che richiamo, più di un tipo di valore ovvero piu valori che vanno assegnati nella pagina html iniziale ad ogni ID del form di modo da ottenere il risultato di cui necessito.
    Suppongo la funzione load che mi hai indicato faccia questo

  5. #5
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,691
    Chiariamo, AJAX (Asyncronous JavaScript And XML) è una tecnica di scambio dati tra client e server senza che sia rigenerata l'intera pagina. Lo scambio di dati avviene in modo asincrono, cioè tramite la gestione di eventi (in JavaScript) che sono determinati al ricevimento di una risposta dal server. Fondamentalmente i dati che arrivano dal server sono di tipo testuale; in particolare viene usato il metalinguaggio XML, ma tramite JavaScript (ed eventuali librerie come jQuery) è possibile "manipolare" questi dati per ottenerne tipi diversi (ad esempio JSON).

    Il tuo Autocompleter sfrutta questa tecnica per comunicare al volo col server; non devi però limitare AJAX solo nell'ambito di questa applicazione (o plugin o ciò che è). Da quel che ho capito, si tratta di un metodo della libreria scriptaculous, giusto?
    Non ho idea se puoi usare lo stesso metodo per aggiornare il resto del form come serve a te (dovrei andarmi a leggere l'eventuale documentazione) ma so per certo che con il metodo load() o get() (o altri metodi simili per effettuare chiamate AJAX) di jQuery è possibile interrogare il server, ottenere una qualche risposta di un qualche tipo (vedi magari JSON) quindi utilizzare quei dati per aggiornare al volo gli elementi della pagina.

    Ora, alla cieca è impossibile darti maggiore aiuto; bisognerebbe capire quale sia la situazione reale, magari sarebbe utile vedere la pagina in questione, se possibile o postare un po' di codice per poter capire che dati ti serve manipolare e cosa devi ottenere alla fine.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    34
    AGGIORNAMENTO: Sono riuscito ad implementare Autocompleter di script.aculos ora quando vado a inserire ad esempio codice fiscale o partita iva mi suggerisce in appositi div quelli già presenti nel mio db in base ai caratteri che scrivo PERFETTO!
    Ora però volevo appunto fare in modo che una volta selezionato dal div il codice fiscale di un utente ad esempio, nel resto delle textbox del form mi finiscano tutti i dati che ho nel mio db riferiti a questo codice fiscale come posso fare? soprattutto ora ho abbastanza chiaro il funzionamento di AJAX ma posso far tornare alla pagina iniziale cioè al form più valori in più "ID" (textbox) differenti?

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,691
    Ora però volevo appunto fare in modo che una volta selezionato dal div il codice fiscale di un utente ad esempio, nel resto delle textbox del form mi finiscano tutti i dati che ho nel mio db riferiti a questo codice fiscale come posso fare? soprattutto ora ho abbastanza chiaro il funzionamento di AJAX ma posso far tornare alla pagina iniziale cioè al form più valori in più "ID" (textbox) differenti?
    Sì, è possibile ma vanno effettuati diversi step.

    - Bisogna capire come intercettare il fatto che tu abbia selezionato quel dato. Magari basterebbe un semplice onclick, ma bisogna vedere come andare ad impostarlo in base alla tua situazione reale. Posta eventualmente il link alla pagina e/o il codice HTML/JavaScript relativo a questa parte.

    - Effettui quindi una richiesta AJAX passando, alla pagina server, i dati interessati (codice fiscale o quel che è) in modo che siano elaborati e che la pagina restituisca una qualche risposta. Ovviamente la chiamata AJAX è possibile impostarla in vari modi, usando puro JavaScript, usando jQuery, usando forse Scriptaculous (se ti consente di fare "semplici" chiamate AJAX) o qualsiasi altra libreria che ti permette di farlo. Chiaramente bisogna valutare i pro e i contro in base alla tua situazione reale, per capire cosa sia meglio usare. Non ho idea se con Scriptaculous si possa fare e come, ma se usi jQuery so per certo che l'impostazione dello script risulta abbastanza semplice anche per un non esperto.

    - La tua pagina server dovrà quindi fornire una qualche risposta nel formato che ritieni più opportuno per trasmettere i dati con cui aggiornare al volo il form. Tieni presente che di base si tratta di una stringa testuale (ma questo l'ho già accennato sopra), per cui ciò che puoi fare è impostare tale stringa usando un formato convenzionale: vedi XML o JSON o una stringa tipo QueryString con coppie chiave-valore o addirittura l'intero blocco di HTML che vorrai aggiornare o qualsiasi altro formato esistente o che ti vai ad inventare. Chiaramente bisogna valutare l'uso di un particolare formato in base al contesto e alla situazione reale.

    - A questo punto, la risposta ricevuta da server a client dovrai manipolarla (quindi effettuare un parsing) via JavaScript (jQuery o quel che è) per ottenerne i dati che vuoi andare ad inserire (al volo) sulla pagina.

    Tutto questo a grandi linee. Valuta e sviluppa eventualmente i vari passaggi; se poi ti serve maggiore aiuto, per ciascuno dei passaggi è necessario che tu fornisca gli opportuni dettagli, eventuali codici della tua situazione attuale e/o eventuale link della pagina in questione, così che ti si possa eventualmente fornire delle risposte mirate.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    34
    questa è la pagina principale:
    codice:
    					<td align="center" width="50%">COD.FISC.: <input class="input70" type="text" name="codfis" id="codfis" maxlength="16"><div class='boxsuggerimenti' id='suggerimenti_codfis'></div>    				<script type='text/javascript'>new Ajax.Autocompleter('codfis','suggerimenti_codfis', 'search.php?par=cf', {minChars: 2});</script>
    					</td>
    questa è la pagina search.php:
    codice:
    	if ($RESULT=="cf")	{ if(isset($_POST['codfis'])){$C=$_POST['codfis'];}else{$C="";}
    	  $query="SELECT `codfis` FROM `CLIENTI` WHERE `codfis` LIKE '%$C%'";
      
    	  $result = mysql_query ($query, $connessione) or die(mysql_error());
    	  $ArrayRisultati=Array();
    	  while ($risultati = mysql_fetch_array ($result)){
        	array_push($ArrayRisultati,$risultati) ;
    		}
    	  echo "<ul>";
    	  for($a=0;$a<count($ArrayRisultati);$a++){
    		echo "<li>".$ArrayRisultati[$a]['codfis']."</li>";
    		}
    	  echo "</ul>";
    	  }

  9. #9
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,691
    Mi spiace ma personalmente mi viene difficile aiutarti se non vedo la pagina in azione o se non riesco a riprodurre in qualche modo la situazione; con solo quei codici non riesco a riprodurla.

    Ad ogni modo, come ti ho indicato, puoi sviluppare uno per uno i vari punti. Per prima cosa va intercettato l'evento che viene scaturito al click sulla voce suggerita dall'autocomplete (o qualunque evento che si verifichi quando viene effettuata una scelta); esattamente ciò che hai indicato qui: "una volta selezionato dal div il codice fiscale"

    A tal proposito, qual è il div di cui parli?
    Qual è l'elemento che contiene quel dato?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    34
    contenuto chiaramente nella prima pagina
    codice:
    <div class='boxsuggerimenti' id='suggerimenti_codfis'></div>

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.