Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zliczanie stron
Forum PHP.pl > Forum > Przedszkole
simonX
Chcę zrobić coś takiego że np. mam sobie stronę z newsami i że jeżeli na jednej stronie będą się znajdowały trzy wpisy to tworzy stronę o nr 2 i tam ją zapisuje podobnie jak jest na forach, kiedyś widziałem podobny temat, ale nie mogę znaleść czy ma ktoś jakiś pomysł jak to zrobić?
bełdzio
w dziale klasy masz klase stronnicowania, popatrz w jej kod
Wicepsik
Zlicz wszystkie newsy w bazie i podziel przez ilość newsów na strone
simonX
Zliczanie to chyba było by ciężki oto przykładowy wpis(wpisy umieszczam w pliku txt)


Kod
     <div class="header">Dodany przez:Administrator</div>
<div class="title">tytuł</div>
<div class="content">treść artykułu</div>
<div class="date">data dodania</div>
<hr size="1" class="line">
Spawnm
albo daj to w baze smile.gif
albo rozdzielaj wpisy czymś ala <!---page break-->
potem explode i count()
simonX
No to może coś takiego


  1. <?php
  2.  
  3. $nazwa='post.txt';
  4. $old=file_get_contents($nazwa);
  5. $div=split(":",$old);
  6. if ($div == 3){
  7. $strona=strona+1;
  8.  
  9. }
  10. ?>


Czy mógłby mi ktoś podać jakiś przykład na ktorym mógłbym się oprzeć lub linka do pomocnego tematu.
Derw
Tresc pliku:
Autor:xyz
Temat:test
Tresc: Przykladowy news
<-->
Autor:xyz
Temat:test2
Tresc: Przykladowy drugi news

  1. <?php
  2. $all = file('nazwa_pliku.txt');
  3. $news = explode('<-->',$all);
  4. $ile = count($news);
  5. $ileNaStronie = 3;
  6. $ileStron = ceil($ile/$ileNaStronie);
  7. $odktorego = $_GET['i'] * 3 - $ileNaStronie;
  8. for($j=$odktorego;$j<($odktorego+$ileNaStronie); $j++){
  9. echo $news[$j];
  10. }
  11. for($j=0;$j<$ileStron;$j++){
  12. echo '<a href="adres.php?i="'.($j+1).'">'.$j+1.'</a>|';
  13. }
  14. ?>




Nie wiem czy to dokładnie o to Ci chodziło, na stronie teraz bedziesz musiał zrobić coś ala 1|2|3|4 (a ilość tego będzie zależne oczywiście od zmiennej $ileStron). Po kliknięciu w np. 2 nastąpi przesłanie zmiennej $i która będzie miała $i=2, najlepiej zrobić to chyba GET-em. Czyli każdy z tych liczb "1|2|3..." bedzie linkiem i np 2 bedzie miała url index.php?i=2.

Edit: dodalem fora ktora to wypisuje, nie wiem czy to o to chodziło?
simonX
Właśnie o coś takiego mi chodziło, teraz mając taki przykład mogłem się zaczepić i trochę zmodyfikowałem

  1. <?php
  2. $nazwa = 'zliczanie.txt';
  3. $all= file_get_contents($nazwa);
  4. $news = split('<-->',$all);
  5. $ile = count($news);
  6. $ileNaStronie = 3;
  7. $ileStron = ceil($ile/$ileNaStronie);
  8. for($i=1;$i<=$ileStron;$i++){
  9. echo "&nbsp<a href=\"questionmark.gif?"&#092;">".$i."</a>&nbsp|";
  10. }
  11. ?>


Teraz nie wiem co mam wpisać w adresie bo posty znajdują się w pliku zliczanie.txt
Derw
Celowo pominołeś?:

  1. <?php
  2. $odktorego = $_GET['i'] * 3 - $ileNaStronie;
  3. for($j=$odktorego;$j<($odktorego+$ileNaStronie); $j++){
  4. echo $news[$j];
  5. }
  6. ?>


bo ta część kodu odpowiedzialna była za wypisywanie newsa, a zmienna $odktorego wskazywala ze np na stronie 2 maja byc newsy od 3 do 6.

Co do adresu to podaje sie adres strony na ktorej sie znajduja newsy i get-em przesylasz numer strony czyli: '<a href="adres?i="'.$j+1.'>'
krzysiekk
Witam jesli moge coś polecić to napisany przez kolege z forum
Pager
po pobraniu mozna podpatrzc na przykladach zobaczyc jak to działa
Pilsener
  1. <?php
  2. $all = file('nazwa_pliku.txt');
  3. ?>
- bardzo fajne, tylko przy każdym żądaniu wczytujemy całą bazę do pamięci skryptu, jest to może i dobre dla plików konfiguracyjnych jednak chyba nie dla bazy newsów? Po miesiącu dodawania newsów strona zacznie mulić, a po dwóch wyskoczy fatal error, allowed memory size of xxx bytes exhausted

Jak chcesz wyświetlać i porcjować dane z pliku tekstowego to poczytaj to:
http://www.forumweb.pl/viewtopic.php?t=39103

  1. <div class="header">Dodany przez:Administrator</div>
  2. <div class="title">tytuł</div>
  3. <div class="content">treść artykułu</div>
  4. <div class="date">data dodania</div>
  5. <hr size="1" class="line">
- i po co ładować html do bazy? Każdy news będzie miał inny kod html, czy tylko treść będzie inna?
simonX
Cytat(Derw @ 24.06.2009, 03:48:05 ) *
Celowo pominołeś?:

  1. <?php
  2. $odktorego = $_GET['i'] * 3 - $ileNaStronie;
  3. for($j=$odktorego;$j<($odktorego+$ileNaStronie); $j++){
  4. echo $news[$j];
  5. }
  6. ?>


