Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Nie dziła dzielenie wpisów na stronie
Forum PHP.pl > Forum > Przedszkole
david8213
  1. <?
  2.  
  3. $nazwa = "data.txt";
  4. $myFile = fopen($nazwa, "r");
  5. $i=0;
  6. while(!feof($myFile)) {
  7. $myLine = fgets($myFile);
  8. $i++; }
  9. fclose($myFile);
  10. print(" <font color=black>Liczba wpisów: <b>$i</b><BR><BR>");
  11. $nazwa = "data.txt";
  12. $myFile = fopen($nazwa, "r");
  13. $k=1;
  14. $end=$st+19;
  15. while(!feof($myFile))
  16. {
  17. $myLine = fgets($myFile);
  18. if ($k>=$st)
  19. {
  20. if ($k<=$end) {
  21. print("$myLine");
  22. };
  23. };
  24. $k++;
  25. }
  26. fclose($myFile);
  27. print("<br><center><font color=black>kolejne strony ... ");
  28. $ile=floor($i/19);
  29. $ctpage=floor($st/19)+1;
  30. for ($z=0;$z<=$ile;$z++)
  31. {
  32. $y=$z+1;
  33. if ($y==$ctpage) {print ("<FONT color=#000000> $y ");}
  34. else {print ("<A HREF=\"czytaj.php?st=".($z*2)."0\"> $y </A>");}
  35. };
  36. ?>


Co jest nie tak że nie działa dzielenie wpisów po 20
Dane wczytywane są z pliku tekstowego
Kshyhoo
Prześledź ten kod:
  1. <?php
  2. function pasek($rekordow, $na_stronie, $na_pasku, $skrypt, $s) {
  3. $stron = ceil($rekordow / $na_stronie);
  4. if ($s < 1)
  5. $s = 1;
  6. if ($s > $stron)
  7. $s = $stron;
  8. $koniec = $s + $na_pasku;
  9. if ($s <= $na_pasku)
  10. $koniec = $na_pasku * 2 + 1;
  11. if ($koniec > $stron)
  12. $koniec = $stron;
  13. $start = $koniec - $na_pasku * 2;
  14. if ($start < 1)
  15. $start = 1;
  16. if ($s > 1)
  17. $p = "<a href='$skrypt".($s - 1)."'>&lt;&lt;&lt;</a>";
  18. else
  19. $p = "<span style='color:gray'>&lt;&lt;&lt;</span>";
  20. if ($s < $stron)
  21. $n = "<a href='$skrypt".($s + 1)."'>&gt;&gt;&gt;</a>";
  22. else
  23. $n = "<span style='color:gray'>&gt;&gt;&gt;</span>";
  24. for ($i=$start; $i<=$koniec; $i++) {
  25. if ($i == $s)
  26. $l .= "&nbsp;<span style='color:#c00;'><b>$i</b></span>&nbsp;";
  27. else
  28. $l .= "&nbsp;<a href='$skrypt$i'>$i</a>&nbsp;";
  29. }
  30. if ($rekordow < 1)
  31. $wynik = "brak informacji spełniających kryteria wyszukiwania";
  32. else
  33. $wynik = "znalezionych: $rekordow, strona $s z $stron<br />";
  34. if ($stron > 1)
  35. $wynik .= "$p&nbsp; - $l - &nbsp;$n";
  36. return $wynik;
  37. }
  38.  
  39. $s = ($_GET["s"] > 1) ? number_format($_GET["s"], 0, "", "") : 1; // numer strony
  40. $na_stronie = 10; // liczba rekordow widocznych na stronie
  41. $na_pasku = 5; // liczba odpowiedzi/2 na pasku
  42. $skrypt = "index.php?s="; // skrypt do wysyłania danych
  43.  
  44. $dane = file('tekst.txt');
  45.  
  46. $rekordow = count($dane);
  47. $stron = ceil($rekordow / $na_stronie);
  48. if ($s > $stron and $rekordow > 0)
  49. $start = ($stron - 1) * $na_stronie;
  50. else
  51. $start = ($s - 1) * $na_stronie;
  52. if ($start + $na_stronie > $rekordow)
  53. $koniec = $start + $rekordow % $na_stronie;
  54. else
  55. $koniec = $start + $na_stronie;
  56.  
  57. echo '<p style="text-align:center;">';
  58. echo pasek($rekordow, $na_stronie, $na_pasku, $skrypt, $s);
  59. echo '</p>';
  60.  
  61. for($i=$start; $i<$koniec; $i++)
  62. echo "<p>$dane[$i]</p>";
  63.  
  64. echo '<p style="text-align:center;">';
  65. echo pasek($rekordow, $na_stronie, $na_pasku, $skrypt, $s);
  66. echo '</p>';
  67. ?>
