[php] pytanie

0

A wiec
zrobilem sobie na stronie newsy, z wykorzystaniem mysql - a.
teraz chce tak zrobic aby po 5 newsach generowana była 2 strona, po kolejnych 5 trzecia itd...(zeby na 1 stronie nie było za durzo nawalone)
prosze tylko o algorytm postepowania...

0

ja proponuje cosik takiego:

robisz zapytanie na *
pozniej standardowe opedujerz whilem na wyniku zapytania
a w whilu robisz petelke for z licznikiem na max 5, w tej petelce wypisujesz 5 ostanich newsow.

a zeby zrobi linki do pozosatalych, tak jak jest na wyszukiwarkach
to wykozytujesz ta petelke while, ktora i tak przejerzdza caly zbior wyniku i co 5 zapamietujesz np date posta, a najlepiej to jakis identyfikatorunikalny dlakazdego posta, i ustawiasz taki identyfikator w linku np.

asdsd

a gdy skrypt zostanie wywolany z takim id. to robisz zapytanie np. ze
id >=5 - tu wykozystujesz ta nasz petelke for zagniezdzona w while - zeby tyko 5 wyswietlic.

no gdneralnie jak zajarzysz o co mi hcodzilo to sobie to dopracujesz [niewinnosc]

0

Postępowanie jest proste, ja robie to tak,

  1. Sprawdzam ile rekordów zwróciło mi zapytanie.
  2. Ustalam limit wyświetlania na stronie (np. jak u ciebie pięć)
  3. sprawdzam ile razy pięć mieści się w wynikach (to daje ilość stron)
  4. nastepnie pętelką tworze odnośniki do strony, gdzie umieszczam informacje od którego rekordu ma zacząć i na którym skończyć.

I tyle...
Mam nadzieje że coś pomogłem

0

Panczo: a co gdy np. chcesz usunac jakies newsy mp. mamy ich 25 i wywalimy 12, 18, 21 - skad wezmiesz te na poczatek i na konie identy skoro nie ma tuaj przyrostu jednostkowego?

caly misterny plan szlaq trafia nie ? [niewinnosc]

0

Panczo: a co gdy np. chcesz usunac jakies newsy mp. mamy ich 25 i wywalimy 12, 18, 21 - skad wezmiesz te na poczatek i na konie identy skoro nie ma tuaj przyrostu jednostkowego?

caly misterny plan szlaq trafia nie ? [niewinnosc]

Nie bardzo Cię rozumiem usunąłeś 3 posty czyli np z 25 zostaje 22, na czterech stronach będzie po 5 a na ostatniej 2. wszystko się zgadza, sprawdziłem ile jest i robie odnośniki.

Nie muszę zapamiętywać danych rekordu od którego zaczynam. tabelę mam posortowana np. według daty wpisu i używam parametru LIMIT w zapytaniu SQL.

Dobra teraz spojrzałem w czwartym punkcie się zagalopowałem powinno być, że umieszczam informację w odnośniku [b]tylko [/b] od którego ma zacząć i nic więcej

0

heh: ale jesli usuniesz rekordy a poslugujesz sie jakims identyfikatorem ktory pawdopodobnie oparty jest na polu typu auro increment, to moze i masz posegregowane, ale ty chcesz definiowac pierwsza i ostatnia liczbe dal kojenych 5 - skakac co 5, tak ?

np mamy; 1,2,3,4,5,11,12,13,14,34

pierwsze 5 wyswietlasz bez problemu, ale jak pozostale 5 ?
skad wiesz ze ostani z tyhc pieci ma index numer 34 ?

0

halfik: my się nie rozumiemy,
pole np. id_newsa jest mi w tym przypadku potrzebne tylko do odwołania się do danego newsa, np. wyswietlnewsa.php?id=12. Ale nie potrzebuje go żeby wygenerować numery stron. Opisze najjaśniej jak potrafie:

robisz liste niusów:

SELECt * FROM news ORDER BY data_wpisu DESC/ASC LIMIT $start, $ile_na_stronie

Jeśli zmienna start nie istnieje przyjmuje że równa się 0.

zmienna $ile_na_stronie może być stała lub zmienna jak wolisz.


A to robi liste odnośników:

  1. wybieram dane z tabeli
    (SELECt * FROM news - sortowanie nie ma teraz znaczenia bo chcę ustalić tylko liczbe rekordów)

  2. sprawdzam ile zwrócił wierszy. np 23.

  3. ustalam sobie że $ile_na_stronie = 5, więc będzie pięć stron => tworze pięć odnośników np.:

a. news.php?start=0
b. news.php?start=5
c. news.php?start=10
d. news.php?start=15
e. news.php?start=20

Więc powiedz mi proszę kiedy to ma niby nie zadziałać?

PS Właśnie spojrzałem na strone piuracza. On nie potrzebuje idetyfikować niusów, bo nie ma do nich odnośników, także wystarczy mu samo pole data wpisu...

0

Panczo: ok,ok wczoraj wieczorek skumalem o co Ci chodzi.
w sumie to ten Twoj sposob jest lepszy, bo kazde nstepne zapytanie do bazy - o klejna stone z newsami - bedzie szybsze, no i jest jeszcze kilka rzecy, ktore powowduja, ze Twoj ew. program wykona mniej instrukcji :)

nice hehe :)

0

Wiesz halfik nie chodziło mi oto żebyś przynał, że moje rozwiązanie jest lepsze :d, Oba dadzą dokładnie takie samo rozwiązanie.

0

Panczo: wynik to i owszem, bedzie taki sam, ale czas wykonania skryptu i ilosc pamieci jaki zzeraja zmienne - nie - dlatego Twoj jest bardziej optymalny, zreszta chyba bardziej juz sie nie da, no przynajmniej na razie nic nie wymyslilem [cygaro]

ciesz sie, ze Ci przyznalem razje, bo ja zadko przyznaje sie do bledow etc. [niewinnosc]

1 użytkowników online, w tym zalogowanych: 0, gości: 1