Počet komentářů od nicku Mozektevidi.net - Mozektevidi.net.

Počet komentářů od nicku

Primitivní, jednoduchý PHP skript pro spočítání počtu příspěvků od jednoho uživatele

image of Počet komentářů od nicku

Původní skript

Nejprve jsem se snažil řešit problém přes dvourozměrné $pole, ve kterém bude hodnota nick, pocet. Jenože ať jsem se snažil jak jsem se snažil, nikdy se mi nepovedlo dořešit do konce. Většinou jsem ztroskotal na možnosti, že dva nicky mají shodný počet komentářů, tudíž nešli seřadit.
Pak mě napadlo využít pomocnou temp tabulku, do které budu ukládat $nick a $pocet. Moje řešení fungovalo krásně, na hostingu savany trval výpočet pouze 0,2 sekundy. Navíc jsem měl vyřešené kešování údajů.

Starý php skript

<?
//$sql = mysql_query("TRUNCATE TABLE `rs_kom_stat`");
$query  mysql_query("SELECT * FROM rs_kom GROUP BY nick " ) or die (mysql_error());
while (
$zaznam  mysql_fetch_array ($query ))
{
  
$ktery_nick  $zaznam["nick" ];
  
$nick $zaznam["nick" ];
  
  
$dotaz mysql_query (" SELECT * FROM  rs_kom WHERE nick = "$ktery_nick"" ) or die ( mysql_error());
  
$pocet mysql_num_rows($dotaz);
  if (
$pocet  10 )
  {
     
$uz_existuje  mysql_query("SELECT * FROM " .prefix ."kom_stat WHERE nick ="$nick" LIMIT 1" ) or die ( mysql_error());
    if (
mysql_num_rows($uz_existuje )<=0 )
    { 
//neexistuje záznam
       
mysql_query (" INSERT INTO ". prefix. "kom_stat  VALUES ("", "$nick", "$pocet")") or die (mysql_error());
      }
     else
     { 
// existuje
       
MySQL_Query ("UPDATE  ". prefix. "kom_stat SET  pocet = $pocet WHERE nick="$nick" " );
    }
  }
}

$vypis mysql_query (" SELECT * FROM ".prefix. "kom_stat  ORDER BY pocet_kom DESC LIMIT 10" )  or die (mysql_error ());
$i  1;
while (
$z_db mysql_fetch_array ($vypis ))
{
  
$nick $z_db ["nick"];
  
$pocet $z_db ["pocet_kom" ];
  echo 
"$i $nick napsal $pocet příspěvků <br /> ";
  
$i++;
}

?>

Nový skript

Dneska mi matej21 poslal na do komentářů skript, kterému jsem nejprve nevěnoval pozornost. Měl pouze pár řádků, oproti mému 36 řádkovému kódu. Myslel jsem, že nebude fungovat, už jenom pohled na proměnou $řádky (háčky a čárky fuj) mě utvrzoval i ztraceném času.
Když jsem ovšem skript spustil a on hned fungoval, žasnul jsem. Můj 36 řádkový problém vyřešen efektivněji na pár řádkách kódu. Kód je i 10x rychlejší, než můj starý. Jedním slovem, úžasné.

Upravený php kód


<?
$query 
mysql_query("SELECT  COUNT( * ) AS `radku` , `nick`
FROM `rs_kom`
GROUP BY `nick`
ORDER BY `radku` DESC
LIMIT 25"
);
$poradi 1;
while(
$row mysql_fetch_array($query))
{
echo 
$poradi ". " $row["nick"] . " napsal "  $row ["radku"]  . " příspěvků<br/>" ;

$poradi++;
}
?>

Statistiky komentování

Statistiky můžete vidět na mozektevidi.net/co/statistiky. Hned za uživatelem MzK následuje také seznam největších spamerů na mozektevidi.net Smích


autor článku OS | datum publikování 14.květen.2007 18:23 | služby a články co mohou být užitečné služby |

Kometáře

#1 matej21 www

