Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]Zliczanie stron
simonX
post
Post #1





Grupa: Zarejestrowani
Postów: 175
Pomógł: 2
Dołączył: 30.07.2008

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


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ć?
Go to the top of the page
+Quote Post
bełdzio
post
Post #2





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

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


w dziale klasy masz klase stronnicowania, popatrz w jej kod
Go to the top of the page
+Quote Post
Wicepsik
post
Post #3





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

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


Zlicz wszystkie newsy w bazie i podziel przez ilość newsów na strone
Go to the top of the page
+Quote Post
simonX
post
Post #4





Grupa: Zarejestrowani
Postów: 175
Pomógł: 2
Dołączył: 30.07.2008

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


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">
Go to the top of the page
+Quote Post
Spawnm
post
Post #5





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




albo daj to w baze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
albo rozdzielaj wpisy czymś ala <!---page break-->
potem explode i count()
Go to the top of the page
+Quote Post
simonX
post
Post #6





Grupa: Zarejestrowani
Postów: 175
Pomógł: 2
Dołączył: 30.07.2008

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


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.
Go to the top of the page
+Quote Post
Derw
post
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 1
Dołączył: 19.03.2009

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


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?

Ten post edytował Derw 23.06.2009, 13:30:20
Go to the top of the page
+Quote Post
simonX
post
Post #8





Grupa: Zarejestrowani
Postów: 175
Pomógł: 2
Dołączył: 30.07.2008

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


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=\"(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?"&#092;">".$i."</a>&nbsp|";
  10. }
  11. ?>


Teraz nie wiem co mam wpisać w adresie bo posty znajdują się w pliku zliczanie.txt
Go to the top of the page
+Quote Post
Derw
post
Post #9





Grupa: Zarejestrowani
Postów: 18
Pomógł: 1
Dołączył: 19.03.2009

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


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.'>'
Go to the top of the page
+Quote Post
krzysiekk
post
Post #10





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

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


Witam jesli moge coś polecić to napisany przez kolege z forum
Pager
po pobraniu mozna podpatrzc na przykladach zobaczyc jak to działa
Go to the top of the page
+Quote Post
Pilsener
post
Post #11





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


  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?
Go to the top of the page
+Quote Post
simonX
post
Post #12





Grupa: Zarejestrowani
Postów: 175
Pomógł: 2
Dołączył: 30.07.2008

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


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
Go to the top of the page
+Quote Post
erix
post
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Choroba, szklana kula zepsuta... (IMG:http://forum.php.pl/style_emoticons/default/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.
Go to the top of the page
+Quote Post
simonX
post
Post #14





Grupa: Zarejestrowani
Postów: 175
Pomógł: 2
Dołączył: 30.07.2008

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


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
Go to the top of the page
+Quote Post
Spawnm
post
Post #15





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




simonX przeczytaj post Erixa i popraw swój post (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
simonX
post
Post #16





Grupa: Zarejestrowani
Postów: 175
Pomógł: 2
Dołączył: 30.07.2008

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


(IMG:http://forum.php.pl/style_emoticons/default/dry.gif) Przecież wkleiłem treść błędu, chyba o to chodziło przynajmniej tak wywnioskowałem.
Go to the top of the page
+Quote Post
erix
post
Post #17





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A co masz w tej linijce...?
Go to the top of the page
+Quote Post
Spawnm
post
Post #18





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




ok , moja wina ...
Go to the top of the page
+Quote Post
simonX
post
Post #19





Grupa: Zarejestrowani
Postów: 175
Pomógł: 2
Dołączył: 30.07.2008

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


To jest ta linijka:
Kod
echo '<a href="adres.php?i="'.($j+1).'">'.$j+1.'</a>|';
Go to the top of the page
+Quote Post
Spawnm
post
Post #20





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




'.$j+1.' <- w nawias ? A najlepiej działania wykonywać przed echo .
Go to the top of the page
+Quote Post
simonX
post
Post #21





Grupa: Zarejestrowani
Postów: 175
Pomógł: 2
Dołączył: 30.07.2008

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


To samo nic nie pomaga (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
erix
post
Post #22





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Pokaż, co zmieniłeś.
Go to the top of the page
+Quote Post
simonX
post
Post #23





Grupa: Zarejestrowani
Postów: 175
Pomógł: 2
Dołączył: 30.07.2008

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


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
Go to the top of the page
+Quote Post
erix
post
Post #24





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Pokaż gdzieś tak +/- 10 linijek (przed i poza) z tym kodem.
Go to the top of the page
+Quote Post
MateuszS
post
Post #25





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


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. ?>
Go to the top of the page
+Quote Post
erix
post
Post #26





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. <?php
  2. $ilosc=$ilosc+1;
  3. ?>

Za dużo w pascalu siedzisz. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Poza tym, Twój skrypt jest do bani, gdyż wyciąga WSZYSTKIE rekordy, nie tylko te, które faktycznie zostaną wyświetlone.
Go to the top of the page
+Quote Post
MateuszS
post
Post #27





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Cytat(erix @ 26.06.2009, 15:44:07 ) *
  1. <?php
  2. $ilosc=$ilosc+1;
  3. ?>

Za dużo w pascalu siedzisz. (IMG:http://forum.php.pl/style_emoticons/default/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 ;]
Go to the top of the page
+Quote Post
erix
post
Post #28





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.
Go to the top of the page
+Quote Post
MateuszS
post
Post #29





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


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...
Go to the top of the page
+Quote Post
simonX
post
Post #30





Grupa: Zarejestrowani
Postów: 175
Pomógł: 2
Dołączył: 30.07.2008

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


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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 22:29