Autor Zpráva
Martin Pelák
Profil *
Ahoj,
mam problem.Potřeboval bych uložit do MySQl z PHP datum a čas.Nevim jak to uložit do typu Datetime.Myslel jsem takto, ale nějak mi to nefachá.Mělo by to být uloženo v tomhle formátu YYYY-MM-DD HH:MM:SS


$dotaz = "insert into zs_gb values(0,'{$_SESSION["id"]}'," . date("Y-m-d H:i:s") . ",'{$_POST["zprava"]}')";

Díky moc
Yuhů
Profil
Hm, častá chyba. Datum musíš do databáze posílat jako řetězec (v uvozovkách nebo apostrofech), nikoli jako číslo.

Takže se možná spletu, ale zkusil bych tohle:


$dotaz = "insert into zs_gb values(0,'{$_SESSION["id"]}','" . date("Y-m-d H:i:s") . "','{$_POST["zprava"]}')";

pokud nevidíš změnu, tak tam jsou dva apostrofy navíc.
Honza Hučín
Profil
Případně, pokud posíláš aktuální čas a datum, by mělo jít použít funkci now(), ta je přímo v mysql a vkládá se bez apostrofů.
Martin Pelák
Profil *
Díky moc,
fungujefo OK!Fakt díky.
Martin Pelák
Profil *
Mam ještě jeden dotaz...kde se dá něco dočíst o spojování tabulek?Z intervalu jsem toho moc nevyčetl.
Vytvořil jsem si tyhle tabulky
CREATE TABLE `zs_gb` (
`id` tinyint(3) NOT NULL auto_increment,
`id_uzivatele` tinyint(3) NOT NULL default '0',
`datum` datetime NOT NULL default '0000-00-00 00:00:00',
`zprava` text NOT NULL,
PRIMARY KEY (`id`)
)

CREATE TABLE `zs_uzivatele` (
`id` tinyint(3) NOT NULL default '0',
`nick` varchar(10) NOT NULL default '',
`password` varchar(10) NOT NULL default '',
`e-mail` varchar(30) NOT NULL default '',
`web` varchar(30) NOT NULL default '',
`icq` int(9) NOT NULL default '0',
PRIMARY KEY (`id`)
)

do tabulky zs_gb se uloží jen id uzivatele.A ja potřebuju aby se při vypsání zs_gb nahradilo to id uzivatele nickem z zs_uzivatel..kde se da něco dočíst..díky
Honza Hučín
Profil
Propojování tabulek se dělá v příkazu SELECT, a to klauzulí JOIN.
Například u tebe by to bylo
SELECT datum, zprava, nick FROM zs_gb JOIN zs_uzivatele ON zs_gb.id_uzivatele=zs_uzivatele.id;
(opravil HH - původně bylo chybně ...=zs_uzivatele.id_uzivatele)

Viz též
[url=http://dev.mysql.com/doc/mysql/en/SELECT.html
]http://dev.mysql.com/doc/mysql/en/SELECT.html
[/url]
http://dev.mysql.com/doc/mysql/en/JOIN.html
Martin Pelák
Profil *
Takhle rychlou odpoveď jsem nečekal, ale přesně takhle jsem to zkoušel a nic........................
ted jsme to vyzkoušel znovu a nic...jsem v koncích.Když zadám, že chci vypsat jenom tabulku zs_gb tak to vypíše.Nevim v čem je problém
Martin Pelák
Profil *
Už to mam je to takhle SELECT datum, zprava, nick FROM zs_gb JOIN zs_uzivatele ON zs_gb.id_uzivatele=zs_uzivatele.id;

DÍKY
SuE
Profil
sem se špatně koukla, tys už to mezitim vyřešil, tak nic, sry, smazněte mě, pls
Yuhů
Profil
jenom jedna prosba, Martine. Vždy, když řešíš nový problém, založ prosím nové téma.
Martin
Profil *
Jasný...teď už to vim...sorry
www.oknet.sk
Profil *
ja to prosto riesim tak, ze nastavim v tabulke format varchar a nastavim mu dlzku 19 znakov (to je presne YYYY-MM-DD HH:MM:SS).
Potom si cez php zistim aktualny cas ($datum = date("Y-m-d h:i:s");) a ulozim to do spominaneho pola.
llook
Profil
www.oknet.sk: Má to nějaké výhody? IMHO s takovým řetězcem nelze pracovat jako s datetimem. Například porovnávání. Jak vybereš všechny články z května? S typem datetime asi takhle:
SELECT * FROM table WHERE (datum > "2004-04-30 23:59:59") AND (datum < "2004-06-01 00:00:00")
Ale s řetězcem nevím.
llook
Profil
Ale jo, teď mě to trklo, daný problém by šlo s řetězcem docela snadno: WHERE datum LIKE "2004-05-%", ale jiné problémy by šli hůř. Krom toho, když vezmu konkrétně MySQL, pak ti to ve VARCHARu zabere 20 bytů (délka + 1), zatímco v datetime jenom 8 bytů.
zdick
Profil *
ja to resim tak, ze do db ukladam casovy razitka time() a zpracovavam to v php pomoci fce date.. Je to good, zadnej bordel v tom nemam a fajn se s tim da pracovat..
Toto téma je uzamčeno. Odpověď nelze zaslat.