Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wyciąganie newsów z danego miesiąca...
marekk
post 13.11.2003, 18:50:17
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 27.05.2003

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


Chciałbym się dowiedzieć jak rozwiązać taka sytuację. Mam newsy przechowywane w bazie i głównym wyznacznikiem jest data w formacie znacznika czasu czyli ogolnie system newsow. Powiedzmy, że tych newsów jest sporo i chciałbym wyciągać je w róznych miejscach strony np. z danego miesiąca jakiegos konkretnego roku.
Wiem, że można wszystkie wyciągać po kolei i sprawdzać czy miesiąc i rok jest tym miesiącem i rokiem co chcę wyświetlić ale jak wiadomo rozwiazanei troche bes sensu bo musi wtedy przeszukiwac cała baze i trzeba czekać na wyniki.

Mam jeszcze 2 pomysł ale tez nie idealny i trzeba się z nim bawić a mianowicie np. wyciaganie danych z 1 miesiaca w przód i w tył danego roku i pozniej przy wyświetlaniu wykluczanie zbędnmych wpisów. Z tym, że i tutaj wyciagnie troche wiecej danych niz trzeba, nie mówiąc o babraniu ze znacnzikiem.
Mam pytanie czy nie da się tego jeszcze jakos prościej rozwiązac, moze besposrednio przez 1 instrukcje do bazy, na pewno ktos już przerabiał podobne rzeczy??
Go to the top of the page
+Quote Post
scanner
post 13.11.2003, 22:41:05
Post #2





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




marekk.. nie dobijaj.. pokaz strukture tabeli z newsami. Robisz to wszystko jednym zapytaniem. Tylko trzeba pomyslec troche..


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
slaug
post 14.11.2003, 08:35:58
Post #3





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 2.05.2003
Skąd: Gdańsk

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


Dokładnie poczytaj troche o select, przecież po to stworzyli SQLa, żeby takich problemów nie było smile.gif)
Go to the top of the page
+Quote Post
marekk
post 14.11.2003, 11:25:39
Post #4





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 27.05.2003

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


No tak ale jak wyciagnąc to 1 zapytaniem z konkretnego misieaca i roku??

Tabele mam normalna jak ponizej:

id int(11)
temat text
tekst text
zdjecie text
data int(30)
zrodlo varchar(120)

Ok. moge zmaienić sobie miesiąc i rok na znacnzik czasu ale jak pozniej wyodrębnic w zapytaniu dokladny przedzial danego miesiąca? Przeciez nie mozna instrukcji date czy mktime władowac besposrendio w zapytanie sqla?
Go to the top of the page
+Quote Post
scanner
post 14.11.2003, 11:28:30
Post #5





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




ale mozeszw php okreslona datę zamienić na znacznik czasu i tenże wpakowac do SQL'a...


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
marekk
post 14.11.2003, 11:44:54
Post #6





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 27.05.2003

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


No i ja tak robię - w administracji ładuje np.:

$data = mktime($godz,$min,$sek,$mies,$dzien,$rok);

mysql_query("INSERT INTO aktualnosci (id,temat,tekst,zdjecie,data,zrodlo,dzial) VALUES (null,'$temat','$tekst','$zdjecie','$data','$zrodlo','$dzial')",$link);

I teraz na stronie mam powiedzmy podział na lata i miesiące no i powiedzmy, że chce wyciągnac newsy z marca 2000 roku:

no to robie wywołanie:

$data = mktime(0,0,0,03,1,2000);

mysql_query("SELECT * FROM aktualnosci WHERE data='$data')",$link);

No tylko wtedy mam z pierwszego dnia.
Hehh tylko nie mow, że to proste wyciągniecie o którym myślisz polega na zdefiniowaniu wyciągania z każdego miesiąca osobno czyli np.

// dla marca
$data1 = mktime(0,0,0,03,1,2000);
$data2 = mktime(0,0,0,03,31,2000);

i pozniej w zapytaniu wyciagneicie daty z tego przedziału??

Bo jeśli tak to ok. rozumiem tyle, że trzeba przejechac wszytskie miesiące...
Go to the top of the page
+Quote Post
scanner
post 14.11.2003, 12:37:36
Post #7





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




[php:1:3e8429845d]<?php
$data1 = mktime(0, 0, 0, $mies, 1, $rok);
$data2 = mktime(23, 59, 59, $mies, date('t', $data1), $rok);
?>[/php:1:3e8429845d]
[sql:1:3e8429845d]SELECT * FROM aktualnosci WHERE data BETWEEN $data1 AND $data2[/sql:1:3e8429845d]


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
marekk
post 14.11.2003, 13:07:32
Post #8





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 27.05.2003

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


Hmm no cóż działa bez zarzutu smile.gif - wielkie dzięki.

Ale prawdę mówiąc to ciężko było wpaść na takie rozwiązanie, o ile jeszcze z tym parametrem "t" przy funkcji "date" powinienem wiedzieć o tyle liczby "...23, 59, 59..." przy mktime cięzko było wyczaić, nawet w manualu nie ma o tym wzmianki. Rozumiem, że one sa istotne i jakos okreslają skąd dokladnie liczyc czy cos w tym stylu skoro "t" odpowiada za liczbe dni w danym miesiącu?
Go to the top of the page
+Quote Post
BzikOS
post 14.11.2003, 13:28:45
Post #9





Grupa: Przyjaciele php.pl
Postów: 660
Pomógł: 0
Dołączył: 28.08.2002
Skąd: Starachowice

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


Funkcja mktime() jest dosyć dokładnie opisana w manualu. Liczby 23 59 59 to po prostu godzina 23:59:59 - aby również newsy z ostatniego dnia miesiąca zawierały się w przedziale.
Go to the top of the page
+Quote Post
marekk
post 14.11.2003, 13:37:07
Post #10





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 27.05.2003

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


upss... no tak dzieki raz jeszcze za pomoc.
Go to the top of the page
+Quote Post
scanner
post 14.11.2003, 15:54:13
Post #11





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Cytat
Hmm no cóż działa bez zarzutu smile.gif - wielkie dzięki.
Pisane z palca
Cytat
Ale prawdę mówiąc to ciężko było wpaść na takie rozwiązanie
Elementarne drogi Watsonie.Sam napisałeś:
Cytat
[php:1:2717f46643]<?php
$data = mktime($godz,$min,$sek,$mies,$dzien,$rok);
?>[/php:1:2717f46643]
pierwsze trzy zmienne.. A do tego spojrzenie na zegarek..


--------------------
scanner.info
Warto pamiętać: KISS, DRY
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 Wersja Lo-Fi Aktualny czas: 10.06.2024 - 00:20