Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: autocompletamento

  1. #1

    autocompletamento

    Salve a tutti,
    Sto pensando di creare un programma in locale particolare ma ho bisogno di sapere una cosa:
    Si può realizzare l'autocompletamento in php?
    Mettiamo che ho degli utenti iscritti, mentre scrivo la pagina mi deve suggerire il nome dell'iscritto nel campo nome.
    Ho pensato a Flash oppure a javascript e ad un file txt o xml, sapete darmi una dritta?

    grazie

  2. #2
    io l'avevo fatto con un misto di js (per l'autocompletamento) e di php (ovviamente per prendere i dati che avevo nel db).

    Se trovo dove l'ho messo domani ti posto qualcosa...ora devo scappare.





    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  3. #3

    ll

    ok allora aspetto.

    ti ringrazio moltissimo

  4. #4
    fai una cosa del genere PHP/javascript:


    in PHP crei una variabile javascript con tutti i possibili suggerimenti autocompletabili.

    quindi fai:

    codice:
    <?
    $array_di_campi_estratti_da_database;
    $splitter = "$$$";
    $stringa_javascript = addslashes(implode($splitter,$array_con_tutti_i_valori));
    ?>
    <script language="javascript">
    var valori_campo = "<?=$stringa_javascript?>".split("<?=$splitter?>");
    </script>
    e fin qui abbiamo passato un array da php a javascript.
    Ora dentro il javascript hai tutte le alternative a questo punto ci sono diversi metodi javascript che puoi utilizzare per fare l'autocompletamento... però qua sfondiamo in JS, layer e moduli form.



  5. #5
    eccoci qui


    dunque, come detto devi fare un misto di php e js, comincio con il postarti come ho fatto io, poi vedi te che strada seguire...
    Io ho fatto innanzitutto un campo di testo con accanto un div

    codice:
    <input name="artName" type="text" id="artName" onKeyUp="updateList( this.form, this );" size="15" onKeyPress="javascript:visibile();">
    <div id="mio_layer" style="display:none; "></div>
    ti posto anche il css del layer:
    codice:
    <style>
    #mio_layer{
    	max-height:95px;
    	height:expression(this.scrollHeight > 95? "95px" : "auto");
    	position:absolute;
    	top:220px;
    	overflow:auto;
    	width:100px;
    	background-color:#F4F4F4;
    }
    </style>


    poi questo è l js che devi mettere nell'head del tuo html:
    io ti ho copiato il mio pari pari, naturalmente poi dovrai cambiare i nomi dei campi e del form con quelli che hai tu (ricordati di dare ad ogni elemento un id, perché come vedi ne js accedo agli elementi tramite il getElementById)
    codice:
    <script type="text/javascript" language="JavaScript">
    function updateList( __hForm, __hArtName ){
    	var itemFound    = 0;
    	var artToSearch  = __hArtName.value;
    	var artListFound = "";
    
    	for ( var i=0; i<artList.length; i++ ){
    		if ( artToSearch == artList[i].substring( 0, artToSearch.length)  )  {
    			artListFound += "<a href=\"#\" onClick=\"selcopy('" + artList[i] + "'); setTimeOut(sendForm(), 2500);\">" + artList[i] + "</a>
    ";
    			itemFound++;
    		}
    	}
    
        if ( itemFound )
    		artListFound = artListFound;
        else
        	artListFound = "Nessun articolo trovato.";
    document.getElementById("mio_layer").innerHTML = artListFound; 
    }
    
    function selcopy(valore){
    	document.getElementById("artName").value = valore;
    }
    
    function visibile(){
    	document.getElementById("mio_layer").style.display="";
    }
    
    function sendForm(){
    	document.getElementById("mio_layer").style.display="none";
    	document.getElementById("form").submit();
    }
    </script>


    infine c'è la parte in cui dobbiao creare l'array js da php che passeremo poi in pasto alle funzioni che sono sopra:

    codice:
    $sql_1="qui la tua query";
    $res_1 = @mysql_query($sql_1);
    $row_1 = @mysql_fetch_assoc($res_1);
    	
    echo "<script>var artList = new Array("; 
    while($row = @mysql_fetch_assoc($res_1)){ 
      echo "'".$row["nomecolonna"]."',"; 
    } 
    echo "''";
    echo ");</script>";

    poi io ho fatto in modo che selezionando un elemento dalla lista che mi si presentava questo valore andasse direttamente nella mia casella di testo e che il form venisse processato...questo se vuoi lo puoi tranquillamente omettere.



    Penso di averti detto tutto! Buon lavoro!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  6. #6
    i javascript che nel codice vedi separati, tu ovviamente scrivili tutti attaccati...il forum li spezza
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  7. #7
    ora provo...

    grazie davvero

  8. #8

    oo

    ma questo script funziona anche in remoto? cioè collegandosi a un database esterno?

  9. #9
    cioè in rete?

  10. #10
    PHP e javascript sono due cose distinte.

    PHP -> Serverside (gira sui server)
    Javascript -> clientside (gira sul browser del navigatore).

    In tutto il codice c'è una sola riga di PHP dove le variabili vengono passate in Js per effettuare l'effetto grafico dell'autocompletamento (funzione clientside).


    Come ottieni le variabili PHP, se dal tuo server o da qualche altro server... dipende da come hai programmato PHP, allo script javascript è indifferente che le variabili arrivino da questo piuttosto che quel server.

    Insomma non centra niente questo script, centra come programmi la parte PHP.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.