Jump to content
php.lv forumi

Recommended Posts

Posted (edited)

Man ir problēma sakarā ar statistiku. Man šis scripts ieliek today tabluā ip adreses, kas ir ienākušas pa dienu lapā. Un ši daļa,

$radit = mysql_query("SELECT * FROM today WHERE datumz != '$datumz' GROUP BY usera_ip")or die (mysql_error());
$r = mysql_num_rows($radit);
if ($r != 0){
   if($r == 1){
   mysql_query("INSERT INTO total (usera_host,datumz) VALUES ('$r','$vakardiena')");
   }else{
   mysql_query("UPDATE total SET usera_host = '$r', datumz = '$vakardiena' WHERE datumz = '$vakardiena'");
   }
}

kas nolasa no today tabulas ierakstu skaitu ar ne-šodienas datumu, un tad ja šis skaits ir lielaaks par 0, tad vinjsh inserto. Ja lapā ir iegājistikai 1 cilveķs, tad viss strādā, bet ja ir vairāk pa vienu cilvēku, tad viņš nedara neko.. tb neupdateo :( , kaads zin kapēc tas varētu būt ?

Edited by Ace
Posted

:huh:

vecīt, kāda Tev tā tabulas struktūra, un ko Tu tur gribi ar tiem vaicājumiem panākt? <_< <_<

loģiski, ka šitas

"UPDATE total SET usera_host = '$r', datumz = '$vakardiena' WHERE datumz = '$vakardiena'"

Tev izdarīs sekojošo:

 

Tabulā TOTAL izmainīs visiem vakardienas ierakstiem lauku usera_host uz tam padotā parametra $r vērtību. no loģikas viedokļa - visus vakardienas apmeklētājus pārvērtīsi, it kā vakar pie Tevis būtu nācis tikai Janka... :D

Vai tas tiešām ir tas, ko Tu gribēji izdarīt? :P

 

vīī, es nevaru.. lasu tālāk -

"INSERT INTO total (usera_host,datumz) VALUES ('$r','$vakardiena')"

 

vai tiešām laukā usera_host Tev ir mērķis likt mainīgo $r, kas iepriekš ir noteikts kā rindu skaits?... nu tak pasēdi pie papīra, pazīmē...

Posted

un shaada veida vaicaajums nav optimaals. labaak vaicaat SELECT COUNT(*) ... un tad dabuut skaitu aaraa, jo taadeejaadi tiek atgreizta tikai viena veertiiba, a tavaa gadiijumaa daudzi tabulas dati! un shim vispaar nav jeega "datumz = '$vakardiena' WHERE datumz = '$vakardiena'" kaapeec datumz jaauzstaada uz $vakardiena, ja jau taa IR $vakardiena :)

Posted

Nu es esmu gan ar to select count(*) gan arii bez taa WHERE taisiijis, nekas nesanaak... un man meeriskjis ir ielikt iekshaa to nolasiito skaitu nevis ip

Posted

nez, bet man liekas, ka tev tā sistēma te tāda murdzīga sanāk. Manuprāt - vienkāršāk būtu DB tabula ar 2 laukiem, kur viens ir IP un otrs laiks. Db lauku laiks norādi, kā "datetime", lai pēc tam mierigi varētu pārbaudīt kas pa dienu utt.

$ip = getenv("REMOTE_ADDR");
mysql_query("Insert into galds set ip='$ip', laiks='NOW()'"); // NOW() ievieto laiku
#................
$vakardiena = date("d") - 1;
$sql = mysql_query("Select count(*) from galds where DATE_FORMAT(laiks,'%d) = '$vakardiena'");
#...............

Nu vēl tik piedomā klāt, to, ja tā ir mēneša pēdējā diena utt.

Posted

būtībā counteros parasti neiesaka lietot update f-ciju, jo ja vēlamies uzināt cik hiti ir nokonkrētas ip etc tas var radīt nelielas problēmas. ar datu atlasīšanu, tas tā es tikai uzmetu aci ;)

Posted
būtībā counteros parasti neiesaka lietot update f-ciju, jo ja vēlamies uzināt cik hiti ir nokonkrētas ip etc tas var radīt nelielas problēmas. ar datu atlasīšanu, tas tā es tikai uzmetu aci ;)

innē. 1) pašās db ir iestrādātas šādu "ierindošanas" kolīziju apiešanas mehānismi 2) vienmēr ir UPDATE DELAYED

NB (esmu skatījies tikai pēdējos postus, tā ka īsti nezinu par ko iet runa)

Posted

Nu es arī izmantoju updeit f-ciju, bet tikai tiem, kas ir onlainā - pārējos hostus skaita citi kveriji.

sviesc - es tā īsti nesapratu, ko tu ar to biji domājis.

un arī nesaprotu priekškam Ace lieto to updeit? kāpēc skaitītājam tas vajadzīgs? kā jau teicu updeit izmantoju onlainam! B)

×
×
  • Create New...