Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql][php] Zapytanie mysql
in5ane
post
Post #1





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Elo, jak mam skonstruować zapytanie mysql, aby mi wyświetlało wszystkie imprezy późniejsze niż dzień dzisiejszy bądź równe dniu dzisiejszemu.

To co skombinowałem to nie działa :/

  1. <?php
  2. $rok = date('Y');
  3. $msc = date('m');
  4. $queryq = "SELECT * FROM page_imprezy WHERE status = '2' AND miesiac >= $msc AND rok >= $rok";
  5. ?>



@edit: a może pierw powiedźcie jak będzie lepiej. Bo będę musiał trzymać datę imprezy w bazie, to byłby nie problem, ale problemem będzie jak będzie data np. 15-18.02.2008, to trzymać to może w polu text czy varchar i explodem sobie rozbić i wtedy do zapytania i datę do wyświetlenie też bym tak miał, proszę o pomoc.

Ten post edytował in5ane 8.11.2007, 21:11:51


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


a moze zrob tak zapisuj razem z impra date i potem rob zapytanie na koncu daj order by data desc i zrob if'a ze jezeli data jest starsza niz ta co ci potrzebna to nie wyswietlaj albo na odwrot


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
rolnix
post
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 16.04.2005
Skąd: Białowieża

Ostrzeżenie: (0%)
-----


Trzymaj datę jako typ date. Masz operatory porównania, > oraz <. Funkcję php'ową mktime też.

Ten post edytował rolnix 8.11.2007, 21:24:55


--------------------
Go to the top of the page
+Quote Post
in5ane
post
Post #4





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Zacznę od nowa.

Chcę tak zrobić, że ma wyświetlić mi tylko imprezy, które odbywają się dnia dzisiejszego albo później, te które się już odbyły to mają się nie wyświetlać.
Tylko jest jeden problem, bo data może wyglądać np. tak:
15-19.11.2007
24.12.2007
5.5.2008
i moje pytanie brzmi, jak trzymać w bazie taką datę (może pole text) i jak mam skonstruować zapytanie do tego.

Z góry dziękuję smile.gif


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
nevt
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


najlepiej jak zrobisz dwie kolumny: imp_start, imp_stop, obie typu DATE
oczywiście dla imprezy 1 dniowej musisz zapisywać do obu pól tą sama datę,
ale wyszukiwanie będzie za to bardzo proste:
  1. SELECT * FROM imprezy WHERE imp_start >= CURDATE() OR imp_stop >= CURDATE();


Piszę z ręki i nie mam gdzie sprawdzić, ale powinno działać...


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
in5ane
post
Post #6





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


No dobra, ale jak mam wyświetlać później datę?
Żeby wyświetliło poprawnie...


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
nevt
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


tak na przykład:
  1. SELECT CONCAT(IF(imp_start=imp_stop, '', DATE_FORMAT(imp_start, '%d-')), DATE_FORMAT(imp_stop, '%d.%m.%Y')) AS imp_data FROM imprezy;

chociaż łatwiej byłoby to obrobić po stronie PHP...


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
in5ane
post
Post #8





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


A jak zrobić żeby datę wyświetlić (tylko że już po stronie php) datę w ten sposób 20.12.2007 albo jeżeli są różne to 20-24.12.2007 questionmark.gif

@edit: tzn, chcę aby wyświetlało od dnia a nie od roku i żeby zamiast "-" była "."

Ten post edytował in5ane 9.11.2007, 21:57:44


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
nevt
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


in5ane nawet nie zadales sobie trudu sprawdzic jakie wyniki daje moje ostatnie rozwiazanie... wstyd...


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
in5ane
post
Post #10





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Zadałem sobie trud, ale chciałem wiedzieć jak zrobić to po stronie php.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
nevt
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


W SQL nie wiesz jak... w PHP nie wiesz jak... A chociaż spróbowałeś? Czy porywasz się z motyką na słońce? Pokazałbyś kawłek własnego kodu, wykazałbyś, że się starasz - znaleźliby się chętni do pomocy. Sępów nikt tutaj nie lubi... Ale mam dzisiaj świetny nastrój, więc co mi tam...

Zakładam że wynik kolejnego wiersza zapytania (w wersji bez formatowania w SQL) masz w tablicy acocjacyjnej $result, wtedy to będzie coś w rodzaju:
  1. <?php
  2. $data = ($result['imp_start'] == $result['imp_stop'] ? '' : substr($result['imp_start'], -2).'-');
  3. $tmp .= explode('-', $result['imp_stop']);
  4. $data .= sprintf('%s.%s.%s', $tmp[2], $tmp[1], $tmp[0]);
  5. ?>

to też będzie działać:
  1. <?php
  2. $data = ($result['imp_start'] == $result['imp_stop'] ? '' : substr($result['imp_start'], -2).'-');
  3. $data .= preg_replace('/(d{4})-(d{2})-(d{2})/', '3.2.1', $result['imp_stop']);
  4. ?>

ale można też np. tak:
  1. <?php
  2. $data = ($result['imp_start'] == $result['imp_stop'] ? '' : substr($result['imp_start'], -2).'-');
  3. $tmp = explode('-', $result['imp_stop']);
  4. $tmp = array_reverse($tmp);
  5. $data .= implode('.', $tmp);
  6. ?>

albo tak:
  1. <?php
  2. $data = ($result['imp_start'] == $result['imp_stop'] ? '' : substr($result['imp_start'], -2).'-');
  3. $data .= substr($result['imp_stop'], 8, 2).'.'.substr($result['imp_stop'], 5, 2).'.'.substr($result['imp_stop'], 0, 4);
  4. ?>

Albo na 100 innych sposobów...

A cała ta wiedza tajemna ukryta jest w setkach manuali i tutoriali dostępnych za free w necie. Tylko czytać, uczyć się i ćwiczyć, ćwiczyć, ćwiczyć. Wklejąc cudze "gotowce, nie uczysz się niczego...

Pozdrawiam i powodzenia...

Ten post edytował nevt 10.11.2007, 13:06:20


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
in5ane
post
Post #12





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Wielkie dzięki.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 10:55