Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> System News - News Przyklejony, Pomysł na dodanie opcji przyklejenia?
Najki
post
Post #1





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Mam system newsów napisany w php, oparty o MySQL. Chciałbym dodać mu możliwość ustawienia jakiemuś newsowi opcji "przyklejony" i/lub "gorący". News trzymałby się na początku listy newsów przez X dni (X - indywidualne ustawienie dni dla newsa), a gorący miałby nawet swój własny, wyróżniający go wygląd.

Ma ktoś pomysł jak zrobić takie coś?


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
bamboos
post
Post #2





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 3.05.2003
Skąd: Łódź

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


w tabelce dodajesz nowe pole: "przyklejony" o wartosciach 0 - normalny, 1 - przyklejony
potem wybierajac newsy z bazy dajesz: order by przyklejony
Najprostrzy sposób...


--------------------
Go to the top of the page
+Quote Post
Najki
post
Post #3





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Ale jak dam order by przyklejony to najpierw wybierze wszystkie przyklejone, a dopiero potem te najnowsze datą.

order by data desc and przyklejony desc ?
Za cholerę nie mam pojęcia, myślałem też, że to bardziej skomplikowane tongue.gif.


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





Grupa: Zarejestrowani
Postów: 172
Pomógł: 0
Dołączył: 22.09.2002
Skąd: Gorzów Wlkp

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


Hej.

Dodaj do tabeli z news'ami pola tabelaznewsami.DataWyroznieniaDo(typu date) oraz pole tabelaznewsami.Wyrozniony(typy calkowitego), teraz przed wyswietleniem normalnych newsow zrob zapytanie:

  1. SELECT * FROM tabelaznewsami WHERE DataWyroznieniaDo >= now() AND Wyrozniony = 1 ORDER BY DataDodania LIMIT 0, 1


Teraz troche objasnienin DataWyroznieniaDo przetrzymuje jak nazwa mowi date do kiedy ma byc wyrozniony news, dlatego sprawdzamy czy sa w bazie jakies newsy z DataWyroznieniaDo wieksza od dzisiejeszej badz jej rownej.

Kolejna faza to sprawdzenie czy news nalezy do wyroznionych, stad pole Wyrozniony - dodajesz z wartoscia 1 lub 0, 1 - odpowiada wyroznionemu, 0 niewyroznionemu.

Na koniec sortujemy przez DateDodania, zeby wyroznic najnowszy news dodany z opcja wyroznienia.

Ostatni kroczek to okreslenie limitu ze potrzebujemy pierwszy news ktory spelnia nasze kryteria.

Dalej juz wywalenie tego w odpowiedniej formie na stronie.

Ps. Mozna by to oprzec o kolejna tabele i zrobic relacje jeden do jednego i jesli w tabeli o strukturze

id_wyroznienia
id_newsa - Relacja z tabela newsy
data_do

i teraz mozemy latwiej zarzadzac taka baza przy dodawaniu mozliwosci przeszukiwania itp, wszystko odbywalo sie bedzie za pomoca kluczy.

pozdrawiam

anas
Go to the top of the page
+Quote Post
Najki
post
Post #5





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Dzięki wielkie smile.gif.
Trochę to obrobiłem i jest GIT! biggrin.gif
Co najważniejsze, działa smile.gif.

Udostępniam fragment, jakby ktoś był zainteresowany.

  1. <?php
  2. # pobieramy newsy przyklejone, które mają datę wygaśnięcia przyklejenia (pole \"przyklejony_do\") większą niż data obecna
  3. $q_news_przyklejony = mysql_query (&#092;"select * from twoja_tabela_news where przyklejony_do >= now() and przyklejony='1' order by data desc\");
  4.  
  5. # zliczamy ilość przyklejonych newsów
  6. $sum_news_przykl = mysql_num_rows ($q_news_przykl);
  7.  
  8. # odejmujemy ilość newsów przyklejonych od ilości newsów, które chcemy mieć wyśw
  9. etlone na stronie, np. 10
  10. $news_zwykle = 10-$sum_news_przykl;
  11.  
  12. # drukujemy newsy przyklejone
  13. while ($r_news_przyklejony = mysql_fetch_array ($q_news_przyklejony)) {
  14.  # druk (pomijam)
  15. }
  16.  
  17. # pobieramy newsy zwykłe, które wydrukujemy pod przyklejonymi
  18. $q_news = mysql_query (&#092;"select * from liga_bstr_news where przyklejony='0' order by data desc, id desc limit 0, $news_zwykle\");
  19.  
  20. # drukujemy newsy zwykłe
  21. while ($r_news = mysql_fetch_array ($q_news)) {
  22.  # druk (pomijam)
  23. }
  24. ?>

Mam nadzieję, że komuś to się przyda smile.gif.
Dzięki anas !


--------------------
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: 21.08.2025 - 17:34