Visualizzazione dei risultati da 1 a 3 su 3

Discussione: JQuery Autocomplete

  1. #1

    JQuery Autocomplete

    Ciao Raga, urge aiuto prima di impazzire.

    Stò cercando di fare funzionare l'autocomplete di jquery (remote + json) con chiamata al db MySQL tramite script php.

    In realtà funziona tutto, il problema che ho è che l'autocomplete non visualizza tutto il contenuto della query, invece se richiamo direttamente la pagina.php vengono fuori tutti i dati che chiedo, per esempio se inserisco dei nomi che iniziano con HI non viene fuori nulla, invece richiamando direttamente la pag.php si.

    Un'altra cosa che ho notato è la lentezza nell'output, c'è forse qualcosa accorgimento che dovrei prendere ?

    Questo è i codice utilizzato:

    <HEAD>
    oltre ai seguenti link js (jquery, core, position, autocomplete, widget )
    ho inserito questa func
    codice:
    <script>
    $(function() {
      $( "#i_search" ).autocomplete({
    	source: "inc/i_search.php",
    	minLength: 2
      });
    });
    </script>
    <BODY>
    codice:
    <label for="i_search">Ragione sociale cliente</label><input name="ragsoc" id="i_search" type="text" />
    Pagina PHP
    Codice PHP:
    <?php
    include('condb.php');
    include(
    'mysql.class.php');

    $q strtoupper(trim($_GET["term"]));
    if (!
    $q) return;

    $items $db->getArrayRow"SELECT 
    id, 
    nome AS label, 
    full_name AS value
    FROM tabella
    WHERE label LIKE '%
    $q%'" ); 


    function 
    array_to_json$array ){

        if( !
    is_array$array ) ){
            return 
    false;
        }

        
    $associative countarray_diffarray_keys($array), array_keysarray_keys$array )) ));
        if( 
    $associative ){

            
    $construct = array();
            foreach( 
    $array as $key => $value ){

                
    // We first copy each key/value pair into a staging array,
                // formatting each key and value properly as we go.

                // Format the key:
                
    if( is_numeric($key) ){
                    
    $key "key_$key";
                }
                
    $key "\"".addslashes($key)."\"";

                
    // Format the value:
                
    if( is_array$value )){
                    
    $value array_to_json$value );
                } else if( !
    is_numeric$value ) || is_string$value ) ){
                    
    $value "\"".addslashes($value)."\"";
                }

                
    // Add to staging array:
                
    $construct[] = "$key$value";
            }

            
    // Then we collapse the staging array into the JSON form:
            
    $result "{ " implode", "$construct ) . " }";

        } else { 
    // If the array is a vector (not associative):

            
    $construct = array();
            foreach( 
    $array as $value ){

                
    // Format the value:
                
    if( is_array$value )){
                    
    $value array_to_json$value );
                } else if( !
    is_numeric$value ) || is_string$value ) ){
                    
    $value "'".addslashes($value)."'";
                }

                
    // Add to staging array:
                
    $construct[] = $value;
            }

            
    // Then we collapse the staging array into the JSON form:
            
    $result "[ " implode", "$construct ) . " ]";
        }

        return 
    $result;
    }

    $result $items;


    foreach (
    $items as $key=>$value) {
        if (
    strpos(strtolower($key), $q) !== false) {
            
    array_push($result, array("id"=>$value"label"=>$key"value" => strip_tags($key)));
        }
        if (
    count($result) > 11)
            break;
    }
    echo 
    array_to_json($result);

    ?>


    many thanks





    .

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, per quanto riguarda la velocità, a meno che tu non abbia continui aggiornamenti potresti mettere i dati in un file js/array Json usarlo in modo statico. Questo verrebbe aggioranto lanciando uno script/url per rigenerarlo

    Io avevo messo la lista località ad esempio in un file js incluso quindi in pagina con dentro semplicemente
    codice:
    localita = [{"nome":"Yacuiba (Bolivia)","urlArticolo":"\/previsioni-meteo\/bolivia\/estero\/yacuiba\/"},{"nome":"Yagoua (.....   ];
    Per convertire da php a json ho visto che fai diversi controlli, a meno che non ti servano per forza basterebbe usare json_encode($tuo_array); di php

    Per i dati che non tornano completi prova a cercare sul web

  3. #3
    grazie m4rko80,
    purtroppo rilevo la lista dal db proprio perchè è dinamico, altrimenti hai ragione tu, non avrebbe senso interrogare un db, ma questo rimane il male minore, il problema che nn riesco proprio a risolvere è la mandanza di dati.

    10ks



    .

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.