- Home
- Categorie
- Coding e Sistemistica
- PHP
- suggerimento per controllo dati da query
-
suggerimento per controllo dati da query
ciao a tutti,
ho bisogno di fare un controllo incrociato per un gioco web.- prendo ip utente
- lo inserisco nel database e inserisco la data di oggi
- faccio un controllo se a quell'ip corrispondono più date
facevo un count di quante volte lo stesso ip era inserito ma ho scoperto che sbagliavo, perchè il mio fine ultimo sarebbe controllare se ha giocato + di una volta in una stessa data... avete qualche suggerimento per fare questo ?
posto il mio vecchio codice di controllo che ho scoperto che è sbagliato
[PHP]$ip=$_SERVER['REMOTE_ADDR'];
$data = date('Y-m-d');//controllo ip e data
$query_insert_ip = "insert into controlla (ip, data) values ('$ip', '$data')";
$esegui_insert_ip = mysql_query ($query_insert_ip, $con ) or die ("inserimento dati controllo non riuscito");$query_ip = "select * from controlla where ip='$ip'";
$esegui_ip = mysql_query($query_ip, $con) or die ("aggiornamento modalita concorso in corso");$conteggio = mysql_num_rows($esegui_ip);
while($riga_data = mysql_fetch_array($esegui_ip)){
$data_estratta = $riga_data['data'];
}
//chiusura
mysql_close($con);
if($conteggio>=2){
header ("location: errato.php");
}[/PHP]
-
una cosa così penso che va bene se ho capito che vuoi fare.
[PHP]
$sql = "SELECT * FROMcontrolla
WHERE ip='".$ip."' AND data = '".date()."'";
$result = mysql_query($sql);
if(mysql_num_rows($result) == 1)
{
echo 'un sola volta';
}
elseif(mysql_num_rows($result) >= 1)
{
echo 'più di una volta';
}
else{
echo 'nessuna delle due';
}
[/PHP]
-
Oppure puoi utilizzare una query del genere:
[PHP]$query = mysql_query("SELECT ip, data, COUNT(*) AS numeroaccessi FROM controlla GROUP BY data, ip HAVING numeroaccessi > 1");
while ($dati = mysql_fetch_assoc($query)) {XXX gestionale che ti interessa XXX
}[/PHP]
Che ti estrae direttamente gli ip che giornalmente hanno fatto più di un accesso.
-
Perfetto!!
Grazie!!