- Home
- Categorie
- Coding e Sistemistica
- PHP
- Una query al minuto
-
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
-
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
-
@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 sapereIn effetti ho fatto
echo $_SESSION['prev_search'];
echo $_SESSION['datetime'];
ma non viene fuori nienteCosa posso fare?
La pagina dello script e' questa
geek-notes.com/mysql/33/how-to-save-search-queries-on-google-custom-search-engine/
-
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ì
-
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 17Con il tuo aiuto sto' cercndo di capire ma non ne esco. Se ti viene in mente qualcos'altro .... Grazie in anticipo
-
Quell'errore significa che esistono altri output nella pagina prima del session_start().
Devi metterlo come prima cosa, prima del <DOCTYPE...>
-
@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
-
Bene
Alla prossima