• User

    Una query al minuto

    Scusate il titolo un po' ridicolo ๐Ÿ˜†
    Sto' usando questo script il quale legge e salva su db alcune query di ricerca.

    $querystat = mysql_real_escape_string($_GET['q']);
    $datetime = time();
    if( ($querystat != $_SESSION['prev_search']) OR ( ($datetime - $_SESSION['datetime']) > 60) ) {
    $insertquery="INSERT INTO query (querycampo,datetime) VALUES ('$querystat','$datetime');";
    mysql_query($insertquery, $db);
    }
    $_SESSION[?datetime?] = $datetime;
    $_SESSION[?prev_search?] = $querystat;

    La riga
    if( ($querystat != $_SESSION['prev_search']) OR ( ($datetime - $_SESSION['datetime']) > 60) ) {
    dovrebbe evitare di popolare il db se una ricerca viene effettuata piu' volte nel tempo di un minuto.

    Purtroppo questo non funziona e tutte le query vengono inserite.
    Mi potete aiutare a fare in modo che se la stessa query viene effetuata ripetutamente nel tempo di un minuto venga registrata una sola volta?

    Spero di essermi spiegato e ringrazio anticipatamente


  • Consiglio Direttivo

    Ciao Armando33 ๐Ÿ˜‰

    Prima cosa da verificare: che $_SESSION['prev_search'] e $_SESSION['datetime'] contengano un valore. Quindi farei un echo ad inizio script per fare intanto questa verifica.
    Facci sapere ๐Ÿ˜‰


  • User

    @Samyorn said:

    Ciao Armando33 ๐Ÿ˜‰

    Prima cosa da verificare: che $_SESSION['prev_search'] e $_SESSION['datetime'] contengano un valore. Quindi farei un echo ad inizio script per fare intanto questa verifica.
    Facci sapere ๐Ÿ˜‰

    In effetti ho fatto
    echo $_SESSION['prev_search'];
    echo $_SESSION['datetime'];
    ma non viene fuori niente

    Cosa posso fare?
    La pagina dello script e' questa
    geek-notes.com/mysql/33/how-to-save-search-queries-on-google-custom-search-engine/


  • Consiglio Direttivo

    se il tuo script รจ esattamente cosรฌ come l'hai postato
    [php]$querystat = mysql_real_escape_string($_GET['q']);
    $datetime = time();
    if( ($querystat != $_SESSION['prev_search']) OR ( ($datetime - $_SESSION['datetime']) > 60) ) {
    $insertquery="INSERT INTO query (querycampo,datetime) VALUES ('$querystat','$datetime');";
    mysql_query($insertquery, $db);
    }
    $_SESSION[?datetime?] = $datetime;
    $_SESSION[?prev_search?] = $querystat;
    [/php]manca il session_start();
    e gli apici delle ultime due righe non vanno bene, sono virgolette singole ๐Ÿ˜‰
    quindi
    [php]session_start();
    $querystat = mysql_real_escape_string($_GET['q']);
    $datetime = time();
    if( ($querystat != $_SESSION['prev_search']) OR ( ($datetime - $_SESSION['datetime']) > 60) ) {
    $insertquery="INSERT INTO query (querycampo,datetime) VALUES ('$querystat','$datetime');";
    mysql_query($insertquery, $db);
    }
    $_SESSION['datetime'] = $datetime;
    $_SESSION['prev_search'] = $querystat;
    [/php]Vedi se ti va cosรฌ ๐Ÿ˜‰
    :ciauz:


  • User

    Niente da fare :-<
    Il codice esatto che ho e' questo:
    [php]
    /-----------------------
    cattura key : db connection
    -------------------------
    /
    $dbhost = "localhost";
    $dbname = "xxxxx";
    $dbuser = "xxxx";
    $dbpass = "xxxxx";
    $db=mysql_connect($dbhost, $dbuser, $dbpass);
    if ($db==FALSE)
    die("Error while connecting to MYSQL ".mysql_error());
    mysql_select_db($dbname ,$db);
    /------------------------------
    Read and save the search query
    -------------------------------
    /

    $querystat = mysql_real_escape_string($_GET['q']);
    $datetime = time();
    if( ($querystat != $_SESSION['prev_search']) OR ( ($datetime - $_SESSION['datetime']) > 60) ) {
    $insertquery="INSERT INTO query (querycampo,datetime) VALUES ('$querystat','$datetime');";
    mysql_query($insertquery, $db);
    }
    $_SESSION['datetime'] = $datetime;
    $_SESSION['prev_search'] = $querystat;
    [/php]

    Non ho messo il session_start(); perche' se no ottengo questo errore.
    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/....../domains/......../public_html/results.html:4) in /home/....../domains/........./public_html/capturekey.php on line 17

    Con il tuo aiuto sto' cercndo di capire ma non ne esco. Se ti viene in mente qualcos'altro .... Grazie in anticipo ๐Ÿ˜†


  • Consiglio Direttivo

    Quell'errore significa che esistono altri output nella pagina prima del session_start().
    Devi metterlo come prima cosa, prima del <DOCTYPE...> ๐Ÿ˜‰


  • User

    @Samyorn said:

    Quell'errore significa che esistono altri output nella pagina prima del session_start().
    Devi metterlo come prima cosa, prima del <DOCTYPE...> ๐Ÿ˜‰

    Beccato :->>>> La birra virtuale e' tua .
    Ciao e grazie


  • Consiglio Direttivo

    Bene ๐Ÿ™‚
    Alla prossima ๐Ÿ˜‰