IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Filtrování

Aktivity
Avatar
Robin Mokrý
Člen
Avatar
Robin Mokrý:15.11.2018 17:23

Zdravim :)
Pokouším se naprogramovat filtrování a pro tento účel vybrat všechny řádky z tabulky “datum_kurzu” kde v řádku “datum” mám vždy uložené datum v klasickém tvaru yyyy-mm-dd
$rok beru z dropdown formuláře a $mesic to samé
Vše funguje, pokud vyberu měsíc 10 11 nebo 12, problém nastává u měsíců 01 - 09, kde mi databáze nic nevrátí :( Můžete, prosím, poradit?:)

Zkusil jsem: $datumy = Db::queryAll("
SELECT *
FROM datum_kurzu
WHERE datum LIKE '$rok-$mesic-__'
AND klient LIKE '$klient'
AND lektor LIKE '$lektor'
ORDER BY datum ASC
");

 
Odpovědět
15.11.2018 17:23
Avatar
Odpovídá na Robin Mokrý
Honza Prosecký:15.11.2018 21:58

Pouzivas mysql? Zkus z toho vytvorit ym z toho vstupu a v databazi nad polem datum DATEFORMAT(da­tum,'%Y%m').

 
Nahoru Odpovědět
15.11.2018 21:58
Avatar
Pavel Mareš
Tvůrce
Avatar
Pavel Mareš:15.11.2018 22:58

Úplně nechápu to '-__' ... Druhak, máš data měsíců v "09" nebo v "9" formátu? Dvě rozdílné věci. Za třetí, ukládej timestamp místo YYYY-mm-dd.

Nemusíš řešit tyhle patvary Ale vysvětli mi prosím řádku

WHERE datum LIKE '$rok-$mesic-__'

A když máš formát YYYY-mm-dd, tak proč ty podtržítka 2? Možná něco nechápu ... a "LIKE" není "==" To bych začal používat spíše ... Navíc mám pocit, a w3s mi to dokládá, že u LIKE parametru musí být i % (aby LIKE dáválo smysl) - https://www.w3schools.com/…sql_like.asp.

Editováno 15.11.2018 22:59
Nahoru Odpovědět
15.11.2018 22:58
Však ono půjde ...
Avatar
Odpovídá na Pavel Mareš
Uživatel sítě :15.11.2018 23:11

V timestampu nemáš snad formát data YYYY-MM-DD (YYYY-MM-DD HH:MI:SS, myslím si, že ho tam vidím.)?

Nerozumím označení formátu YYYY-MM-DD jako patvar. :-S

Nahoru Odpovědět
15.11.2018 23:11
Chybami se člověk učí, běžte se učit jinam!
Avatar
Robin Mokrý
Člen
Avatar
Robin Mokrý:16.11.2018 0:03

Velice děkuji za odpovědi a trpělivost, s php pracuji pár měsíců a s mysql něco přes týden. Chybu už jsem našel, byla to moje blbost - kód funguje, s nulou to nemělo nic společného, jen jsem vypisoval špatný rok, kde jsem zadané měsíce neměl uložené.

K otázkám:
'-__' - má reprezentovat dd, kde mi je jedno, jaký den tam bude, protože filtrování dnů ve formuláři nepoužívám.

S mysql pracuji týden a dělám mnoho věcí spíš pokus-omyl, tak se omlouvám :).

 
Nahoru Odpovědět
16.11.2018 0:03
Avatar
Pavel Mareš
Tvůrce
Avatar
Odpovídá na Uživatel sítě
Pavel Mareš:16.11.2018 11:48

Pro borce výše - timestamp má být úplně univerzální časová značka na milisekundy přesná, kdy z toho pomocí funkce je program schopen zobrazit datum v libovolném formátu.

Když budu řešit vše pomocí konkrétního formátu, jak zajistím jiný format v jiné zemi? Co americká verze YYYY-DD-MM? Dělat funkci na přehození formátu? Není to trochu zbytečný?

Robin Mokrý Pokud dáváš like, koukni na ten odkaz, co tam mám ... právě to, co chceš by mohlo být LIKE '$rok-$mesic%' ... další znaky nejsou potřeba ...

Nahoru Odpovědět
16.11.2018 11:48
Však ono půjde ...
Avatar
Odpovídá na Pavel Mareš
Uživatel sítě :16.11.2018 12:44

Když budu řešit vše pomocí konkrétního formátu, jak zajistím jiný format v jiné zemi? Co americká verze YYYY-DD-MM? Dělat funkci na přehození formátu? Není to trochu zbytečný?

A co to také řešit pomocí funkce jak jsi navrhoval v prvním odstavci? De-facto si druhým protiřečíš. :-?

Nahoru Odpovědět
16.11.2018 12:44
Chybami se člověk učí, běžte se učit jinam!
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.