phpRS help fórum : phpRS Fórum
Hlavní diskuzní phpRS fórum. Najdete zde odpovědi na otázky týkající se provozu a instalace phpRS systému.
phpRS - redakční a informační systém
Žádost o pomoc s MySQL dotazem
Zaslán uživatelem/kou: martinf (IP adresa zaznamenána)
Datum: 2013-11-10, 14:53

Potřeboval bych radu od někoho zkušeného.

V databázi mám tabulku se jmény žáků školy a u každého den, měsíc a rok narození (každý z údajů je v samostatném sloupci). Potřebuji poradit s s SQL dotazem, ve kterém se nadefinuje pro den, měsíc a rok nový údaj datum_narozeni.

$dotaznarozeniny = mysql_query("select jmeno, prijmeni, trida, XXXXXXX as datum_narozeni from ".$GLOBALS["rspredpona"]."narozeniny where datum_narozeni>='".$dnes."'",$GLOBALS["dbspojeni"]);


Místo XXXXXXX bych potřeboval doplnit kus dotazu, který z den, mesic a rok složí datum narození.

Zkusil jsem toho hodně, ale na rovinu netuším, zda je to vůbec možné.

Moc děkuji

Martin Fous [http://www.zsjvm.cz]

Re: Žádost o pomoc s MySQL dotazem
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2013-11-10, 16:16

martinf napísal/a:
-------------------------------------------------------
> Potřeboval bych radu od někoho zkušeného.
>
> V databázi mám tabulku se jmény žáků školy a u
> každého den, měsíc a rok narození (každý z údajů
> je v samostatném sloupci).

Toto je chyba v návrhu. Dátum narodenia by mal byť typu DATE, inak prichádzaš o možnosti jednoduchej práce s dátumom na úrovni databázy. Pozri na dátumové funkcie v MySQL, máš tam NOW(), DATE_ADD a dalšie skvelé veci: [http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html]

> Potřebuji poradit s s
> SQL dotazem, ve kterém se nadefinuje pro den,
> měsíc a rok nový údaj datum_narozeni.
>
> $dotaznarozeniny = mysql_query("select jmeno,
> prijmeni, trida, XXXXXXX as datum_narozeni from
> ".$GLOBALS["rspredpona"]."narozeniny where
> datum_narozeni>='".$dnes."'",$GLOBALS["dbspojen
> i"]);
>
>
> Místo XXXXXXX bych potřeboval doplnit kus dotazu,
> který z den, mesic a rok složí datum narození.

Mrkni na funkciu CONCAT [http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat]
SELECT CONCAT(den_narozeni,".", mesic_narozeni, ".", rok_narozeni) AS datum_narozeni FROM trida;
Ak by si mal v databáze dátum narodenia vo formáte DATE, vo WHERE by si mohol použiť NOW().



Re: Žádost o pomoc s MySQL dotazem
Zaslán uživatelem/kou: martinf (IP adresa zaznamenána)
Datum: 2013-11-10, 20:42

Děkuji.

Je mi jasné, že to není úplně ideální. V minulosti jsem dělat plugin pro zobrazení oslavenců. Zde se mi hodilo, že jsou v tabulce sloupce jmeno, prijmeni, trida, den, mesic, rok (na mém webu je to napravo).

Pokud by to nešlo spojit, plugin bych musel předělal.

Martin Fous [http://www.zsjvm.cz]

Re: Žádost o pomoc s MySQL dotazem
Zaslán uživatelem/kou: Lonanek (IP adresa zaznamenána)
Datum: 2013-11-11, 08:27

Jak již psal Pa3k, všechno jde. Jen takhle poskládané to není to pravé na práci s datumovými proměnnými.
Není to moc pohodlné na vyhledávání, řazení, třídění, ... a rychlost.


Citace:
SELECT CONCAT(den_narozeni,".", mesic_narozeni, ".", rok_narozeni) AS datum_narozeni FROM trida;

Rozhodně bych použil v tabulce formát DATE místo stávajících 3 sloupců.
Také v inputu je lepší použít type="date", než 3x zadávat číselnou proměnnou a provádět její kontrolu.


* Klub kuželkářů Zálabák, Hankova 62, 503 03 Smiřice (Endora) * X X * Stránky ČZS ZO Třešňovka2 * X X * Cvičný phpRS web (WZ) * X X * Testovací phpRS web (WZ) *
* cvičná verze phpRS v 2.8.2 * X X * testovací web CMS *

Re: Žádost o pomoc s MySQL dotazem
Zaslán uživatelem/kou: JanVar (IP adresa zaznamenána)
Datum: 2013-11-13, 21:15

a co předělat plugin i tabulku si upravit. možná by to bylo rychlejší i pro tebe do budoucna
(NJ, já vím, jak se něco udělá, už se to měnit nechce...)

-- JaV ---- [http://www.hades.cz] ---- security by obscurity ---------------------------------------------
motto:
It's OK to be ignorant; it's not OK to play stupid.
But it's simply not efficient for us to try to help people who are not willing to help themselves.
----------------------------------------------------------------------------------------------------------------------

Re: Žádost o pomoc s MySQL dotazem
Zaslán uživatelem/kou: martinf (IP adresa zaznamenána)
Datum: 2013-11-13, 21:59

Máte pravdu, předělám to.

Díky.

Martin Fous [http://www.zsjvm.cz]

Re: Žádost o pomoc s MySQL dotazem
Zaslán uživatelem/kou: martinf (IP adresa zaznamenána)
Datum: 2013-11-23, 21:37

Tak jsem tu znovu. Našel jsem trochu času na předělání pluginu, kde jsou narozeniny, a už u toho sedím snad hodinu.

Tabulku s daty jsem předělal. Je v ní jmeno, prijmeni, trida, narozeni (narozeni je ve formátu date 2007-05-25)

Mám problém s podmínkou v dotazu:

$dotazzaznamy = mysql_query("select jmeno,prijmeni,trida,narozeni from ".$GLOBALS["rspredpona"]."narozeniny where $dnesniden=XXXXXXX",$GLOBALS["dbspojeni"]);

Poraďte mi prosím.

Martin Fous [http://www.zsjvm.cz]

Re: Žádost o pomoc s MySQL dotazem
Zaslán uživatelem/kou: Lonanek (IP adresa zaznamenána)
Datum: 2013-11-23, 22:09

Jak je definovaná proměnná $dnesniden a co znamená XXXXXXX.
V podmínce WHERE postrádám sloupec tabulky, kterého by se měla podmínka týkat.

Co chcete dotazem získat???


* Klub kuželkářů Zálabák, Hankova 62, 503 03 Smiřice (Endora) * X X * Stránky ČZS ZO Třešňovka2 * X X * Cvičný phpRS web (WZ) * X X * Testovací phpRS web (WZ) *
* cvičná verze phpRS v 2.8.2 * X X * testovací web CMS *

Re: Žádost o pomoc s MySQL dotazem
Zaslán uživatelem/kou: martinf (IP adresa zaznamenána)
Datum: 2013-11-24, 07:43

Omlouvám se, zkusím to znovu.

Jak z diskuze výše vyplývá, měl jsem v tabulce dříve u každého žáka datum narození rozepsaný do tří sloupců (den, měsíc a rok). Oslavence pro dnešní den jsem našel tak, že jsem hledal děti, které mají den a měsíc narození shodný s dnešním dnem a měsícem. Věk jsem zjistil jako rozdíl jejich roku narození a aktuálního roku.
Vzhledem k tomu, že jsem chtěl data z tabulky využít i pro něco jiného (viz výše), bylo mi doporučeno tabulku s daty změnit a datum narození tam mít v jednom sloupci. Narazil jsem tak ale na problém, jak najít dnešní oslavence.
Stačit mi bude jen nakopnutí správným směrem. Chybí mi totiž nápad, jak celý datum narození použít.

Martin Fous [http://www.zsjvm.cz]

Re: Žádost o pomoc s MySQL dotazem
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2013-11-24, 19:14

inšpirácia:

SELECT * FROM `users` WHERE MONTH(`datum_narozeni`)=MONTH(NOW()) AND DAYOFMONTH(`datum_narozeni`)=DAYOFMONTH(NOW());


alebo:

SELECT * FROM `users` WHERE DATE_FORMAT(`datum_narozeni`, '%m%d') = DATE_FORMAT(NOW(), '%m%d');

Re: Žádost o pomoc s MySQL dotazem
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2013-11-24, 19:17

Ak by si chcel zobraziť napríklad 15 dní vopred:
SELECT `geb_Geboorte`
FROM `gebruikers`
WHERE
DAYOFYEAR( curdate( ) ) <= dayofyear( `geb_Geboorte` )
AND
DAYOFYEAR( curdate( ) ) +15 >= dayofyear( `geb_Geboorte` );

Re: Žádost o pomoc s MySQL dotazem
Zaslán uživatelem/kou: martinf (IP adresa zaznamenána)
Datum: 2013-11-24, 20:22

super, moc ďakujem

Martin Fous [http://www.zsjvm.cz]



Lituji, ale pouze registrovaní uživatelé mohou zasílat příspěvky do této sekce.
This forum powered by Phorum and designed by STaNBoSS.