All pastes #167099 Raw Edit

Miscellany

public text v1 · immutable
·published 2006-09-11 17:37 UTC
rendered paste body
ahoj dusan, 

module.users.php

tvoja query sice ukazuje posldny pristup uzivatela co sa tyka casu, ale kedze groupujes podla usr_id (ci id_usr, uz sa nepamatam presne) tak ti to vyhodi <b>lubovolnu</b> ipcku. v tomto pripade to vyhodi ipcku uplne prveho pristupu uzivatela do systemu, ale ako pisu na mysql stranke: 

"Do not use this feature if the columns you         omit from the GROUP BY part are not constant         in the group. The server is free to return any value from the         group, so the results are indeterminate unless all values are         the same."

http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-fields.html

takze riesenie je bud napisat nejaku este zlozitejsiu query a pouzit vnorene selecty alebo si pomoct v php: 



$res = mysql_db_query($db,"SELECT max(dt_log) as dtmax FROM ".$db_prefix."log WHERE usr_id != 1 GROUP BY usr_id ORDER BY dtmax DESC");
        
while ($rw = mysql_fetch_array($res))
{
                
$result=mysql_db_query($db,"SELECT ip_log, dt_log, id_usr, nm, icon, email, fon FROM ".$db_prefix."usr LEFT JOIN ".$db_prefix."log ON id_usr=usr_id WHERE dt_log = \"".$rw["dtmax"]."\"");

while ($row=mysql_fetch_array($result))
{
          
echo "<img src='gfx/icon".$row["icon"].".gif' border=0> <a href=\"javascript:otvor_okno('module.users.edit.php?id=".$row["id_usr"]."')\">".$r
ow["nm"]." <img src='gfx/clickout.gif' border='0'></a>, ".$row["email"];
          if ($row["fon"]) { echo ", ".$row["fon"]; }
          echo "<br>&nbsp; &nbsp; <span class=note>".$bk_nav[5][0]." <span class=frmsubj>".blogdate($row["dt_log"])."</span> ".$bk_nav[5][1]." <span cl
ass=frmsubj>".$row["ip_log"]."</span></span><br>";
        
} 

}
        
mysql_free_result($result);

si vsimni ze "adm" som vyhodil uz v query, nemusis ho vyhadzovat v php. (mozno by si mal spravit daco take aby sa adm nemohol logovat nikde inde ked uz to pouzivaju ludia he he ;) 

problem  tymto riesenim je ze cas definujes s presnostou na sekundy, teda ak za jednu sekundu stihne user dvakrat prist na stranku (napriklad vela klika refresh) tak sa ukaze v uzivateloch viackrat (podarilo sa mi 4krat :)

tot vsjo


tvoj ground