Datum – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Datum – PHP – Fórum – Programujte.comDatum – PHP – Fórum – Programujte.com

 

x-flyer
~ Anonymní uživatel
6 příspěvků
21. 6. 2007   #1
-
0
-

mám tento kod


<?

include "config.php";

$query=mysql_query("select *,DATE_FORMAT(datum,'%d.%m.%Y') as datum from
evidence order

by id DESC LIMIT 0,20");

while ($zaznam=mysql_fetch_array($query)):

$date=$zaznam["datum"];

$p=explode(".",$date);

$den=$p[0];

$mesic=$p[1];

$rok=$p[2];

?>



a potřebuji aby mě to vypsalo např. Středa, 20. června 2007. Pomocí explode jsem
si řetěž rozdělil, ale už nevím jak mám dál, sice mě napadlo, že bych mohl
použít str_replace, ale to by bylo asi hodně zdlouhavé. Určitě existuje nějaké
lepší řešení. Prosím o radu..dík

Nahlásit jako SPAM
IP: ...–
Dominik0
Super člen
21. 6. 2007   #2
-
0
-

vytvor si pole dnu :

$dny[0]="pondeli";

........

potom si zjisti mktime() tvyho data
$cas=mktime(0,0,0,$mesic,$den,$rok);

a potom si dej zjistit fcí date() index dne :
$den=date("w",$cas);

echo $dny[$den];

Je to psaný na rychlo ! takže doufam že to mam dobře !

Nahlásit jako SPAM
IP: ...–
x-flyer
~ Anonymní uživatel
6 příspěvků
21. 6. 2007   #3
-
0
-

To don_Dominique:MOhl bys až budeš mít více času to zkusit propojit s mým víše uvedeným skriptem, mě to nefunguje..díky

Nahlásit jako SPAM
IP: ...–
Prog.0
Věrný člen
21. 6. 2007   #4
-
0
-

Pripomienka:

"select *,DATE_FORMAT(datum,'%d.%m.%Y') as datum
..vrati result v ktorom budes mat stlpec datum dva-krat. Ked z neho vytvoris pole (mysql_fetch_array()), tak pod indexom datum uz budes mat iba udaj (z posledneho stlpca) Ciselne indexy sa zachovaju. (...trocha pakaren).


[podtrzene]Postup, toho, co vlastne chces je takyto:[/podtrzene]

1. potrebujes z db dostat datum (SELECT from...)
2. potrebujes vypocitat UNIX_TIMESTAMP - cas aky pouziva PHP ([podtrzene]don_Dominique[/podtrzene] pouzil mktime())
3. potrebujes vypisat tento cas v pozadovanom tvare.


body 1 a 2 sa daju jednoducho spojit:

Z databazy mozes vyberat datum priamo v unixovom tvare, usetris tak cas a pracu php-cku:
SELECT UNIX_TIMESTAMP(datum) as ux_time...
Problem moze sposobit posuvanie casovych zon v MySQL, UNIX_TIMESTAMP('1970-01-01 00:00:01') nemusi vratit 1 (datum sa najprv prevedie do gtm a az tak sa pocita timestamp), preto, ak si niesi isty, existuje univerzalne riesenie:
SELECT UNIX_TIMESTAMP(CONVERT_TZ(datum, '+0:00', 'SYSTEM')) as ux_time

[podtrzene]k bodu 3 mas 2 moznosti:[/podtrzene]

3.1. nastavit jazyk pre fciu date() a uz len vypisat. -- najjednoduchsia moznost
3.2. Rozlozit timestamp na casti (rok, mesiac, den, den v tyzdni,...) a postupne vypisat.

3.1.) Zavolas setlocale(LC_TIME, 'cs'); a fcia date() bude vypisovat vsetko v cestine... (zalezi ci system cestinu podporuje)

3.2.) definujes si pole dni a mesiacov, ako navrhol [podtrzene]don_Dominique[/podtrzene]:
$dni = Array('pondelok','utorok','streda',...);

$mesiace = Array(1=>'januar', 'februar', 'marec', ...); // indexovanie od 1 (inak by bolo od 0)

a jednoducho vypisujes:
echo $dni[date('w',$timestamp)].', '.

date('j',$timestamp).'. '.
$mesiace[date('n',$timestamp)].' '.
date('Y',$timestamp);



[podtrzene]Priklad s pouzitim setlocate:[/podtrzene]

setlocale(LC_TIME, 'cs');

$t=MySQL_query("SELECT UNIX_TIMESTAMP(CONVERT_TZ(datum, '+0:00', 'SYSTEM')) as ux_time FROM ...");

while($r = MySQL_fetch_assoc($t))
{
..
echo date( 'l, j. F Y', $r['ux_time'] );
..
}
MySQL_free_result($t);


http://www.php.net/setlocale
http://www.php.net/date
http://dev.mysql.com/doc/refman/4.1/en/time-zone-support.html
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_unix-timestamp

Nahlásit jako SPAM
IP: ...–
Prog.
Ondrej Juríček
~ Moderátor
0
Stálý člen
21. 6. 2007   #5
-
0
-
Nahlásit jako SPAM
IP: ...–
Prog.0
Věrný člen
21. 6. 2007   #6
-
0
-

To OndreJ: lol, skor to druhe ;-)
V tomto vlakne chceme vypisat "...např. [podtrzene]S[/podtrzene]tředa, 20. června 2007", pričom pred tym "...např. [podtrzene]s[/podtrzene]tředa, 20 června 2007"

...takze ake dejavu, ved tam je rozdiel ?!




Nahlásit jako SPAM
IP: ...–
Prog.
x-flyer
~ Anonymní uživatel
6 příspěvků
22. 6. 2007   #7
-
0
-

Nějak mi to nefunguje. Mohl by mi prosím někdo zkusi propojit uvedený skript s tímto:
<?

include "config.php";

$query=mysql_query("select *,DATE_FORMAT(datum,'%d.%m.%Y') as datum from
evidence order

by id DESC LIMIT 0,20");

while ($zaznam=mysql_fetch_array($query)):

$date=$zaznam["datum"];

$p=explode(".",$date);

$den=$p[0];

$mesic=$p[1];

$rok=$p[2];

?>

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Podobná vlákna

Datum — založil Bloodman

Dátum — založil Onsi

Datum — založil survik1

Dátum — založil jurinecko

Datum? — založil jozo

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý