Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Księga gości - wyswietlanie wpisów
Forum PHP.pl > Forum > PHP
lopik
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. ?>
lukir
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
skowron-line
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
lopik
@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!!!
skowron-line
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
lopik
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
skowron-line
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. ?>
lopik
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 :|
skowron-line
to nie ustawiaj wysokosci diva tylko niech sie rozszeza samoistnie
lukir
@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.
lopik
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ć ;/
lukir
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.)
lopik
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 ?
lukir
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. ?>
lopik
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.
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.