JA SEM SPAMER JO? :-D
k těm "Řádkům" ten mysql dotaz je z phpmyadmina, me se to taky sice moc nelibilo ale kdyz to fungovalo proc to predelavat? :-P
btw:chybi mi uz jen 700 komentaru na mozka :-D reaguj

datum 14.05.2007 18:30

unknown unknown

#2 Mr. Fake (jumboom) www

mno sice mam jen minimum komentaru, ale aspon nejsem spamer.. :-D
jinak odtedka koncim s imaginarnim nickem Mr. Fake.. jumboom rulez 8-) reaguj

datum 14.05.2007 18:44

unknown unknown

#3 Tomas12345 www

Proc delat neco lehce kdyz to jde slozite :-D Jj taky se me to obcas stava. reaguj

datum 14.05.2007 18:53

unknown unknown

#4 matej21 www

btw: jak tam mas v tom clanku Matej tak to plls prepis za matej21 :-P
kdyz potom nekdo vyhledava matej21 aby nasel i tenhle clanek :-D reaguj

datum 14.05.2007 18:56

unknown unknown

#5 MzK wwwmozektevidi.net

TO matej21: Zkus to klidně hned www.google.com/search :-P zatím to najde moje stránky tento článek až za pár dní reaguj

datum 14.05.2007 19:15

unknown unknown

#6 Golfy wwwwww.golfy.gotia.cz

TO MzK: hezký... konečně jsou ty statistiky pravdivé! reaguj

datum 14.05.2007 19:24

unknown unknown

#7 Golfy wwwwww.golfy.gotia.cz

TO matej21: Jo, to mě taky chybí. Ale ta hodnost spammer... BLE SKULL
To by chteelo MzK podle poctu prispevku priradit hodnost.. 700 a vic= SPAMMER !!! reaguj

datum 14.05.2007 19:29

unknown unknown

#8 Lancelot wwwlancelotak.net

Od toho těch statistik tu jsou právě SQL dotazy, stačí mít dobře navrženou db a dost věcí se dá krásně vyjádřit čísly. reaguj

datum 14.05.2007 19:31

unknown unknown

#9 matej21 www

TO Golfy: s tim spamerem souhlasim
btw:muj 100 prispevek :-D reaguj

datum 14.05.2007 19:31

unknown unknown

#10 Lancelot wwwlancelotak.net

btw. to staré řešení je dobrá prasárna, ale jak už tady zaznělo výše, proč to řešit elegantně, když to jde udělat prasárnou hmm :-D Ale nic si z toho nedělej, já taky pár věcí řeším prasácky :-D reaguj

datum 14.05.2007 19:35

unknown unknown

#11 Lancelot wwwlancelotak.net

btw2. ještě bych do klauzule ORDER BY přihodil i řazení třeba dle nicku, jakožto variantu při rovnosti počtu příspěvků, tedy: ORDER BY `radku` DESC, nick LIMIT 25 reaguj

datum 14.05.2007 19:40

unknown unknown

#12 Golfy wwwwww.golfy.gotia.cz

TO Lancelot: jo, dobrej napad.
BTW: co je to Požadavek na minimální IQ komentujícího nebyl splněn ? reaguj

datum 14.05.2007 20:09

unknown unknown

#13 Nobelicek www

Hehe koukam ze sem az na sedmem miste, ale zase na druhou stranu si nedavam link :D reaguj

datum 15.05.2007 01:12

unknown unknown

#14 SUK wwwsuksoft.ic.cz/

Mozku, krasny priznani :) Jsi opravdu spammer :P reaguj

datum 15.05.2007 14:12

unknown unknown

#15 MzK wwwmozektevidi.net

TO SUK: Přečti si ještě jednou:: Cite: Hned za uživatelem MzK následuje také seznam největších spamerů na mozektevidi.net :-P reaguj

datum 15.05.2007 14:29

unknown unknown

#16 Lancelot wwwlancelotak.net

TO Golfy: Měl jsem tvou IP v Ban listu, už sem to smáznul, takže můžeš vesele komentovat, ovšem pouze věcně, vtipně anebo perverzně :-D reaguj

datum 15.05.2007 14:41