Ale tak wyświetla mi się pusta strona nawet nie wypisuje stron ;/

Po wrzuceniu na serwer parser wskazuje na błąd w 12 linijce czyli tam gdzie powinny być wypisywane strony
erix
Choroba, szklana kula zepsuta... sad.gif

Kiedy się wreszcie nauczycie, że gdy pisze się "jakiś błąd", to on nie mówi o problemie? Treść jest RÓWNIE istotna, bo błędów mogą być TYSIĄCE.
simonX
Błąd:

Kod
   Parse error:  syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in /home/freehost/s/i/simonx/www/zliczanie.php on line 12
Spawnm
simonX przeczytaj post Erixa i popraw swój post smile.gif
simonX
dry.gif Przecież wkleiłem treść błędu, chyba o to chodziło przynajmniej tak wywnioskowałem.
erix
A co masz w tej linijce...?
Spawnm
ok , moja wina ...
simonX
To jest ta linijka:
Kod
echo '<a href="adres.php?i="'.($j+1).'">'.$j+1.'</a>|';
Spawnm
'.$j+1.' <- w nawias ? A najlepiej działania wykonywać przed echo .
simonX
To samo nic nie pomaga sad.gif
erix
Pokaż, co zmieniłeś.
simonX
Nic konkretnego nie zmieniłem, tylko nazwę pliku na początku skryptu i dodałem nawias tam gdzie sugerował "Spwanm"

  1. <?php
  2. echo '<a href="adres.php?i="'.($j+1).'">'.($j+1).'</a>|';
  3. ?>


Tutaj zresztą jest coś nie tak z cudzysłowami moze tak:

  1. <?php
  2. echo "<a href=\"adres.php?i=   " '.($j+1).' &#092;">".($j+1)."</a>|";
  3. ?>


I jak jakieś pomysły, bo ja już wariuje próbowałem chyba wszystkiego
erix
Pokaż gdzieś tak +/- 10 linijek (przed i poza) z tym kodem.
MateuszS
Wygrzebalem stare moje stronnicowanie newsow. Pokazuje to co chcesz, tzn te strony wszystkie itd. Dodaj prosty warunek zeby pokazywalo ile jest wszystkich stron tak jak chciales i masz. Stronnicowanie tez przerob dla siebie

  1. <?php
  2. echo '<center><b><u>Wiadomości</u></b></center><Br><br>';
  3.  
  4. if ($_GET['page']==FALSE) {
  5. $_GET['page']=1;
  6. }
  7. $ktoras=$_GET['page']*4;
  8. $ktoras2=$ktoras-4;
  9.  
  10. $newsy=mysql_query("SELECT * FROM `news` ORDER BY ID DESC");
  11.  
  12. while ($news = mysql_fetch_assoc($newsy)) {
  13. $ilosc=$ilosc+1;
  14. if ($ilosc<$ktoras && $ilosc>=$ktoras2) {
  15. echo "<center><b><u>{$news['temat']}</u></b></center><Br>
  16. {$news['tresc']}<br>
  17. <Table width=94% class=\"numer\"><td align='right'>".date("Y/m/d", $news['data'])."</td></table><br><Br>
  18. ";
  19. }
  20. }
  21. $dsa=ceil($ilosc/4);
  22. echo '<center>';
  23. for ($i>=1; $i<$dsa; $i++) { $ids=$ids+1;
  24. if ($ids!=$_GET['page'])
  25. {
  26. echo "<a href=\"page.php?id=1&page=$ids\">";
  27. }
  28. echo "$ids";
  29.  
  30. if ($ids!=$_GET['page'])
  31. { echo '</a>';
  32. }
  33. echo ' ';
  34. }
  35. echo '</center>';
  36. ?>
erix
  1. <?php
  2. $ilosc=$ilosc+1;
  3. ?>

Za dużo w pascalu siedzisz. tongue.gif

Poza tym, Twój skrypt jest do bani, gdyż wyciąga WSZYSTKIE rekordy, nie tylko te, które faktycznie zostaną wyświetlone.
MateuszS
Cytat(erix @ 26.06.2009, 15:44:07 ) *
  1. <?php
  2. $ilosc=$ilosc+1;
  3. ?>

Za dużo w pascalu siedzisz. tongue.gif

Poza tym, Twój skrypt jest do bani, gdyż wyciąga WSZYSTKIE rekordy, nie tylko te, które faktycznie zostaną wyświetlone.


Chyba w tym od gotowania ;D

No w kazdym razie myslalem ze o to chodzi autorowi, ten kod dziala i to dziala dobrze ;] Ale jezeli nie o to chodzilo to sry ;]
erix
Cytat
Chyba w tym od gotowania ;D

Wiesz, o czym mówiłem...? Nadrób braki, wtedy porozmawiamy.

Cytat
No w kazdym razie myslalem ze o to chodzi autorowi, ten kod dziala i to dziala dobrze ;]

Pewnie i o to, ale Twój sposób jest zły. I to nie powinno podlegać dalszej dyskusji. Nie po to są klauzule LIMIT w zapytaniach SQL, żeby marnować przepływność przez brak wiadomości.
MateuszS
Wybacz mą zuchwałość, oczywiście masz rację.

PS. Nie mam braków, co najwyżej nie doszedłem do tego etapu. A z tym Pascalem to miał być żart... eh...
simonX
Nie mam nic przed tym to jest cały skrypt ten co wkleił "Derw" na stronie 1, ja tylko dokonałem tych drobnych zmian.

To jak zna ktoś odpowiedź na moje pytanie to ważne.

I co nadal nikt nie zorientował, gdzie tu jest jakiś błąd, ten skrypt jest mi bardzo potrzebny.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.