Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]ksiega
dave666
post
Post #1





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 1.04.2008

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


Mógłby mi ktoś pomóc to połączyć w jeden dzialający poprawnie skrypt bo jest tak ze wyświetla wpisy tak jak powinno a pod spodem tam gdzie działą stronicowanie pokazuje w jednym ciągu
  1. <?php
  2. $max_na_stronie = 6;
  3. if(isset($_GET['strona']) && is_numeric($_GET['strona'])){
  4. $strona = $_GET['strona'];
  5. } else {
  6. $strona = 1;
  7. }
  8. $file = file('wpisy.txt');
  9.  
  10. foreach($file as $key => $value)
  11. {
  12.   $data = explode('|||', $value);
  13.  
  14.   echo '<b>Imię:</b> '. $data[0] .'<br>';
  15.   echo '<b>e-mail:</b> '. $data[1] .'<br>';
  16.   echo '<b>www:</b> '. $data[2] .'<br>';
  17.   echo '<b>treść:</b> '. $data[3] .'<br>';
  18.   $tresc = wordwrap($data[4], 90, "<br>", 1);
  19.   echo $tresc .'<br><br><hr>';
  20.  
  21. }
  22. for($i=$strona*$max_na_stronie - $max_na_stronie;$i < $strona * $max_na_stronie; $i++){
  23. if(isset($file[$i])){
  24. echo $file[$i];
  25.  
  26. }
  27. }
  28.  
  29. if($strona > 1){
  30. echo ("<center>");
  31. echo ("<br><br>");
  32. echo ("<a href=index.php?id=ksiega&strona=");
  33. echo ($strona-1);
  34. echo ("> Poprzednia strona </a>");
  35. }
  36. if(count($file) > $strona*$max_na_stronie){
  37. echo ("<a href=index.php?id=ksiega&strona=");
  38. echo ($strona+1);
  39. echo ("> Następna strona </a>");
  40. }
  41. ?>



jak cos to mogę pokazac jak to wyglada jaki ma błąd

Ten post edytował dave666 17.12.2008, 17:26:45
Go to the top of the page
+Quote Post
Procesor
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 2
Dołączył: 17.12.2008

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