unknown unknown

#17 Golfy wwwwww.golfy.gotia.cz

TO Lancelot: jo, dobře :-) reaguj

datum 15.05.2007 14:54

unknown unknown

#18 matej21 www

TO Golfy: to si res s lancelotem jinde tohle jsou OT komenty a akorat si delas naskak prede mnou :-D reaguj

datum 15.05.2007 18:49

unknown unknown

#19 Golfy wwwwww.golfy.gotia.cz

Celkem mě překvapilo to delší řešení NVM . Já bych to osobně dělal ještě jinak. Nevím sic jak, ale byl by to možná ještě delší skript :D reaguj

datum 15.05.2007 20:01

unknown unknown

#20 matej21 www

TO MzK:diky za update clanku :-P , sry ze sem to nenapsal do jednoho komentu, ale ja sem to zjistil az ted... reaguj

datum 15.05.2007 20:01

unknown unknown

#21 Golfy wwwwww.golfy.gotia.cz

TO matej21: co bylo za problém? reaguj

datum 15.05.2007 20:40

unknown unknown

#22 matej21 www

TO Golfy: kde? u toho clanku? bylo tam pouze Matej takze kdyz nekdo zada do vyhledavani matej21 tak to nenajde tenhle clanek... reaguj

datum 15.05.2007 20:52

unknown unknown

#23 Golfy wwwwww.golfy.gotia.cz

TO matej21: jo,tohle is myslel, tak to jo. Ja myslel neco s php kodem NDA reaguj

datum 15.05.2007 21:56

unknown unknown

#24 izmy wwwblog.izmy.eu/

To je nefér, já tam nejsem. Musím napravit. :-) reaguj

datum 15.05.2007 21:57

unknown unknown

#25 matej21 www

TO Golfy: :-P priste si precti predchozi komentare... tam sem o tom psal... reaguj

datum 15.05.2007 22:09

unknown unknown

#26 MzK wwwmozektevidi.net

Takového klábosení, asi to promažu..
BTW chtělo by to vymyslet lepšejší odpovídání na komentář. Nějaké TO Nick rozhodně nestačí. Pak není poznat, na který koment se ráguje.. Nějaké návrhy? reaguj

datum 15.05.2007 23:58

unknown unknown

#27 Axiss wwwwww.footballarena.org

Proc GROUP BY zrovna na nick a ne treba na id_uzivatele? Jestli mas index na nicku tak je to stejny, jen ta ID jsou myslim "lepsi" :)

TO:2807 - Navrh treba ten, aby to po kliknuti na nejake RE vlozilo do formulare treba to TO:2807, coz bude znamenat reakce na prispevek s ID 2807 a potom si z toho nejakym mb_ereg_replace("TO:([0-9]+) ... udelas odkaz. Klasika. Nejspis jeste pridat TO:MzK:2807 nebo neco takoveho. Treba i cas tam vkladej. reaguj

datum 16.05.2007 03:15

unknown unknown

#28 matej21 www

TO MzK: ja bych to taky udelal nejak jak rikal Axiss jen trochu jinej vzhled, to se mi moc nelibi... treba TO MzK reakce na »MzK«: : reaguj

datum 16.05.2007 06:34

unknown unknown

#29 MzK wwwmozektevidi.net

TO matej21: Původně jsem myslel pouze reakce na »Evča«: . Ale to ještě nevím, chtěl jsem také začít číslovat příspěvky od jedničky ke článku. Jakože například tvoje 2811 bude jen 28. Kvůli přehlednosti. Nevím co by bylo nejlepší. reaguj

datum 16.05.2007 08:11

unknown unknown

#30 Golfy wwwwww.golfy.gotia.cz

TO MzK: cislovani od jednicky by bylo lepsi.
a udelej i citaci ;-) reaguj

datum 16.05.2007 18:57

unknown unknown

#31 MzK wwwmozektevidi.net

Líbí se mi, jak je to vyřešené u RS2. Nějaké další alternativy? reaguj

datum 16.05.2007 21:24

unknown unknown

Nové kometáře nejsou povolené.