Visualizzazione dei risultati da 1 a 6 su 6

Discussione: ricerca dinamica...

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    111

    ricerca dinamica...

    ciao a tutti sono riuscito a creare tramite la tecnica ajax e php un motore di ricerca per i titoli (videogiochi) che recensiamo su un sito che ho con un amico.
    Lo script funziona bene ma c'è un problema che non riesco a capire... l'ho impostato per cominciare la ricerca appena si immette la seconda lettera... es se metto si dovrebbe trovarmi tutti i giochi che iniziano con si invece mi trova tutti i giochi con la s ma anche che iniziano con se,sp,sn ecc ecc
    volevo chiedermi se si può ricercare solo quelli che iniziano per quelle lettere... vi posto il codice sia javscript che php... penso che il problema sia come richiamo la query...


    codice:
    <script type="text/javascript">
    var xmlhttp;
    
    function mostraInfo(str)
    {
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null)
    {
    alert ("Browser does not support HTTP Request");
    return;
    }
    if (str.length > 1) {
    var url="cerca.php";
    url=url+"?key="+str;
    xmlhttp.onreadystatechange=stateChanged;
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
    }
    
    function stateChanged()
    {
    if (xmlhttp.readyState==4)
    {
    document.getElementById("info").innerHTML=xmlhttp.responseText;
    }
    }
    
    function GetXmlHttpObject()
    {
    if (window.XMLHttpRequest)
    {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    return new XMLHttpRequest();
    }
    if (window.ActiveXObject)
    {
    // code for IE6, IE5
    return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
    }
    }
    </script>
    
    <form>
    cerca titolo:
    <input type="text" name="users" onkeypress="mostraInfo(this.value)" />
    </form>
    
    
    <div id="info"></div>
    questo invece è lo script php che interroga il db
    Codice PHP:
    <?php

    include "config.php";   
    include 
    "connessione.php";
    $colore 1;
    $key $_GET['key'];
    if(!isset(
    $key)) die('PARAMETRO key MANCANTE');

    $key mysql_real_escape_string($key);

    $sql "SELECT  id, titolo, trama, vototot  FROM recensioni WHERE titolo LIKE '".$key"%'";

    $res mysql_query($sql$db) or die('QUERY SQL FALLITA');


    echo 
    "<table border='1' cellpadding='0' cellspacing='0'>
    <tr bgcolor='#FFFF00'>
    <th>Titolo</th>
    <th>Trama</th>
    <th>voto</th>
    <th>Contenuto</th>
    <th>link</th>
    </tr>"
    ;

     
    while (
    $row = @mysql_fetch_array($res)){
        
    // recensione
    if ($colore == 1){
    echo 
    "<tr bgcolor='#00FF00'>";
    echo 
    "<td>" $row['titolo'] . "</td>";
    $stringainiziale $row['trama'];
    $max '80'
    $stringa substr($stringainiziale0$max); //Tronca la stringa al carattere $max 
    $stringa $stringa.'...'//Aggiunge i puntini  
    echo "<td>$stringa</td>";
    echo 
    "<td>" $row['vototot'] . "</td>";
    echo 
    "<td> Recensione</td>";
    $id $row['id'];
    echo 
    "<td>[url='../recensioni.php?recen=$id']Qui[/url]</td>";
    echo 
    "</tr>";
    $colore 2;
    }else{
    echo 
    "<tr bgcolor='#00FFFF'>";
    echo 
    "<td>" $row['titolo'] . "</td>";
    $stringainiziale $row['trama'];
    $max '80'
    $stringa substr($stringainiziale0$max); //Tronca la stringa al carattere $max 
    $stringa $stringa.'...'//Aggiunge i puntini  
    echo "<td>$stringa</td>";
    echo 
    "<td>" $row['vototot'] . "</td>";
    echo 
    "<td> Recensione</td>";
    $id $row['id'];
    echo 
    "<td>[url='../recensioni.php?recen=$id']Qui[/url]</td>";
    echo 
    "</tr>";
    $colore 1;
    }

    }
    $sqlant "SELECT  id, titolo, descrizione FROM anteprime WHERE titolo LIKE '".$key"%'";

    $resant mysql_query($sqlant$db) or die('QUERY SQL FALLITA');

    while (
    $rowa = @mysql_fetch_array($resant)){
    // anteprima
    if ($colore == 1){
    echo 
    "<tr bgcolor='#00FF00'>";
    echo 
    "<td>" $rowa['titolo'] . "</td>";
    $stringainizialea $rowa['descrizione'];
    $maxa '80'
    $stringaa substr($stringainizialea0$maxa); //Tronca la stringa al carattere $max 
    $stringaa $stringaa.'...'//Aggiunge i puntini  
    echo "<td>$stringaa</td>";
    echo 
    "<td></td>";
    echo 
    "<td> Anteprima</td>";
    $ida $rowa['id'];
    echo 
    "<td>[url='../anteprime.php?antep=$ida']Qui[/url]</td>";
    echo 
    "</tr>";
    $colore 2;
    }else{
    echo 
    "<tr bgcolor='#00FFFF'>";
    echo 
    "<td>" $rowa['titolo'] . "</td>";
    $stringainizialea $rowa['descrizione'];
    $maxa '80'
    $stringaa substr($stringainizialea0$maxa); //Tronca la stringa al carattere $max 
    $stringaa $stringaa.'...'//Aggiunge i puntini  
    echo "<td>$stringaa</td>";
    echo 
    "<td></td>";
    echo 
    "<td> Anteprima</td>";
    $ida $rowa['id'];
    echo 
    "<td>[url='../anteprime.php?antep=$ida']Qui[/url]</td>";
    echo 
    "</tr>";
    $colore 1;
    }


    }
    echo 
    "</table>";



    mysql_close($db);
        



    ?>
    Qualcuno può aiutarmi nel capire come posso far funzionare lo script come voglio io??

    grazie ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ...DEBUGGING!...

    Prova a:
    - stampare (anche con un alert, meglio con un log su console) l'url richiamata via ajax PRIMA di fare la chiamata allo script php: se il parametro passato NON contenesse le due lettere digitate allora il problema è prima;
    - se la chiamata è corretta allora c'è un errore nello script php: testalo direttamente (non via ajax) e verifica che filtri correttamente
    (alternativamente puoi usare un sistema di debugging console per JS e guardare le chiamate ajax)

    Se è tutto corretto allora c'è un problema nell'aggiornamento.

    Così isoliamo la questione...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    111
    Ciao hai ragione il problema è prima, ho fatto una prova molto veloce e cioè passare la variabile manualmente "cerca.php?key=si" mi trova solo quelli che iniziano per si...

    Quindi il problema sta nella chiamata ajax... solo che io di ajax non so molto è già tanto che sono riuscito tra esempi e manuale a fare questo script...

    molto probabile che il problema sta quando gli passo la variabile ... vede solo la prima lettera... come fare per fargli vedere anche la seconda?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    aspetta... se chiamando manualmente (cioè intendo: inserendo direttamente nel browser) ""cerca.php?key=si" non va, allora il problema è nello script php (anche se a occhio sembra giusto...), se invece intendi un'altra cosa... verifica un po'... spiega meglio magari

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    111
    ciao forse mi sono spiegato male

    allora se digito "cerca.php?key=si" funziona come voglio io e cioè mi trova tutti i titoli che iniziano per "si"... questo è ok!!!!


    se digito sul form "si" mi trova tutti i titoli con la s ma non solo con "si" ma anche "st", "sp" ecc ecc quindi deduco da quello che mi hai detto prima che non passa il secondo carattere ma solo il primo cioè la "s" ma non la "i"... spero di essermi spiegato meglio

    ora prova a vedere se è if di controllo caratteri che da il problema!!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    111
    ciao ho fatto delle prove mettendo un echo sullo script php (echo "$key" e in effetti se digito 2 lettere mi stampa a video solo la prima alla terza lettera mi arriva la seconda e così via quindi ho fatto varie prove e ho scoperto che l' "errore" stava nel form...
    l'ho modificato così:

    codice:
    <form> cerca titolo: <input type="text" name="users" onkeyup="mostraInfo(this.value)" /> </form>
    invece di onkeypress="ecc ecc" ho messo onkeyup="ecc ecc" ora funziona alla grande perchè mi passa le lettere giuste

    ciao e grazie del tempo dedicatomi!!!!

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.