Autor | Zpráva | ||
---|---|---|---|
thebigheead Profil |
#1 · Zasláno: 11. 10. 2015, 19:26:22
Zdravím, potřeboval bych poradit s PHP a MySQL. Potřebuji vypsat data z databáze (přesněji jsou to transakce), které byli přidány v aktuálním měsíci. To znamená, že dnes by se vypsali transakce, které proběhli za měsíc říjen. Příští měsíc za listopad atd atd.. Rád bych do toho ještě zakomponoval formulář a input SELECT. Tam bych si vybral měsíc, který chci zobrazit (default bude samozřejmě ten aktuální). Nejdřív ale potřebuji vědět, jak vypsat ty data. Poradí mi někdo, jak na to? Vím, že se to musí dělat přes SELECT a v něm podmínku, ale ještě jsem s tím nikdy nepracoval. Díky moc
|
||
lionel messi Profil |
#2 · Zasláno: 11. 10. 2015, 19:33:13
thebigheead:
V prvom rade základná otázka: Aký stĺpec (stĺpce?) používaš pre ukladanie db a v akom formáte (2015-10-11, 11. 10. 2015 alebo niečo úplne iné)? „Vím, že se to musí dělat přes SELECT a v něm podmínku,“ S tým ti pomôže klauzula WHERE. |
||
thebigheead Profil |
#3 · Zasláno: 11. 10. 2015, 19:46:43
Sloupec se jmenuje datum a ukládám do něj formát date('Y-m-d').
|
||
lionel messi Profil |
thebigheead:
„Sloupec se jmenuje datum a ukládám do něj formát date('Y-m-d').“ SELECT *, MONTH(datum) AS mesic FROM tabulka WHERE mesic = $_POST['mesic'] Pozor! Kód v tejto podobe predpokladá ošetrenie užívateľského vstupu $_POST['mesic'] (ideálne pomocou intval - pretypovania na číslo), inak skrýva závažnú bezpečnostnú chybu.
$_POST['mesic'] samozrejme zodpovedá vstupu napr. z formulára. Ešte pre istotu doplním, že tabulka treba nahradiť skutočným názvom tabuľky. :-)
|
||
Alphard Profil |
#5 · Zasláno: 11. 10. 2015, 21:14:17
[#4]:
V tomhle řešení je takový hezký Easter egg, který uživatelé najdou přesně za rok. |
||
lionel messi Profil |
#6 · Zasláno: 11. 10. 2015, 21:25:35
Alphard:
„V tomhle řešení je takový hezký Easter egg, který uživatelé najdou přesně za rok.“ Ja ho tam nenájdem ani o 2 roky, mohli by ste mi ho, prosím, prezradiť? Na zraniteľnosť som dôrazne upozornil, evidentne však narážate na niečo celkom iné. |
||
Keeehi Profil |
#7 · Zasláno: 11. 10. 2015, 21:30:01
lionel messi:
Příští rok je přestupný, tak to bude asi ono. |
||
juriad Profil |
Keeehi:
Ee. :-) lionel messi: ŘIjen je teď, bude za rok, bude i za ty dva. Ty filtruješ ne letošní říjen, ale jakýkoli říjen. V dotazu máš navíc hrubou chybu - nelze se ve WHERE odkazovat na sloupce definované v SELECTovací části dotazu. Správným řešením je mít v tom selectu na stránce měsíce včetně roku: 2015-10 2015-11 ... 2016-10 ... $zacatek = $rokmesic . '-01'; # plus ošetření vstupu proměnné, která pochází z formuláře $konec = next_month($zacatek); # pro vhodně definovanou funkci next_month $sql = "SELECT * FROM tabulka WHERE datum >= '$zacatek' AND datum < '$konec'"; |
||
Časová prodleva: 9 let
|
0