Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Nie dziła dzielenie wpisów na stronie
david8213
post 11.03.2016, 17:17:08
Post #1





Grupa: Zarejestrowani
Postów: 308
Pomógł: 0
Dołączył: 9.12.2009

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


  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

Ten post edytował david8213 11.03.2016, 17:18:21
Go to the top of the page
+Quote Post
Kshyhoo
post 11.03.2016, 18:09:06
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




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. ?>


--------------------
Go to the top of the page
+Quote Post
david8213
post 12.03.2016, 22:34:23
Post #3





Grupa: Zarejestrowani
Postów: 308
Pomógł: 0
Dołączył: 9.12.2009

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


Mógłbyś mi pomóc jeszcze dodając kod który bedzie wyswietlał dane z mojego pliku razem z Twoim kodem ?
Go to the top of the page
+Quote Post
Kshyhoo
post 12.03.2016, 22:40:20
Post #4





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Tak ciężko zmienić dane w:
  1. $dane = file('tekst.txt');

questionmark.gif


--------------------
Go to the top of the page
+Quote Post
david8213
post 13.03.2016, 00:23:37
Post #5





Grupa: Zarejestrowani
Postów: 308
Pomógł: 0
Dołączył: 9.12.2009

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


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

  1. $dane = file('data.txt');


Ten post edytował david8213 13.03.2016, 00:24:41
Go to the top of the page
+Quote Post
Kshyhoo
post 13.03.2016, 07:45:18
Post #6





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Może nazwę pliku masz inną i nie działąją zmienne w _GET?
  1. $skrypt = "index.php?s=";


--------------------
Go to the top of the page
+Quote Post
Popek231
post 13.03.2016, 13:41:22
Post #7





Grupa: Zarejestrowani
Postów: 71
Pomógł: 2
Dołączył: 30.03.2012
Skąd: Bielsko-Biała

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


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


--------------------
Pomogłem? Wiesz co kliknąć w odpowiednim miejscu :)
Go to the top of the page
+Quote Post
david8213
post 15.03.2016, 17:01:01
Post #8





Grupa: Zarejestrowani
Postów: 308
Pomógł: 0
Dołączył: 9.12.2009

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


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

Ten post edytował david8213 15.03.2016, 17:01:47
Go to the top of the page
+Quote Post
Kshyhoo
post 15.03.2016, 17:04:31
Post #9





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




To nie wiem, u mnie śmiga bez problemu. Może wrzuć na jakiś serwer dla testu.


--------------------
Go to the top of the page
+Quote Post
david8213
post 19.03.2016, 15:11:40
Post #10





Grupa: Zarejestrowani
Postów: 308
Pomógł: 0
Dołączył: 9.12.2009

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


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


Ten post edytował david8213 19.03.2016, 15:18:42
Go to the top of the page
+Quote Post
Kshyhoo
post 19.03.2016, 15:39:55
Post #11





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




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


--------------------
Go to the top of the page
+Quote Post
Kshyhoo
post 19.03.2016, 16:06:01
Post #12





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




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.


--------------------
Go to the top of the page
+Quote Post
david8213
post 19.03.2016, 16:25:53
Post #13





Grupa: Zarejestrowani
Postów: 308
Pomógł: 0
Dołączył: 9.12.2009

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


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


Jak wstawić w miejscu [$i] <tabele itd ?
Go to the top of the page
+Quote Post
Kshyhoo
post 19.03.2016, 17:09:56
Post #14





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




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...


--------------------
Go to the top of the page
+Quote Post
david8213
post 19.03.2016, 18:44:32
Post #15





Grupa: Zarejestrowani
Postów: 308
Pomógł: 0
Dołączył: 9.12.2009

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


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ę

Ten post edytował david8213 19.03.2016, 19:38:24
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: 11.06.2024 - 21:04