Autor Zpráva
Ex1T
Profil
Ahoj,

snažím sa pochopiť fungovanie času/dátumu v SQL, prečítal som snáď celé google, poskúšal snáď 1337 návodov no nič nefungovalo.
Môj problém:

Mám script ktorý zaznamená informácie o každom kto príde na určitú stránku a uloží ich do DB (IP, čas, DNS, odkiaľ prišiel a čas).

$ip=$_SERVER['REMOTE_ADDR'];
$dns=gethostbyaddr($_SERVER['REMOTE_ADDR']);
$prehliadac=$_SERVER['HTTP_USER_AGENT'];
$referer=$_SERVER['HTTP_REFERER'];
$cas=Time();
$query="insert into pristupy (ip,dns,prehliadac,referer,cas) values('$ip','$dns','$prehliadac','$referer',$cas)";
if(mysql_query($query)){ echo "TVOJA IP ADRESA = ".$_SERVER['REMOTE_ADDR'].""; }   
mysql_close();

Potom mám súbor, kde tieto informácie môžem čítať:

$query=mysql_query("select * from pristupy");
if(mysql_num_rows($query)>0){
while($riadok = mysql_fetch_object($query)){ 
echo "<table border='0' width='700px' align='center'>";
echo "<tbody>";
echo "<tr>";
echo "<td style='text-align: center;'><b>IP</b></td>";
echo "<td style='text-align: center;'><b>DNS</b></td>";
echo "<td style='text-align: center;'><b>Čas</b></td>";
echo "<td style='text-align: center;'><b>Odkiaľ</b></td>";
echo "</tr>";
echo "<tr>";
echo "<td>$riadok->ip</td>";
echo "<td>$riadok->dns</td>";
echo "<td>$riadok->cas</td>";
echo "<td><a href='$riadok->referer' target='_blank'>Odkaz</a></td>";
echo "</tr>";
echo "</tbody>";
echo "</table>";
}
}

mysql_close();

Ten čas mi robí najväčší problém, v DB sa mi ukladá ako 1393440201 a ja to potrebujem uložiť do formátu deň,mesiac,rok hodina,minúta, teda potrebujem aby sa mi v súbore zobrazilo miesto 1393440201 normálny deň, mesiac, rok hodina,minúta.

Nájde sa niekto, kto má chvíľku čas a pohrá sa s tým? PREDOM VEĽKÉ ĎAKUJEM !
Joker
Profil
Ex1T:
Hledáte funkci DATE_FORMAT.

Samozřejmě datový typ příslušného sloupce by měl být DATETIME.

Například standardní český formát by byl:
SELECT DATE_FORMAT(cas, "%e. %c. %Y %h.%i:%s") AS f_cas FROM tabulka
Fisir
Profil
Reaguji na Ex1Ta:
Místo PHP funkce time() použij MySQL funkci NOW():
$query="insert into pristupy (ip,dns,prehliadac,referer,cas) values('$ip','$dns','$prehliadac','$referer',NOW())";
Dále bych escapoval a příště nepoužil mysql_*.
Ex1T
Profil
Díky moc chalani,

Joker dokázal by si mi to dať priamo do súboru? Teda do

echo "<td>$riadok->cas</td>";

akosik sa mi to nedarí, netuším kde robím chybu
Kajman
Profil
Místo dotazu na řádku 1 dáte dotaz i s tím formátováním
select p.*, DATE_FORMAT(p.cas, "%e. %c. %Y %h.%i:%s") AS f_cas from pristupy p
a pak stačí použít ten nový sloupec
echo "<td>{$riadok->f_cas}</td>";
Ex1T
Profil
Kajman, ďakujem aj keď kód nešiel tak ako má - vypisovalo mi chybu:

Parse error: syntax error, unexpected T_STRING in .....................

popýtal som sa profesionálneho programátora s nickom djmeta (viď. jeho stránka djmetla.eu) a on mi poradil, nech nepoužívam:
DATE_FORMAT(p.cas, "%e. %c. %Y %h.%i:%s") AS f_cas f

pretože to je zbytočne náročné a v riadku ako mám
$riadok->f_cas
som dal:
date("Y-m-d H:i:s", $riadok->cas);
a teraz to funguje TIP-TOP

Týmto vás nejdem kritizovať, všetci sme ľudia ktorí sa učia celý život, chcem ti pomôcť. A píšem to tu keby niekto z google narazil na podobný problém. Funguje to parádne

Ďakujem Kajman, Fisir a Joker za snahu a samozrejme aj djmetlovi. Neviem či sa u vás zamykajú témy, ale ak chcete, tak to môžete uzamknúť ako vyriešené.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: