Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Księga gości - wyswietlanie wpisów
lopik
post 15.08.2006, 19:56:58
Post #1





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


Wiec tak,
Na php niestety sie (jeszcze smile.gif ) nie znam, i bardzo proszę o pomoc...

Mam księge gości na plikach tekstowych, i wszystko mi ładnie działa:
strona dla przykładu tylko: http://lopik.ovh.org/guestbook/guest.php

Wpisy są w tym div'ie po prawej (dodajcie pare dla testu)
I problem jest taki ze jak jest duzo wpisów, to one wychodzą poza tego div'a :|

I czy jest jakaś mozliwość, zeby zrobić tak, ze gdy jest dana ilość wpisów, to zeby sie robiła np. strona 2,3 itd. z wpisami ?

Albo, zeby te wpisy które sie juz nie mieszczą, nie wychodziły poza diva, tylko poprostu znikały jakoś, ale zeby w tym pliku txt w którym są one zapisywane, zeby z tamtąd nie znikały, tylko tam mają być cały czas.

Czy da sie coś z tym zrobić ? :|
Liczę na pomoc, z góry wielkie dzięki exclamation.gif!

  1. <?
  2. $ksiega = "ksiega.txt";
  3.  
  4. $imie=$_POST["imie"];
  5. $email=$_POST["email"];
  6. $www=$_POST["www"];
  7. $wpis=$_POST["wpis"];
  8.  
  9.  
  10. if (strlen($wpis)>5) {
  11. $f=fopen($ksiega,"a");
  12. $rekord="`$imie`$email`$www`$wpis`";
  13. $rekord=ereg_replace(10," ",$rekord);
  14. $rekord=ereg_replace(13," ",$rekord);
  15. fputs($f,"$rekordn"); fclose($f);
  16. }
  17.  
  18. $wpisy=file($ksiega);
  19. $wpisy=array_reverse($wpisy);
  20. $ile=count($wpisy);
  21. for ($i=0;$i<$ile;$i++) {
  22. $wpis = explode("`",$wpisy[$i]);
  23. echo "<p><b>$wpis[1]</b> - <i>$wpis[3]</i><br>$wpis[4]<p>";
  24. }
  25. ?>


--------------------
w3c & c++
Go to the top of the page
+Quote Post
lukir
post 15.08.2006, 20:08:37
Post #2





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 6.08.2004
Skąd: Warszawa

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


Dla tego DIV'a ustaw klasę i określ w CSS parametry: height i width oraz overflow (W3C Schools, W3C CSS) ustaw na auto:

  1. <title>Guest Book</title>
  2. .content
  3. {
  4. width: 200px;
  5. height: 400px;
  6. overflow: auto;
  7. }
  8. </head>
  9. <div class="content">
  10. <!-- tutaj jest include w php -->
  11. </div>
  12. </body>
  13. </html>


To sprawi, że Twój div będzie miał określony rozmiar, a gdy zostanie on "przekroczony" przez tekst, dodany zostanie scrollbar smile.gif

Ten post edytował lukir 15.08.2006, 20:11:23


--------------------
"Tylko myśl dojrzała i jasna daje się wypowiedzieć w słowach prostych" - prof. Witold Doroszewski
Warsztat: os: Windows XP, serwer: Apache 2.0.55, php: 5.1.4, baza danych: MySQL 4.1.7.
Go to the top of the page
+Quote Post
skowron-line
post 15.08.2006, 21:02:58
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


pik poszukaj czegos na temat "stronicowania" lub "paginacji" ale tu chyba sa przyklady tylko z wykozystaniem bazy danych.
oczywiscie mozesz sobie sam ustalic ile wpisow ma sie pokazywac nie musisz odrazu wszystkie wyswietlac np ostatnie 10 lub 20 ile bedziesz chcial


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
lopik
post 15.08.2006, 21:41:53
Post #4





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


@lukir, dzieki wielkie dziala smile.gif

@skowron-line, w sumie to by było tez dobre smile.gif

A gdzie to sie ustawia ile wpisów ma byc pokazane ?
Ale w tym pliku txt będą wczystkie tak ? nie tylko te pokazane ?

Aha, i ta księga tak dodaje wpisy do pliku .txt tak, ze najnowsze wpisy są zawsze na dole w pliku, nie są na samej górze jako pierwszy wiersz, ma to jakieś znaczenie ?

