Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    100

    ricerca on the fly in javascript

    mi spiego meglio, ho una pagina con una tabella contenente certe righe con delle informazioni / descrizioni, volevo kiedere, c'è uno script ke se scrivo sul campo di testo una parola, automaticamente le righe delle tabelle mi vengono filtrate dandomi se c'è solo la riga corrispondente alla parola key ke ho scritto nel campo di testo?

    esempio

    ho una tabella con queste informazioni

    nome | cognome | altro
    marco | cognome1 | altro
    giovanni | cognome2 | altro
    teresa | cognome3 | altro
    paolo | cognome4 | altro

    e sopra ho il campo di testo. Voglio ad esempio cercare tutti quelli che si kiamano paolo. Scrivo la p nel motore di ricerca e man mano che continuo a scrivere le lettere della parola chiave automaticamente la mia tabella si restringe fino a che non arrivo al nome completo dandomi quello che voglio.

    Tutto ciò è possibile? Se è complicato farlo in maniera automatica, mi andrebbe bene anche nn so cliccando sul pulsante cerca e lui mi filtra.

    grazie in anticipo

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133

    Re: ricerca on the fly in javascript

    Originariamente inviato da linux4life

    Tutto ciò è possibile?
    Si in ajax ottima guida
    Se è complicato farlo in maniera automatica,
    Dipende cosa intendi per maniera automatica
    mi andrebbe bene anche nn so cliccando sul pulsante cerca e lui mi filtra.
    Per questa "opzione" fai sposare la discussione nel form lato server di competenza (php asp)
    grazie in anticipo
    Prego in posticipo
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Se vuoi ho fatto una cosa praticamente uguale proprio oggi. Però non è javascript, è php e interagisce con il database (mysql). Si aggiorna in tempo reale, alla digitazione di ogni carattere. Se non hai un database sotto e vuoi solo una funzione javascript non posso aiutarti. Fammi sapere che ti posto il codice.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    100
    @peppe

    si se fa la funzione che cerco ti ringrazio tantissimo, ma come fa php alla digitazione dei caratteri on the fly cambiare dei valori in tempo reale?

    se me lo posti ti ringrazio tantissimo

  5. #5
    Come diceva cavicchiandrea qui si parla di ajax... Il codice è questo:

    codice:
    <script type="text/javascript">
        var myRequest3 = null;
        function CreateXmlHttpReq3(handler){
          var xmlhttp = null;
          xmlhttp = new XMLHttpRequest();
          xmlhttp.onreadystatechange = handler;
          return xmlhttp;
        }
        function myHandler3(){
          if(myRequest3.readyState == 4 && myRequest3.status == 200){
            var er = document.getElementById("visualizza") //qui è dove andrà a scrivere il contenuto dell'elaborazione di cerca.php
            er.innerHTML = myRequest3.responseText;
          }
        }
        function cerca(){
          var cerca = document.getElementById("cerca").value
          myRequest3 = CreateXmlHttpReq2(myHandler3);
          myRequest3.open("GET","cerca.php?cerca="+escape(cerca));
          myRequest3.send(null);
        }
    </script>
    ....
    <body>
    ...
      <b class="ord_src">Cerca <input id="cerca" type="text" size="8" onkeyup="cerca()">[/b]<b id="ricerca">[/b]
    
      <b id="visualizza">[/b]
    Questo lo metti nella pagina dove vuoi fare la ricerca. Poi ti crei la pagina cerca.php e metti questo:

    Codice PHP:
    <?php
      $host 
    "**";
      
    $user "**";
      
    $password "**";
      
    $database "**";

      
    $connessione=mysql_connect($host,$user,$password);
      
    mysql_select_db($database);

      
    $cerca $_GET['cerca'];
      if(!(
    $cerca)){ //se la casella di ricerca è vuota, visualizza tutti gli elementi
        
    $q 'SELECT img, articolo, nome, collezione, descrizione FROM prodotto ORDER BY prodotto.nome ASC LIMIT 0, 30 ';
        
    $num=mysql_num_rows(mysql_query($q));
        echo 
    "
    Visualizzati<b class='ord_src'>"
    .$num."[/b]articoli";
      }else{ 
    //altrimenti cerca il testo inserito in tutti i campi della tabella
        
    $q 'SELECT img, articolo, nome, collezione, descrizione FROM prodotto  WHERE prodotto.articolo LIKE "%' .$cerca .'%" OR prodotto.nome LIKE "%' .$cerca .'%" OR prodotto.collezione LIKE "%' .$cerca .'%" OR prodotto.descrizione LIKE "%' .$cerca .'%" ';
        
    $num=mysql_num_rows(mysql_query($q));
        echo 
    "
    La ricerca ha prodotto<b class='ord_src'>"
    .$num."[/b]risultati";
      }

      
    $recset mysql_query($q);

      echo 
    "<table id='elenco' cellspacing='0px' cellpadding='5px'>";
      while(
    $tr mysql_fetch_array($recset)){
        echo 
    "<tr><td style='width:120px; border-bottom:0px solid #000'>[img]"$tr[[/img]</td>";
        echo "
    <td  style='width:200px; border-bottom:0px solid #000'><class='tit'>Collezione: [/b]<b style='color:red'>", $tr['collezione'], "[/b]
    ";
        echo "
    <class='tit'>Art.: [/b]<b style='color:#99004D'>", $tr['articolo'], "[/b]
    ";
        echo "
    <class='tit'>Nome: [/b]<b style='color:#009900'>", $tr['nome'], "[/b]</td>";
        echo "
    <td class='tit'>Strappo - [url='#']17mm[/url] [url='#']22mm[/url] [url='#']32mm[/url]
    Corda - [url='#']17mm[/url] [url='#']22mm[/url] [url='#']32mm[/url]
    Pacchetto - [url='#']17mm[/url] [url='#']22mm[/url] [url='#']32mm[/url]</td></tr>";
      }
      echo "
    </table>";
      echo mysql_error();
      mysql_close(
    $connessione);
    ?>
    Ecco qui....a proposito, se cambi gli id ad esempio di b (visualizza), ricordati di cambiarlo anche nella funzione myHandler3....per altre domande, sono a disposizione!

  6. #6
    C'è un piccolo errore nel Javascript...

    All'inzio dichiari function CreateXmlHttpReq3(handler), e invece nella funzione cerca() richiami reateXmlHttpReq2(myHandler3), che ovviamente diventa reateXmlHttpReq3(myHandler3).

    Funziona perfettamente ...

    Volevo chiedervi a voi che di ajax ne mangiate sicuramente più di me, Se invece di un solo parametro, dovessi passarne più di uno..in "momenti" diversi..e da "posti" diversi..come potrei fare?

    Grazie in anticipo.

  7. #7
    Si un piccolo errore di distrazione...ma funziona ugualmente perchè ho definito anche CreateXmlHttpReq2(handler)....corretto!

    In che senso vuoi passare più parametri? E in che senso da posti diversi?
    Per passare più parametri basta usare la & quando chiami la pagina:

    questo:
    codice:
    myRequest3.open("GET","cerca.php?cerca="+escape(cerca));
    diventerebbe questo:
    codice:
    myRequest3.open("GET","cerca.php?cerca="+escape(cerca)+"&altro1="+escape(altro1)+"&altro2="+escape(altro2));
    Comunque ajax lo "mastico" da appena 5 giorni....è meno complicato di quanto si possa pensare, poi se ti piace ci "giochi" il più possibile! Sono 3 notti che non dormo perchè non riesco a staccare gli occhi dal pc, e devo finire un progetto entro questa settimana! Questo forum mi sta aiutando tantissimo!

  8. #8
    Esempio:

    Ho una lista di hotel, che hanno all'interno diversi parametri: stelle, stanze, prezzo, servizi.

    Dovrei fare quindi 4 filtri, che appunto filtrino i risultati di ricerca, in base alle cose che andrò a selezionare.

    Se seleziono solo 4 stelle..mi dovranno comparire, tutte le stanze, tutti i prezzi, tutti i servizi, ma solo 4 stelle..

    E' questo che mi blocca un pò...

    In teoria dovrei fare..degli if concatenati...e in base alla variabile passata o meno..faccio eseguire una query, piuttosto che un altra.

    Giusto il concetto?

  9. #9
    Beh, filtraggio e ricerca non sono proprio la stessa cosa.... Comunque si, il ragionamento è quello di mettere degli if annidati per il controllo dei parametri passati, e in questo modo fai partire la query che ti interessa...almeno io so fare solo così, magari qualcuno che conosce php da più tempo di me (una settimana) conosce qualche altro modo. Anche perchè a me non interessa la velocità di risposta del server, perchè sono in locale...magari qulche query un po' più complessa in un database con molti record, può ritardare la visualizzazione (e non si tratterebbe più di filtraggio in tempo reale). Poi non so....comunque se ti serve una mano durante la stesura del codice, sarò ben felice di dartela.
    Ciao!

  10. #10
    No bè, diciamo che programmo ormai da 3 anni, ma non mi ero ancora mai affacciato all'ajax.

    Credo cmq che gli if annidati sia l'unica strada da seguire...almeno per come posso concepirlo io

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.