david8213
Mógłbyś mi pomóc jeszcze dodając kod który bedzie wyswietlał dane z mojego pliku razem z Twoim kodem ?
Kshyhoo
Tak ciężko zmienić dane w:
  1. $dane = file('tekst.txt');

questionmark.gif
david8213
Nie ciężko
Zmieniłem i nie działa dlatego napisałem posta z prośbą o pomoc

  1. $dane = file('data.txt');
Kshyhoo
Może nazwę pliku masz inną i nie działąją zmienne w _GET?
  1. $skrypt = "index.php?s=";
Popek231
Jeśli wysyłasz na dobry adres zmienną, do skryptu, to powinno, a wręcz musi działać.

Może spróbuj z file_get_contents();
Albo z tym, co masz w swoim kodzie (bo u siebie masz fopen(), itd), przerób pod kod Ksyhyhoo wink.gif
david8213
Cytat(Kshyhoo @ 13.03.2016, 07:45:18 ) *
Może nazwę pliku masz inną i nie działąją zmienne w _GET?
  1. $skrypt = "index.php?s=";


Tak u mnie tez jest ten kod w pliku index.php i niestety nie dziala
Kshyhoo
To nie wiem, u mnie śmiga bez problemu. Może wrzuć na jakiś serwer dla testu.
david8213
Powyższy kod działa.

A jeżeli mam zrobione wpisy na tablicy to powyższy kod już nie zadziała

index.php
  1. <FORM ACTION="return.php" METHOD="POST">
  2.  
  3.  
  4. Autor: &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;
  5.  
  6. <INPUT NAME="autor" TYPE="TEXT" SIZE="30"><BR><BR>
  7. E-mail: &nbsp; &nbsp; &nbsp; &nbsp;
  8. <INPUT NAME="adres" TYPE="TEXT" SIZE="30" MAXLENGTH="200"><BR><BR>
  9. Treść: &nbsp; &nbsp; &nbsp; &nbsp;<BR><BR>
  10. <TEXTAREA NAME="tresc" WRAP COLS=55 ROWS=10></TEXTAREA><BR><BR> &nbsp; &nbsp; &nbsp;
  11. <INPUT TYPE=SUBMIT VALUE= " Dopisz " style="BACKGROUND-COLOR: #333333; FONT-FAMILY : Verdana; FONT-SIZE : 12; color: #FFFFFF"> &nbsp; &nbsp; &nbsp;
  12. <INPUT TYPE="RESET" VALUE=" Wyczyść " style="BACKGROUND-COLOR: #333333; FONT-FAMILY : Verdana; FONT-SIZE : 12; color: #FFFFFF">
  13. </FORM></DIV>


  1. <?php
  2. $file = file("data.txt");
  3. foreach($file as $value) {
  4. $exp = explode("|",$value);
  5. echo "<center>";
  6.  
  7. echo "<table width=700><tr><td bgcolor=#C0C0C0><b><a href=mailto:$exp[1]> <i>$exp[0]</a></td><td bgcolor=#C0C0C0><div align=right><i><b>".date("d.m.Y")."<b> - ".date("H:i")."<tr><td colspan=2 bgcolor=#C0C0C0><div style=\"margin-left:5\" style=\"margin-right:5\"><font color=black><b>$exp[2]</td></tr></table><br>";
  8. echo "</center>";
  9. }
  10. ?>