Prosze powiedzcie jak to zrobić z tymi wpisami, zeby wyswietlał daną ilość smile.gif

Dzieki!!!

Ten post edytował pik 15.08.2006, 21:42:56


--------------------
w3c & c++
Go to the top of the page
+Quote Post
skowron-line
post 15.08.2006, 21:49:48
Post #5





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


wyciagajac z pliku wrzyc do tablicy funkcja file() policz, odwroc i wyswietlajac w petli ustaw ograniczenie...

to tak po krotce

edit:

w sumie to nie musisz liczyc bo i tak chcesz jakas konkretna ilosc

Ten post edytował skowron-line 15.08.2006, 21:51:09


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
lopik
post 15.08.2006, 21:51:50
Post #6





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


ale ja niestety nie znam zadnych funkcji php, nic sad.gif

jesli mozna prosić, o kawałek tego kodu, to bede wdzięczny

//e:

chce np. 10 ostatnich

Ten post edytował pik 15.08.2006, 21:52:25


--------------------
w3c & c++
Go to the top of the page
+Quote Post
skowron-line
post 15.08.2006, 21:54:36
Post #7





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


mowisz masz
  1. <?php
  2. for ($i=0;$i<10;$i++) {
  3. $wpis = explode("`",$wpisy[$i]);
  4. echo "<p><b>$wpis[1]</b> - <i>$wpis[3]</i><br>$wpis[4]<p>";
  5. }
  6. ?>


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
lopik
post 15.08.2006, 22:12:12
Post #8





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


hmm jakos nie dzial mi to, jak jest dla div'a "overflow" to sie robi scrollbar, a jak nie ma to wychodzi poza div'a :|


--------------------
w3c & c++
Go to the top of the page
+Quote Post
skowron-line
post 15.08.2006, 22:15:42
Post #9





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


to nie ustawiaj wysokosci diva tylko niech sie rozszeza samoistnie


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
lukir
post 16.08.2006, 12:37:01
Post #10





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 6.08.2004
Skąd: Warszawa

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


@skowron-line: ten "overflow" jest potrzebny, bo pik chce, żeby nie rozciągąło mu div'a...
@pik: Nie usuwaj "overflow" ale w samym kodzie php wpisz to co podał Ci skowron-line...
Twój plik HTML powinien wyglądać tak:
  1. <title>Guest Book</title>
  2. .content
  3. {
  4. width: 200px;
  5. height: 400px;
  6. overflow: auto;
  7. }
  8. </head>
  9. <div class="content">
  10. <!-- tutaj jest skrypt php -> patrz niżej... -->
  11. </div>
  12. </body>
  13. </html>

A skrypt tak:
  1. <?php
  2. $ksiega = "ksiega.txt";
  3. $imie=$_POST["imie"];
  4. $email=$_POST["email"];
  5. $www=$_POST["www"];
  6. $wpis=$_POST["wpis"]; 
  7.  
  8. if (strlen($wpis)>5) {
  9. $f=fopen($ksiega,"a");
  10. $rekord="`$imie`$email`$www`$wpis`";
  11. $rekord=ereg_replace(10," ",$rekord);
  12. $rekord=ereg_replace(13," ",$rekord);
  13. fputs($f,"$rekordn");
  14. fclose($f); 
  15. }
  16.  
  17. $wpisy=file($ksiega); 
  18. $wpisy=array_reverse($wpisy);
  19. $ile=count($wpisy);
  20.  
  21. for ($i=0;$i<$ile;$i++) {
  22. $wpis = explode("`",$wpisy[$i]);
  23. echo "<b>$wpis[1]</b> - <i>$wpis[3]</i><br >$wpis[4]<br ><br >";
  24. }
  25. ?>

I nie potrzebujesz modyfikować kodu php, bo wyświetla dane najnowsze "na górze" div'a.

Ten post edytował lukir 16.08.2006, 12:39:47


--------------------
"Tylko myśl dojrzała i jasna daje się wypowiedzieć w słowach prostych" - prof. Witold Doroszewski
Warsztat: os: Windows XP, serwer: Apache 2.0.55, php: 5.1.4, baza danych: MySQL 4.1.7.
Go to the top of the page
+Quote Post
lopik
post 16.08.2006, 14:25:56
Post #11





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


Hmm dalej mi to nie może wyjść :|

