Autor | Zpráva | ||
---|---|---|---|
mikina58 Profil |
Ahoj všichni zasvěcení,
mám prosbičku, lámu si s tím hlavu už dlouho a nikde jsem nenašel "odpověď" Tak to zkusím i zde a věřím, že se tu najde někdo, kdo řešil podobný problém jako já. Mám tabulku 'kalendarakci' kde je ID, Datum, Nazev, DruhZavodu, Typ. Výpis těchto dat mám na základě selectu option, kde se uživatelé rozhodují vypsat závody dle druhu (silniční, MTB) a kliknutí na SUBMIT se mi akce vypíší, ale potřeboval bych, aby se vypsaly pouze následující data (závody) od aktuálního dne, zkrátka aby se ty závody, které byly již odjety, nezobrazovaly. Je to vůbec v rámci SELECT * možné takto udělat? Výpis mám pouze řazen dle data, vím že je funkce DATE_SUB(CURDATE() INTERVAL 30 DAY) nebo něco podobného, ale píše mi to vždy chyby. $vypis = "SELECT * FROM kalendarakci WHERE DruhZavodu='$id' ORDER BY Datum"; Díky za rady ;) |
||
Kcko Profil |
WHERE Datum >= '.date("Y-m-d").' |
||
mikina58 Profil |
#3 · Zasláno: 7. 3. 2014, 15:03:09
Kcko:
Děkuji za rychlou odpověď, a kód... Zkoušel jsem to tam nasadit viz.: $vypis = "SELECT * FROM kalendarakci WHERE DruhZavodu='$id' ORDER BY Datum WHERE Datum >= '.date("Y-m-d").'; ale asi bude chyba někde v uvozovkách, nebo úplně někde jinde? :) |
||
Kcko Profil |
Tak samozřejmě ;-), to bys měl vidět i editoru.
$vypis = "SELECT * FROM kalendarakci WHERE DruhZavodu='$id' ORDER BY Datum WHERE Datum >= ".date('Y-m-d'); |
||
juriad Profil |
Kcko:
Ale ty apostrofy tam zůstat musí a samozřejmě, ORDER BY musí být až na konci a podmínky musejí být spojené ANDem. $vypis = "SELECT * FROM kalendarakci WHERE DruhZavodu='$id' AND Datum >= '" . date('Y-m-d') . "' ORDER BY Datum"; Případně je možné na úrovni databáze použít funkci CURDATE(): $vypis = "SELECT * FROM kalendarakci WHERE DruhZavodu='$id' AND Datum >= CURDATE() ORDER BY Datum"; |
||
Kcko Profil |
#6 · Zasláno: 7. 3. 2014, 15:21:40
juriad:
Máš pravdu, napsal jsem totální blbost ... K tvému druhému příkladu, jistě to víš, nebude se to kešovat, není to dobré ... lepší předpřipravit v PHPku. |
||
juriad Profil |
#7 · Zasláno: 7. 3. 2014, 15:27:35
Kcko:
Vím. Nemyslím si však, že je to velká výkonová ztráta. mikina58 jistě netvoří web u kterého by na milisekudách záleželo. Jako větší problém považuji to, že dotaz neumožňuje zadat jiný počáteční datum. Třeba takové prohlížení akcí po měsících by vyžadovalo záměnu funkce CURDATE za něco jiného a byli bychom zase na začátku. |
||
mikina58 Profil |
#8 · Zasláno: 7. 3. 2014, 15:32:47 · Upravil/a: mikina58
Tak vy jste jiní mágové :D díky moc, já to fakt hledal na zahraničních fórech a nic jsem nenašel, co by mi pomohlo. Zde jsem se registroval a za cca 15min jsem dostal správnou odpověď, neuvěřitelné! :) jinak je potřeba dodat, že jsem samouk a v tomto ohledu jsem 120% začátečník. Tak proto taková velká radost... Tak ještě jednou díky! Vložil jsem:
$vypis = "SELECT * FROM kalendarakci WHERE DruhZavodu='$id' AND Datum >= '" . date('Y-m-d') . "' ORDER BY Datum"; Fakt dík! Super Určitě jde o nenáročný webík jednoho cyklistického klubu, ani nevím, zda je povoleno sem vkládat případné odkazy na web. Takže ještě jednou dík! |
||
Časová prodleva: 8 dní
|
|||
mikina58 Profil |
Ahoj kluci,
řešil jsem výpis jiného formátu data z databáze a tak jsem přidal do vypisu DATE_FORMAT.....: $vypis = "SELECT *, DATE_FORMAT(Datum, '%d.%m.') as Datum FROM kalendarakci WHERE DruhZavodu='$id' AND Datum >= '" . date('Y-m-d') . "' ORDER BY Datum"; Vypíše se mi například závod, který se jede 11.4. takže super a tak jsem to chtěl, ale přestaly se mi data řadit dle data uloženého v databazi - vzestupně. Neporadili byste mi, jak to přeformulovat? ORDER BY Datum jsem zkoušel dávat v jiném pořadí, ale hází to chyby a stejně by měl být order by neco až na konci
Nebo tech dotazu je tam az tolik, že uz to není schopno pobrat? Díky za každý názor |
||
Fisir Profil |
#10 · Zasláno: 15. 3. 2014, 17:21:46
Reaguji na mikinu58:
Neboj, dotazů tam tolik není, existují větší hrůzy. Pro opačné pořadí řazení zkus ORDER BY Datum DESC .
|
||
juriad Profil |
#11 · Zasláno: 15. 3. 2014, 17:26:53
mikina58:
Tím, že jsi si pojmenoval výstup funkce DATE_FORMAT(Datum, '%d.%m.') stejně jako sloupec v databázi, bude ti ORDER BY řadit podle formátovaného datumu abecedně, nikoli datumově. Přejmenuj ten alias.
Možná by mohlo ještě fungovat ORDER BY kalendarakci.Datum , vynutit, že chceš radit podle sloupce v databázi.
|
||
mikina58 Profil |
#12 · Zasláno: 15. 3. 2014, 17:30:01
Fisir:
Díky za reakci, možná jsem to napsal špatně, ale data se mi namísto řazení dle data, ať už je to vzestupně či sestupně, řadí zkrátka na přeskáčku, takže se mi závody vypisují např.: 11.4. 20.3. 22.6. 9.5. atd. když vymažu: , DATE_FORMAT(Datum, '%d.%m.') as Datum tak se to dle data začne řadit. Ale když tam ten formát data přidám, řadit to přestane :) |
||
Fisir Profil |
#13 · Zasláno: 15. 3. 2014, 17:30:43
Reaguji na mikinu58:
Viz [#11] juriad. |
||
mikina58 Profil |
#14 · Zasláno: 15. 3. 2014, 17:43:58 · Upravil/a: mikina58
juriad:
Díky, tak to mě nenapadlo, že by to mohlo kolidovat s tou funkcí, použil jsem tu druhou variantu a vše funguje, takže opět velký dík... :) Použito: ORDER BY kalendarakci.Datum Díky a pěkný zbytek víkendu Fisir: Díky i Tobě, super... |
||
Časová prodleva: 10 let
|
0