Jump to content
php.lv forumi

Probleema ar MySql delete


herry

Recommended Posts

taatad ideja taada - njemot paliigaa sho lapu, manuaali un savas smadzenes meegjinaaju uzcept koda gabalinju, kursh skaitiitu, cik ljautinju peeta lapu dotajaa briidii.

 

Ideja bija taada, ka nochekojam lietotaaja IP, ja taadu pamana DB izmet ierakstu aaraa un iesviezh vietaa ierakstu, ar IP, jauno laiku un veel paaris datiem.

 

Koda fragments, kas to dara

$vaicajums = "DELETE FROM online WHERE ip LIKE '".$_SERVER['REMOTE_ADDR']."'";
$rezultats = mysql_query($vaicajums);	
$vaicajums = "INSERT INTO online SET id='".$id."', vards='".$vards."', time='".$tagad."', ip='".$_SERVER['REMOTE_ADDR']."'";
 $rezultats = mysql_query($vaicajums);

 

Lielaakoties straadaa OK, bet reizeem man nesaprotamu apstaaklju deelj dazhas IP adreses netiek atpaziitas un liidz ar to DB tiek regjistreetas vaitraakkaartiigi. Kur vareetu buut probleema?

 

PS

garaaks koda fragments sheit http://paste.php.lv/1933

Link to comment
Share on other sites

MySQL ir lielisks SQL vaicājums REPLACE, kas apvienu UPDATE ar INSERT:

$vaicajums = "REPLACE online SET id='$id', vards='$vards', time='$tagad', ip='".$_SERVER['REMOTE_ADDR']."'";
$rezultats = mysql_query($vaicajums);

Tev tikai jābūt tam ip kolonnai kā primārai vai unikālai atslēgai uzstādītai.

Edited by bubu
Link to comment
Share on other sites

Nav ērtāk izmantot šādu variantu? Šeit mēs atlasam cik lietotāji un viesi ir pakustējušies pēdējās 15 minūtēs.

 

list($lietotaji) = mysqli_fetch_row(query('SELECT COUNT(*) FROM apmekletaji WHERE NOW() < pedejadarbiba + INTERVAL 15 MINUTE ')); 
list($registreti) = mysqli_fetch_row(query('SELECT COUNT(*) FROM lietotaji WHERE NOW() < pedejadarbiba + INTERVAL 15 MINUTE ')); 
$viesi = $lietotaji - $registreti; 
$gal = $lietotaji ==1 ? 's' : 'i';
echo $lietotaji.' lietotāj'.$gal.' aktīv'.$gal.' pēdējās 15 minūtēs no tiem '.$viesi.' viesi<br/>';

 

Šo te darbību mēs izpildam uz katra apmeklētāja kustību:

list($numrows) = mysqli_fetch_row(query("SELECT COUNT(*) FROM apmekletaji WHERE ip='$ip'  AND  NOW() < pedejadarbiba + INTERVAL 15 MINUTE ORDER BY id DESC LIMIT 1")); 
if ($numrows == 0)
{ 
query("INSERT INTO apmekletaji(pedejadarbiba, ip) VALUES (NOW(), '$ip')"); 
}
else 
{ 
query("UPDATE apmekletaji SET pedejadarbiba= NOW() WHERE ip='$ip' ORDER BY id DESC LIMIT 1"); 
}

 

Ielogojušamies lietotājiem vienkārši updeitojam pēdējās kustības laiku ar katru kustību.

Link to comment
Share on other sites

Paldies par padomiem! Ar indeksaaciju probleema tika noveersta.

Bet es joprojaam nesaprotu, kaadeelj netika izdzeesti tie ieraksti. Kaadeelj reizeem nenostraadaaja tas DELETE.

Vieniigais, kaada ideja ir, ka tika izdariiti vairaaki pieprasiijumi praktiski vienlaiciigi no vienas IP.

Link to comment
Share on other sites

×
×
  • Create New...