Jeszcze raz, chciał bym mieć te wpisy widoczne po prawej stronie formularza, zobaczcie sobie tego diva w kodzie do wpisów div#wpisy, tam mają być wyswietlane wpisy, i zmieści sie ich 8 tak policzyłem, to też zalezy jaki jest długi, więć chce zeby 6 ostatnich wpisów było widoczne, reszta czyli te starsze niz 6 ostatnich, ma być dostępne tylko w pliku .txt i nie chce zeby wyświetla ł się scrollbar.

I ma to wyglądać dobrze na tej stronie http://lopik.ovh.org/test_ksiega/guestbook.php (to juz poprawna strona, nie testowa)

Z Góry Dzięki za Pomoc exclamation.gif
I Dziękuję za Wyrozumiałość.
Pozdrawiam

//

W sumie to chyba musze zostac przy tym scrollbar'u bo mam teraz tak ze 3 wpisy mi sie zmieszczą max bo długie są ;/

//

Ale chybanajlepszym rozwiązaniem było by, zeby sie tworzyły te linki, jeśli wpisów jest juz dużo to się zrobi, pod tym div'em link "1", "2" itd.
Ale to obawaim sie ze jest nie mozliwe tak po prostu zrobić ;/

Ten post edytował pik 16.08.2006, 15:12:16


--------------------
w3c & c++
Go to the top of the page
+Quote Post
lukir
post 16.08.2006, 19:02:33
Post #12





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 6.08.2004
Skąd: Warszawa

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


1) Zobacz: stronicowanie na forum.
2) Kod php (wyświetla 3 ostatnie wpisy):
  1. <?php
  2. $ksiega = "ksiega.txt";
  3. $imie=$_POST["imie"];
  4. $email=$_POST["email"];
  5. $www=$_POST["www"];
  6. $wpis=$_POST["wpis"]; 
  7.  
  8. if (strlen($wpis)>5) {
  9. $f=fopen($ksiega,"a");
  10. $rekord="`$imie`$email`$www`$wpis`";
  11. $rekord=ereg_replace(10," ",$rekord);
  12. $rekord=ereg_replace(13," ",$rekord);
  13. fputs($f,"$rekordn");
  14. fclose($f);
  15. } 
  16.  
  17. $wpisy=file($ksiega);
  18. $wpisy=array_reverse($wpisy);
  19. $ile=3; //to sprawi, że będziesz miał tylko 3 wpisy, ale lepsze jest stronicowanie...
  20.  
  21. for ($i=0;$i<$ile;$i++) {
  22. $wpis = explode("`",$wpisy[$i]);
  23. echo "<b>$wpis[1]</b> - <i>$wpis[3]</i><br >$wpis[4]<br ><br >";
  24. }
  25. ?>

//edit: Proponowałbym również filtr danych (e-mail, www, itp.)

Ten post edytował lukir 16.08.2006, 19:06:29


--------------------
"Tylko myśl dojrzała i jasna daje się wypowiedzieć w słowach prostych" - prof. Witold Doroszewski
Warsztat: os: Windows XP, serwer: Apache 2.0.55, php: 5.1.4, baza danych: MySQL 4.1.7.
Go to the top of the page
+Quote Post
lopik
post 17.08.2006, 15:01:46
Post #13





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


No tak dziala teraz, tylko ze wpisy jak już są w pliku .txt
I nie działa dodawanie wpisów. Wyczyściłęm plik .txt zeby sprawdzić tak, i tez nie działa dodawanie wpisów, tzn. nie dodaje wpisów sad.gif

Mozesz sprawdzić: http://lopik.ovh.org/test_ksiega/guestbook.php

php wygląda tam w tej chwili tak:

  1. <?
  2. $ksiega = "ksiega.txt";
  3.  
  4. $imie=$_POST["imie"];
  5. $email=$_POST["email"];
  6. $www=$_POST["www"];
  7. $wpis=$_POST["wpis"];
  8.  
  9.  
  10. if (strlen($wpis)>5) {
  11. $f=fopen($ksiega,"a");
  12. $rekord="`$imie`$email`$www`$wpis`";
  13. $rekord=ereg_replace(10," ",$rekord);
  14. $rekord=ereg_replace(13," ",$rekord);
  15. fputs($f,"$rekordn"); fclose($f);
  16. }
  17.  
  18. $wpisy=file($ksiega);
  19. $wpisy=array_reverse($wpisy);
  20. $ile=5;
  21. for ($i=0;$i<$ile;$i++) {
  22. $wpis = explode("`",$wpisy[$i]);
  23. echo "<p><b>$wpis[1]</b> - <i>$wpis[3]</i><br>$wpis[4]<p>";
  24. }
  25.  ?>


