Počet komentářů od nicku Mozektevidi.net - Píše Olda Šálek.

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 Oldřich Šálek | 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


Komentáře a diskuze ke článku tady
diskuze ke článku