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

Discussione: Select autocomplete

  1. #1

    Select autocomplete

    Vorrei digitare un testo e selezionare la scelta, dopo che il sistema l'ha già scremata per me.

    Ho trovato questo codice che fà esattamente quello che vorrei fare:

    codice:
    <formaction="/tutorial/action.html">
      <select name="color" autocomplete="on"> 
        <option value="">-- Select Color --</option> 
        <option value="red">Red</option> 
        <option value="blue">Blue</option> 
        <option value="green">Green</option> 
      </select><br/>
    
      <buttontype="submit">Submit</button>
    </form>
    Il problema è che le option che dovrei inserire sono al momento circa 17000.
    Ovviamente ci mette un minuto a caricare la pagina, e ciò non è accettabile.
    Qualcuno può darmi una dritta su "con che cosa posso risolvere il problema?"

    Ovviamente andrebbe bene anche un campo di testo ma non sò da dove cominciare e neppure con che linguaggio!
    Prima o poi anch'io vi insegnerò qualcosa

  2. #2
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,730
    puoi fare un'interrogazione ad un database sfruttando ajax.
    e puoi impostare un numero minimo di caratteri prima di invocare il database (per non avere troppi risultati)

  3. #3
    Non sapendo che pesci prendere mi sono messo a cercare di capire qualcosa di questo ajax (sono a zero) e da ieri che cerco e leggo mi sono imbattuto in questo articolo:

    https://www.giovannitomasicchio.it/a...ax-in-pratica/

    mi è sembrato un buon inizio visto che parla di utilizzare degli script senza inserire librerie ajax (avverto, potrei scrivere grossi sfondoni). Ho provato a far funzionare queste istruzioni, pensando che, modificandole a dovere (anzi, cambiando del tutto le istruzioni del file), potesse fare al caso mio.

    Ho così inserito le funzioni createRequestObject, sndReq, handleResponse nell'head della mia pagina, ho messo il link

    codice:
    <a href="javascript:sndReq('foo')">[foo]</a>
    
    nel body della pagina, creato il file rpc.php che riporto per semplicità
    
    <?php
    switch($_REQUEST['action']) {
    case 'foo':
    /* do something */
    echo "foo|foo done";
    break;
    }
    ?>
    ma non ho capito il da farsi con il tag

    <pre class="brush: xml">

    che ho inserito nel body successivamente al link.

    Premetto che non so cosa dovesse fare (immagino la stampa aggiuntiva della scritta "done") ma non succede niente.
    Prima o poi anch'io vi insegnerò qualcosa

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,730
    più tardi ti posto un esempio pratico

  5. #5
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,730
    scusa l'attesa... dovrei riuscire domani pomeriggio

  6. #6
    La prima chiamata l'ho sdoganata, scopiazzando qua e là ma di fare ciò che volevo per ora nemmeno lontano.
    La soluzione migliore che ho trovato è:

    <input type="text" id="campo" name="campo">
    <input type="button" value="ESEGUI" id="bottone">
    <span id="risposta"></span>
    </body>
    <script>
    function Show(id) { if (document.getElementById) { var el=document.getElementById(id); el.style.display=""; } }
    function Hide(id) { if (document.getElementById) { var el=document.getElementById(id); el.style.display="none"; } }
    let bottone = document.querySelector("#bottone");
    bottone.addEventListener("click", esegui, true);
    function esegui() {
    let nome = document.querySelector("#campo").value;
    Hide('campo');
    Hide('bottone');
    if (campo == '') { return; }
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
    document.querySelector("#risposta").innerHTML = this.responseText;
    }
    };
    xmlhttp.open("GET", "https://www.xxxxxxxx.xxx/risposta.php?campo=" + nome, true);
    xmlhttp.send();
    }
    </script>
    </html>

    e come file risposta

    <?php
    //header("Access-Control-Allow-Origin: *");


    if (isset($_REQUEST["nome"]))
    {
    $nome = $_REQUEST["nome"];
    }
    echo "<select id=\"select\">"."\n";
    echo " <option>aaa</option>"."\n";
    echo " <option>bbb</option>"."\n";
    echo "</select>"."\n";
    echo "<input type=\"button\" value=\"TORNA\" id=\"torna\" onclick=\"Show('campo');Show('bottone');Hide('sele ct');Hide('torna');\">"."\n";
    ?>

    Non ho ancora capito se può funzionare

    Comunque si, dammi indicazioni più orientate, please
    Prima o poi anch'io vi insegnerò qualcosa

  7. #7
    Nel riportarlo qua sopra mi sono dimenticato di correggere il file risposta.php e l'ho riportato male, quello corretto è

    <?php
    //header("Access-Control-Allow-Origin: *");


    if (isset($_REQUEST["campo"]))
    {
    $campo = $_REQUEST["campo"];
    }
    echo "<select id=\"select\">"."\n";
    echo " <option>aaa</option>"."\n";
    echo " <option>bbb</option>"."\n";
    echo "</select>"."\n";
    echo "<input type=\"button\" value=\"TORNA\" id=\"torna\" onclick=\"Show('campo');Show('bottone');Hide('sele ct');Hide('torna');\">"."\n";
    ?>

    Però mi chiedo:

    se io mi collego ad un database inserendo


    $db_host = "localhost";
    $db_user = "nome user";
    $db_password = "password di accesso database";
    $db_database = "nome nostro database";


    $connessione=mysql_connect($db_host,$db_user,$db_p assword);
    mysql_select_db($db_database,$connessione);

    (inutile scrivere che nella mia select voglio restituire dati che stanno in un database)

    La chiamata va a farsi benedire
    Prima o poi anch'io vi insegnerò qualcosa

  8. #8
    Buongiorno, non riesco proprio a caricare i dati da un Database nella pagina risposta.php

    Hai idea del perché?, devo chiederlo nella sezione php?
    Prima o poi anch'io vi insegnerò qualcosa

  9. #9
    Buongiorno, non riesco proprio a caricare i dati da un Database nella pagina risposta.php

    Hai idea del perché?, devo chiederlo nella sezione php?
    Prima o poi anch'io vi insegnerò qualcosa

  10. #10
    Devo nuovamente chiedere aiuto perchè sono fermo.

    Dopo essermi studiato vari articoli che parlano dell'argomento, sono riuscito a scrivere un codice che richiama il file risposta.php e che fà quello che vorrei non riuscendo però a prendere i dati da un database e riportarli nella pagina dalla quale li richiamo.

    il mio file risposta.php è

    //header("Access-Control-Allow-Origin: *");
    include '../config.php';
    if (isset($_REQUEST["campo"])) {
    $stringa_da_ricercare = $_REQUEST["campo"];
    echo 'stringa_da_ricercare: '.$stringa_da_ricercare.'<br>';
    }
    $connessione = new mysqli($db_host, $db_user, $db_pass, $db_name);
    if ($connessione === false) {
    die ("errore di connessione:".$connessione->connect_error);
    }


    $query="SELECT * FROM cd_clienti WHERE id<10";
    $result=dbquery($query);
    if (dbrows($result)) {
    while($row=dbarray($result)) {
    echo " ".$row['cognome']." ".$row['nome']."<br>"."\n";
    }
    }


    $connessione->close();

    Come tolgo il codice in rosso, scrive esattamente il valore da restituire, come lo metto non fà niente.

    Non sò se è il caso di spostare la discussione su php.
    Prima o poi anch'io vi insegnerò qualcosa

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.