Twoja propozycja jest ciekawa, przydało by się, ale, ja sam nic nie zrobie w php bo nie umiem jeszcze, ucze się powoli, ale to nie jest język, który szybko wchodzi do głowy ;/

Stronnicowanie, tzn. zrobienie pod stron jeśli dobrze zrozumiałem, tak to by było najlepsze rozwiązanie, tylko j/w nie znam php :|

//

Ale dziwne, na krasnalu mi działa to pokazywanie trzech ostatnich wpisów, a na serwie nie :| (ten powyższy kod)
Co moze być nie tak ?

Ten post edytował pik 17.08.2006, 15:36:23


--------------------
w3c & c++
Go to the top of the page
+Quote Post
lukir
post 17.08.2006, 20:24:25
Post #14





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 6.08.2004
Skąd: Warszawa

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


1) Możliwe, że chodzi o uprawnienia pliku... Patrz: chmod" title="Zobacz w manualu php" target="_manual.
2) Pobierz klasę PAGER V2.0 PHP5 (http://nospor.vis-maior.net/index.php?m=dw...f1b1913f5cf5dee) nospora.

Taki skrypt mi chodzi cacy:
  1. <?php
  2. //skrypt na podstawie PAGERA V2.0, autorstwa ~nospora :)
  3. require_once('Pager.class.php');
  4.  
  5. $ksiega = "ksiega.txt";
  6. $imie=$_POST["imie"];
  7. $email=$_POST["email"];
  8. $www=$_POST["www"];
  9. $wpis=$_POST["wpis"];
  10.  
  11. if (strlen($wpis)>5) {
  12. $f=fopen($ksiega,"a");
  13. $rekord="`$imie`$email`$www`$wpis`";
  14. $rekord=ereg_replace(10," ",$rekord);
  15. $rekord=ereg_replace(13," ",$rekord);
  16. fputs($f,"$rekord ");
  17. fclose($f);
  18. }
  19.  
  20. $wpisy=file($ksiega);
  21. $wpisy=array_reverse($wpisy);
  22. $ile=count($wpisy); 
  23.  
  24. $tab = array();
  25. $totalRecords = count($wpisy);
  26.  
  27. for ($i=0; $i<$totalRecords; $i++){
  28.  $wpis = explode("`",$wpisy[$i]);
  29.  $txt = "<p><b>".$wpis[1]."</b> - <i>".$wpis[3]."</i><br>".$wpis[4]."<p>";
  30.  $tab[$i]['TEXT'] = $txt;
  31. }
  32.  
  33. try {
  34.  $pager = new Pager('idPagera');
  35.  $pager->SetTotalRecords($totalRecords);
  36.  $pager->SetRecordsPerPage(5);
  37.  $pager->SetPagesPerNav(5);
  38.  $pag = $pager->Render();
  39.  $indexStart = $pager->GetIndexRecordStart();
  40.  $indexEnd = $pager->GetIndexRecordEnd();
  41. }
  42. catch (Exception $e) {
  43.  echo $e->getMessage();
  44. }
  45.  
  46. echo '<table>';
  47. for ($i=$indexStart; $i<=$indexEnd;$i++)
  48.  echo "<tr><td>{$tab[$i]['TEXT']}</td></tr>";
  49. echo '</table>';
  50. echo $pag;
  51. ?>


Ten post edytował lukir 17.08.2006, 20:28:07


--------------------
"Tylko myśl dojrzała i jasna daje się wypowiedzieć w słowach prostych" - prof. Witold Doroszewski
Warsztat: os: Windows XP, serwer: Apache 2.0.55, php: 5.1.4, baza danych: MySQL 4.1.7.
Go to the top of the page
+Quote Post
lopik
post 21.08.2006, 15:26:38
Post #15





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


OK juz dziękuję za pomoc, wszystko gotowe smile.gif
Znalazłęm inny skrypt do księgi. smile.gif

Strona w profilu smile.gif

Dziękuję.
Pozdrawiam.


--------------------
w3c & c++
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: 29.06.2025 - 08:33