wtedy plik data.txt wygląda tak :
  1. 11111111111111|222222222222|3333333333 \n
  2.  
  3. aaaaaaaaaaaaaa|bbbbbbbbbbbb|ccccccccccc \n
  4.  
  5. eeeeeeeeeeeeee|fffffffffffffffffffff|gggggggggg \n
  6.  
  7. hhhhhhhhhhhhhh|yyyyyyyyyyyy|jjjjjjjjjjjjjjjjjj \n
  8.  
  9. tttttttttttttttttttttttt|jjjjjjjjjjjjjjjjjjjjj|mmmmmmm \n
Kshyhoo
No przecież to przykład, musisz go dopasować do własnych danych lub też zmienić sposób zapisywania danych...

Musisz po prostu dodać trochę kodu, która "rozbierze" linijkę na tablicę.
Kshyhoo
Trzeba było od razu napisać, że chcesz gotowca. Przeniósłbym wątek i po problemie...
Dostajesz tablicę:
  1. for($i=$start; $i<$koniec; $i++)
  2. echo "<p>$dane[$i]</p>";

Wystarczy, że zmienisz sposób jej wyświetlania.
david8213
  1. for($i=$start; $i<$koniec; $i++)
  2. echo "<p>$dane[$i]</p>";


Jak wstawić w miejscu [$i] <tabele itd ?
Kshyhoo
Każdą wartość array do wiersza, komórki tabeli, jak tam chcesz. Oczywiście jako zmienne...

Może tak:
  1. $plik = file('dane.txt');
  2.  
  3. foreach ($plik as $linia) {
  4. $tablica[] = explode("|", $linia);
  5. }
  6.  
  7. echo "<pre>"; print_r($tablica); echo "</pre>";

Teraz masz tablicę wielowymiarową. Plik jest tablicą i każdy wiersz jest tablicą. Żeby wklepać dane do tabeli musisz dać w pętli HTML z tabelką a w nie wpleść zmienne z danymi.

Napiszę jeszcze raz, bo chyba nie skumałeś, skoro nie odpisujesz.
  1. $dane = file('dane.txt');
  2.  
  3. foreach ($dane as $linia) {
  4. $tablica[] = explode("|", $linia);
  5. }

I zamiast:
  1. for($i=$start; $i<$koniec; $i++)
  2. echo "<p>$dane[$i]</p>";

To:
  1. echo '<table border="1">< - tu kod nagłówka tabeli - >';
  2. for($i=$start; $i<$koniec; $i++) {
  3. echo "<tr><td>".$tablica[$i][0]."</td><td>".$tablica[$i][1]."</td><td>".$tablica[$i][2]."</td><td>".$tablica[$i][3]."</td></tr>";
  4. }
  5. echo '</table>';

Mam nadzieję, ze skumasz zasadę.
PS. Pomijam sprawę wydajności przy większej ilości danych...
david8213
Wszystko działa jak należy

  1. for($i=$start; $i<$koniec; $i++) {
  2. echo "<table width=\"700\"><tr><td bgcolor=\"#C0C0C0\"><b><a href=mailto:".$tablica[$i][1]."> <i>".$tablica[$i][0]."</a></td><td bgcolor=\"#C0C0C0\"><div align=\"right\"><i><b>".date("d.m.Y")."<b> - ".date("H:i")."<tr><td colspan=\"2\" bgcolor=\"#C0C0C0\"><div style=\"margin-left:5\" style=\"margin-right:5\"><font color=\"black\"><b>".$tablica[$i][2]."</td></tr></table><br>";
  3.  
  4. }


Dziękuję
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.