- Home
- Categorie
- Coding e Sistemistica
- Coding
- Una query al minuto
- 
							
							
							
							
							
Una query al minutoScusate 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 sapere In 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