A możesz dokładniej opisać problem, bo nie za bardzo zrozumiałem (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
dave666
post
Post #3





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 1.04.2008

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


z wiec tak :
wyglada na to ze skrypt dwa razy otwiera text zapisany w wpisy.txt a wyglada to następująco

Imię: Ula
e-mail:
www: http://
treść: treść komentarza bla bla bla bla ------------ poprawnie
----------------------------------------------------------------------------
i tak dalej a pod tym jest takie cos
-----------------------------------------------------------------------------
artys||||||http://||||||teść komentarza bla bla bla sylwia||||||http://||||||treść komentarza bla bla bla bla ||||||http://||||||treść komentarza bla bla bla bla xxxxx||||||http://||||||treść komentarza bla bla bla bla

czyli nie jest tak jak powinno ---- ciag wszystkich komentarzy w jednym ciagu a nie tak jak wyzej czyli poprawnie

(IMG:http://odsiebie.com/thumb.php/122953215251.JPG)

Ten post edytował dave666 17.12.2008, 18:39:19
Go to the top of the page
+Quote Post
Lion_87
post
Post #4





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

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


Dlaczego dwa razy otwiera? bo tak sobie życzy ten skrypt o tuuu
  1. <?php
  2. for($i=$strona*$max_na_stronie - $max_na_stronie;$i < $strona * $max_na_stronie; $i++){
  3. if(isset($file[$i])){
  4. echo $file[$i];
  5.  
  6. }
  7. }
  8. ?>
Go to the top of the page
+Quote Post
dave666
post
Post #5





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 1.04.2008

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


oki ale jak usunę
  1. <?
  2. for($i=$strona*$max_na_stronie - $max_na_stronie;$i < $strona * $max_na_stronie; $i++){
  3. if(isset($file[$i])){
  4. echo $file[$i];
  5.  
  6. }
  7. }
  8. ?>
to owszem znika to na dole ale nie dzieli pliku na części po 6 komentarzy
Go to the top of the page
+Quote Post
Lion_87
post
Post #6





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

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


bo do tego by podzielić na 6 właśnie potrzebna jest pętla for() (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
dave666
post
Post #7





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 1.04.2008

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


tak zrobiłem ale cos dalej jest nie tak
  1. <?php
  2. $max_na_stronie = 6;
  3. if(isset($_GET['strona']) && is_numeric($_GET['strona'])){
  4. $strona = $_GET['strona'];
  5. } else {
  6. $strona = 1;
  7. }
  8. $file = file('wpisy.txt');
  9.  
  10. for($i=$strona*$max_na_stronie - $max_na_stronie;$i < $strona * $max_na_stronie; $i++){
  11. if(isset($file[$i])){
  12.    echo $file[$i];
  13.   echo '<b>Imię:</b> '. $data[0] .'<br>';
  14.   echo '<b>e-mail:</b> '. $data[1] .'<br>';
  15.   echo '<b>www:</b> '. $data[2] .'<br>';
  16.   echo '<b>treść:</b> '. $data[3] .'<br>';
  17.   $tresc = wordwrap($data[4], 90, "<br>", 1);
  18.   echo $tresc .'<br><br><hr>';
  19. }
  20. }
  21.  
  22. if($strona > 1){
  23. echo ("<center>");
  24. echo ("<br><br>");
  25. echo ("<a href=index.php?id=ksiega&strona=");
  26. echo ($strona-1);
  27. echo ("> Poprzednia strona </a>");
  28. }
  29. if(count($file) > $strona*$max_na_stronie){
  30. echo ("<a href=index.php?id=ksiega&strona=");
  31. echo ($strona+1);
  32. echo ("> Następna strona </a>");
  33. }
  34. ?>
Go to the top of the page
+Quote Post
Lion_87
post
Post #8





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

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


Aby wyswietlic iles tam w jednum pliku musisz cos w tym stylu robic....
  1. <?php
  2. $max_na_stronie = 6;
  3. if(isset($_GET['strona']) && is_numeric($_GET['strona'])){
  4. $strona = $_GET['strona'];
  5. } else {
  6. $strona = 1;
  7. }
  8. $file = file('wpisy.txt');
  9.  
  10. for($i=0;$i < 6; $i++){
  11. $data = explode('|||', $file[$i]);
  12.  
  13.  echo '<b>Imię:</b> '. $data[0] .'<br>';
  14.  echo '<b>e-mail:</b> '. $data[1] .'<br>';
  15.  echo '<b>www:</b> '. $data[2] .'<br>';
  16.  echo '<b>treść:</b> '. $data[3] .'<br>';
  17.  $tresc = wordwrap($data[4], 90, "<br>", 1);
  18.  echo $tresc .'<br><br><hr>';
  19.  
  20. }
  21.  
  22. ?>
Go to the top of the page
+Quote Post
dave666
post
Post #9





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 1.04.2008

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


Super działa tak jak miło tylko jest ten problem ze nie zmienia strony - co usunełem czego nie powinienem usówac
  1. <?php
  2. $max_na_stronie = 6;
  3. if(isset($_GET['strona']) && is_numeric($_GET['strona'])){
  4. $strona = $_GET['strona'];
  5. } else {
  6. $strona = 1;
  7. }
  8. $file = file('wpisy.txt');
  9.  
  10. for($i=0;$i < 6; $i++){
  11. $data = explode('|||', $file[$i]);
  12.  
  13. echo '<b>Imię:</b> '. $data[0] .'<br>';
  14. echo '<b>e-mail:</b> '. $data[1] .'<br>';
  15. echo '<b>www:</b> '. $data[2] .'<br>';
  16. echo '<b>treść:</b> '. $data[3] .'<br>';
  17. $tresc = wordwrap($data[4], 90, "<br>", 1);
  18. echo $tresc .'<br><br><hr>';
  19.  
  20. }
  21. if($strona > 1){
  22. echo ("<center>");
  23. echo ("<br><br>");
  24. echo ("<a href=index.php?id=ksiega&strona=");
  25. echo ($strona-1);
  26. echo ("> Poprzednia strona </a>");
  27. }
  28. if(count($file) > $strona*$max_na_stronie){
  29. echo ("<a href=index.php?id=ksiega&strona=");
  30. echo ($strona+1);
  31. echo ("> Następna strona </a>");
  32. }
  33. ?>
Go to the top of the page
+Quote Post
Lion_87
post
Post #10





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

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


nie zmieniaja bo musisz pobawić sie tą linia
  1. <?php
  2. for($i=0;$i < 6; $i++){
  3. ?>


Ten post edytował Lion_87 17.12.2008, 20:04:10
Go to the top of the page
+Quote Post
dave666
post
Post #11





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 1.04.2008

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


Jak wpisze tak jak ty napisałeś to od razu jest błąd strony nie wyświetla jej
Go to the top of the page
+Quote Post
Lion_87
post
Post #12





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

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


Ja CI nic nie kazałem wpisywac (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
masz tą linie i ja modyfikuj sam. Nic trudnego.
  1. <?php
  2. $i=0;$i < 6
  3. ?>

pierwsza strona od poczatku do 6 lini
nastepna strona
  1. <?php
  2. $i=6;$i < 12
  3. ?>

itd.........
Go to the top of the page
+Quote Post
zegarek84
post
Post #13





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


powinno działać stronicowanie...
  1. <?php
  2. $ile=6; //ile na stronie wyników
  3. $strona=1; //która strona
  4. $od=($strona-1)*$ile;
  5. $do=$strona*$ile;
  6.  
  7. for($i=$od;$i<$do;++$i){..........................}
  8.  
  9. ?>


Ten post edytował zegarek84 17.12.2008, 20:24:40
Go to the top of the page
+Quote Post
dave666
post
Post #14





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 1.04.2008

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


tak zgadza się dzięki za pomoc już zajarzyłem o co ci chodzi
dałem tak

  1. <?
  2. for($i=$strona*$max_na_stronie - $max_na_stronie;$i < $strona * $max_na_stronie; $i++){
  3. ?>


tylko jak jest np 32 komentarzy to 4 są po prostu puste

Ten post edytował dave666 17.12.2008, 20:27:40
Go to the top of the page
+Quote Post
zegarek84
post
Post #15





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


$strona * $max_na_stronie - oblicz to przed pętlą bo inaczej liczy Ci to w każdym przebiegu i jest to wolniejsze... zamiast $i++ możesz też użyć ++$i


ps jeśli już rozumiesz jak działają operacje na plikach tekstowych to proponowałbym Ci coś tylko trochę trudniejszego - wykonanie księgi w bazie SQLite przy wykorzystaniu PDO - jeśli nauczysz się podstawowych zapytań SQL to z bazy będziesz mógł dowolnie zwracać wyniki i na przyszłość by Ci się przydało a SQLite opiera się też tylko o jeden plik i w sumie nie jest takie ubogie...

Ten post edytował zegarek84 17.12.2008, 20:30:57
Go to the top of the page
+Quote Post
dave666
post
Post #16





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 1.04.2008

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


to cały skrypt juz dzialający całkiem dobrze z tym jedynym błędem
  1. <?php
  2. $max_na_stronie = 6;
  3. if(isset($_GET['strona']) && is_numeric($_GET['strona'])){
  4. $strona = $_GET['strona'];
  5. } else {
  6. $strona = 1;
  7. }
  8. $file = file('wpisy.txt');
  9.  
  10. for($i=$strona*$max_na_stronie - $max_na_stronie;$i < $strona * $max_na_stronie; ++$i){
  11. $data = explode('|||', $file[$i]);
  12.  
  13. echo '<b>Imię:</b> '. $data[0] .'<br>';
  14. echo '<b>e-mail:</b> '. $data[1] .'<br>';
  15. echo '<b>www:</b> '. $data[2] .'<br>';
  16. echo '<b>treść:</b> '. $data[3] .'<br>';
  17. $tresc = wordwrap($data[4], 90, "<br>", 1);
  18. echo $tresc .'<br><br><hr>';
  19. }
  20. if($strona > 1){
  21. echo ("<center>");
  22. echo ("<br><br>");
  23. echo ("<a href=index.php?id=ksiega&strona=");
  24. echo ($strona-1);
  25. echo ("> Poprzednia strona </a>");
  26. }
  27. if(count($file) > $strona*$max_na_stronie){
  28. echo ("<a href=index.php?id=ksiega&strona=");
  29. echo ($strona+1);
  30. echo ("> Następna strona </a>");
  31. }
  32. ?>

zegarek84 - nie bardzo rozumiem tego co masz na mysli
$strona * $max_na_stronie - oblicz to przed pętlą bo inaczej liczy Ci to w każdym przebiegu i jest to wolniejsze...

Go to the top of the page
+Quote Post
zegarek84
post
Post #17





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


jaki błąd?? - masz na myśli puste komentarze?? spróbuj tak jak teraz - gdzie przez "krótki if" sprawdziłem do ilu ma być przebieg pętli $do=($strona*$ile<count($file))?($strona*$ile):count($file); .... co do tego "wolniejsze" to za każdym razem w pętli Ci obliczało do ilu to $i ma dążyć - a możesz to policzyć raz poza pętlą... jeśli planujesz też bardzo dużą księge gości to zamiast file() proponuję skorzystać z wolniejszego ale mniej pamięciożernego fgets() które czyta linijkę po linijce a nie cały plik - tyle, że teraz masz juz rozwiązane a pod fgets() musiałbyś przebudować kod.....
  1. <?php
  2. $ile=6; //ile na stronie wyników
  3. $strona=1; //która strona
  4. $od=($strona-1)*$ile;
  5. $do=($strona*$ile<count($file))?($strona*$ile):count($file);
  6.  
  7. for($i=$od;$i<$do;++$i){..........................}
  8.  
  9. ?>
Go to the top of the page
+Quote Post
dave666
post
Post #18





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 1.04.2008

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


Lion_87 nie wiem czy to o to ci chodziło ale coś takiego zrobiłem działa wszystko jest elegancko tak jak powinno

  1. <?php
  2. define('MAX', 6); // maksymalna liczba wpisow na stronie
  3. $file = 'wpisy.txt';
  4.  
  5. $aLines = file($file);
  6. $iCount = count($aLines);
  7. $iStart = @(int)$_GET['start'];
  8.  
  9. for($i=$iStart; $i < $iCount && $i < $iStart + 5; $i++) {
  10.    $data = explode('|||', $aLines[$i]);
  11. echo '<b>Imię:</b> '. $data[0] .'<br>';
  12. echo '<b>e-mail:</b> '. $data[1] .'<br>';
  13. echo '<b>www:</b> '. $data[2] .'<br>';
  14. echo '<b>treść:</b> '. $data[3] .'<br>';
  15. $tresc = wordwrap($data[4], 90, "<br>", 1);
  16. echo $tresc .'<br><br><hr>';
  17. }
  18.  
  19. if($iCount > MAX) {
  20.    pagenumbering($iStart, MAX, $iCount, '');
  21.  
  22. }
  23. /**
  24.  * $start - od ktorej pozycji mamy wyswietlac infromacje
  25.  * $one_page - ile informacji na jednej stronie
  26.  * $quantity - calkowita ilosc informacji mozliwych do wyswietlenia
  27.  * $get - czesc url, przesyla potrzebne dane
  28.  */
  29. function pagenumbering($start, $one_page, $quantity, $get='') {
  30.  
  31.    // czy potrzebne jest stronicowanie
  32.    if($one_page >= $quantity) {
  33.        return;
  34.    }
  35.  
  36.    // strzalka w lewo, wstecz
  37.    if($start!=0) {
  38.        echo '<a href="index.php?id=ksiega1'. $get .'&amp;start='. ($start-$one_page) .'">wstecz</a> ';
  39.    }
  40.  
  41.    // numeruj strony, zaznacz na ktorej jestes
  42.    for($i=0, $j=1; $i<$quantity; $i+=$one_page, ++$j) {
  43.        if($start <= $i && $start > $i-$one_page) {
  44.            echo $j.' ';
  45.        }
  46.        else {
  47.            echo '<a href="index.php?id=ksiega1'. $get .'&amp;start='. $i .'">'. $j .'</a> ';
  48.        }
  49.    }
  50.  
  51.    // strzalka w prawo, dalej
  52.    if($start+$one_page < $quantity) {
  53.        echo '<a href="index.php?id=ksiega1'. $get .'&amp;start='. ($start+$one_page) .'">dalej</a>';
  54.    }
  55.  
  56. }
  57.  
  58. ?>
Go to the top of the page
+Quote Post

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: 23.08.2025 - 22:38