Jump to content
php.lv forumi

hostu skaititajs


Ace

Recommended Posts

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
Link to comment
Share on other sites

: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ē...

Link to comment
Share on other sites

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 :)

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 ;)

Link to comment
Share on other sites

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)

Link to comment
Share on other sites

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)

Link to comment
Share on other sites

×
×
  • Create New...