Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Pagination, Problem z pagination
Durkane
post
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 28.07.2015

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


Witam.
Próbuję zrobić pagination według tutoriala z youtube. Jednak na stronie wyskakuje mi błąd Fatal error: Unsupported operand types.
Ten problem dotyczy tego fragmentu kodu :
  1. $last = ceil($rows/$page_rows);


A tutaj przedstawiam cały kod:
  1. <?php
  2. require_once "connect.php";
  3.  
  4. if ($dbh->connect_errno !=0)
  5. {
  6. echo "Error: ". $dbh->connect_errno;
  7. }
  8. else
  9. {
  10. try
  11. {
  12. //Pierwsze zapytanie do policzenia liczby wierszy
  13. $sth=$dbh->prepare("SELECT COUNT(id) FROM Spis");
  14. $sth->execute();
  15. $row = $sth->fetchAll(PDO::FETCH_ASSOC);
  16. //Tutaj mamy wszystkie
  17. $rows = $row[0];
  18. //To jest liczba rezultatow, ktore chcemy wyswietla na stronie
  19. $page_rows = 10;
  20. //Liczba naszej ostatniej strony
  21. $last = ceil($rows/$page_rows);
  22. //Upewniamy sie,ze $last nie jest mniejszy od 1
  23. if ($last < 1)
  24. {
  25. $last = 1;
  26. }
  27. //Ustawiamy $pagenum jako zmienna
  28. $pagenum = 1;
  29. //Bierzemy pagenum z URL if jezeli jest terazniejsza, else jezeli jest 1
  30. if (isset($_GET['pn']))
  31. {
  32. $pagenum = preg_replace('#[^0-9]#','', $_GET['pn']);
  33. }
  34. //Upewniamy sie,ze numer strony nie jest nizszy niz 1 albo nie jest wiekszy niz $last
  35. if ($pagenum < 1)
  36. {
  37. $pagenum = 1;
  38. }
  39. else if ($pagenum > $last)
  40. {
  41. $pagenum = $last;
  42. }
  43. //Ustalamy zasieg wierszy do wybrania $pagenum
  44. $limit = 'LIMIT ' .($pagenum - 1) * $page_rows.',' .$page_rows;
  45. // Zapytanie biorace jedna strony wierszy
  46. $sql = $dbh->prepare("SELECT ID, Imie, Nazwisko FROM Spis");
  47. $sql->execute();
  48. //Pokazuje uzytkownikowi, na ktorej jest stronie i liczbe stron dostepnych
  49. $textline1 = "Spis ludnosci (<b>$rows</b>)";
  50. $textline2 = "Strona <b>$pagenum</b> of <b>$last</b>";
  51. // Ustawiamy $paginationCtrls jako zmienna
  52. $paginationCtrls = '';
  53. //Jezeli jest wiecej niz 1 strona rezultatow
  54. if ($last != 1)
  55. {
  56. /*Sprawdzamy czy jestesmy na 1 stronie. Jezeli tak to nie potrzebujemy "Poprzednia"
  57.   A jezeli nie jestesmy to generujemy link do pierwszej stroyn i do nastepnej.*/
  58. if ($pagenum > 1)
  59. {
  60. $previous = $pagenum -1;
  61. $paginationCtrls .= '<a href="'.$_SERVER['PHP_SELF'].'?pn='.$previous.'">Poprzednia</a> &nbsp; ';
  62.  
  63. //Generujemy klikalne linki
  64. for($i = $pagenum - 4; $i < $pagenum; $i++)
  65. {
  66. if($i > 0)
  67. {
  68. $paginationCtrls .= '<a href="'.$_SERVER['PHP_SELF'].'?pn='.$i.'">'.$i.'</a> $nbsp; ';
  69.  
  70. }
  71. }
  72. }
  73. //Generujemy liczbę strony, na której jesteśmy bez możliwości przejścia do niej ponownie
  74. $paginationCtrls .= ''.$pagenum.' $nbsp; ';
  75. //Generujemy klikalne numery strony, ktore pojawia sie po prawej
  76. for($i = $pagenum + 1; $i <= $last; $i++)
  77. {
  78. $paginationCtrls .= '<a href="'.$_SERVER['PHP_SELF'].'?pn='.$i.'</a> &nbsp; ';
  79. if($i >= $pagenum + 4)
  80. {
  81. break;
  82. }
  83. //To samo co wyzej tylko sprawdzamy czy jestesmy na ostatniej stronie jak tak to nie generujemy next
  84. if ($pagenum != last)
  85. {
  86. $next = $pagenum + 1;
  87. $paginationCtrls .= ' &nbsp; &nbsp; <a href="'.$_SERVER['PHP_SELF'].'?pn='.$next.'">Następna</a>';
  88. }
  89. }
  90. }
  91. $list = '';
  92. while($row = $sql->fetchAll(PDO::FETCH_ASSOC))
  93. {
  94. $id = $row["ID"];
  95. $firstname = $row["Imie"];
  96. $lastname = $row["Nazwisko"];
  97. }
  98. }
  99. catch (Exception $e)
  100. {
  101. echo "Przepraszamy w tej chwili nie możemy połączyć się z bazą danych. Spróbuj ponownie później.";
  102. }
  103. $dbh=null;
  104. }
  105. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Durkane
post
Post #2





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 28.07.2015

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


Jeżeli wpiszę 3 wyraz na końcu to wyszuka normalnie,a jeżeli na początku to mamy komunikat, że błędne dane zostały podane (IMG:style_emoticons/default/smile.gif)

Mam jeden problem, który mnie nurtuje bardzo :/
Otóż jest to wysyłanie emaila z podaniem peselu, jeżeli ustawię textarea dla peselu to kod zabezpieczający działa prawidłowo natomiast jeżeli dam pole number to czy wpiszę czy nie kod zabezpieczający to wysyła i tak email :/

Kod formularza :
  1. <form action="email.php" method="post" id="contactform">
  2. <b>Imie i Nazwisko</b><input type="text" name="contact_name" placeholder="Imię i nazwisko" required="required" tabindex="1" />
  3. <b>Email</b><input type="email" name="contact_email" placeholder="Adres e-mail" required="required" tabindex="2" />
  4. <b>Pesel</b><input type="number" name="contact_body" placeholder="Wpisz tutaj swój Pesel" required="required" tabindex="3" maxlength="11" minlength="11"></textarea>
  5. Podaj wynik: <span class="form_check_1"></span> × <span class="form_check_2"></span> = <input type="text" name="contact_check" maxlength="2" tabindex="4" />
  6. <input class="btn btn-danger" type="submit" value="Wyślij" tabindex="5" />
  7. <input type="hidden" name="contact_check_data" value="" />
  8. </form>


I kod email :
  1. <?php
  2.  
  3. require_once 'class.phpmailer.php';
  4. $_POST = array_map('trim', $_POST);
  5.  
  6. $error = false;
  7.  
  8. if (!isset($_POST['contact_name']) || empty($_POST['contact_name'])) {
  9. $error = true;
  10. }
  11.  
  12. if (!isset($_POST['contact_email']) || empty($_POST['contact_email']) || !PHPMailer::ValidateAddress($_POST['contact_email'])) {
  13. $error = true;
  14. }
  15.  
  16. if (!isset($_POST['contact_body']) || empty($_POST['contact_body'])) {
  17. $error = true;
  18. }
  19. if (!isset($_POST['contact_check']) || empty($_POST['contact_check']) || (int) $_POST['contact_check'] !== ((int) $_POST['contact_check_data'][0] * (int) $_POST['contact_check_data'][1])) {
  20. $error = true;
  21. }
  22. if ((int)$_POST['contact_body'])
  23. {
  24. $error = false;
  25. }
  26. if ($error) {
  27. exit('nok');
  28. }
  29.  
  30. $mail = new PHPMailer();
  31.  
  32. $mail->CharSet = 'UTF-8';
  33.  
  34. $mail->SetFrom($_POST['contact_email'], $_POST['contact_name']);
  35. $mail->AddAddress('tutaj email');
  36. $mail->Subject = 'Prośba o kod rejestracyjny';
  37. $mail->Body = 'Pesel: '.$_POST['contact_body'];
  38.  
  39. if (!$mail->Send()) {
  40. exit('nok');
  41. }
  42.  
  43. exit('ok');


A jeszcze bym zapomniał tutaj kod JS jest (IMG:style_emoticons/default/smile.gif)
  1. $(function() {
  2. var check_1 = (Math.floor(Math.random() * 9) + 1).toString(),
  3. check_2 = (Math.floor(Math.random() * 9) + 1).toString(),
  4. check = check_1 + check_2;
  5.  
  6. $('#contactform span.form_check_1').text(check_1);
  7. $('#contactform span.form_check_2').text(check_2);
  8. $('#contactform input[name="contact_check_data"]').val(check);
  9.  
  10. var sending = false;
  11. $('#contactform').on('submit', function(e) {
  12. var $form = $(this), $submit = $('input[type="submit"]', $form);
  13.  
  14. e.preventDefault();
  15.  
  16. if (sending) {
  17. return false;
  18. }
  19.  
  20. $('.form-error', $form).remove();
  21.  
  22. $('input, number', $form).prop('readonly', true);
  23. $submit.val('Wysyłam?');
  24. sending = true;
  25.  
  26. $.post($form.attr('action'), $form.serialize(), function(data) {
  27. if (data === 'ok') {
  28. $form.slideUp('fast', function() {
  29. $form.after('<div class="form-success">Wiadomość została wysłana! Skontaktujemy się z Tobą jak tylko to będzie możliwe.</div>');
  30. });
  31.  
  32. return true;
  33. }
  34.  
  35. $form.prepend('<div class="form-error">Wystąpił błąd podczas wysyłania formularza. Upewnij się, że wypełniłeś wszystkie pola i poprawnie rozwiązałeś działanie.</div>');
  36. $('input, number', $form).prop('readonly', false);
  37. $submit.val('Wyślij wiadomość');
  38. sending = false;
  39.  
  40. return false;
  41. }, 'text');
  42. });
  43. });


Ten post edytował Durkane 1.02.2016, 12:44:49
Go to the top of the page
+Quote Post

Posty w temacie
- Durkane   [PHP]Pagination   29.01.2016, 11:34:01
- - trueblue   FETCH_ASSOC zwraca tablicę asocjacyjną, po drugie ...   29.01.2016, 11:37:39
- - Durkane   Dobra przechodzi normalnie na stronę tylko nie wyś...   29.01.2016, 12:00:34
- - trueblue   Zobacz jeszcze raz kod jaki Ci podałem i porównaj ...   29.01.2016, 12:03:31
- - Durkane   O matko najmocniej przepraszam Sądziłem, że wszys...   29.01.2016, 12:26:10
- - nospor   Nie $sql->fetchAll a $sql->fetch ...   29.01.2016, 12:39:23
- - Durkane   Właśnie mam włączony manual i tam nigdzie nie zauw...   29.01.2016, 12:57:06
- - lukaskolista   Wywal, w komunikacie błędu masz jasno powiedziane,...   29.01.2016, 14:42:41
- - Durkane   Witam ponownie. Nie chce zakładać nowego tematu dl...   30.01.2016, 13:59:41
- - trueblue   Przy okazji masz nakierowanie jak przechowywać pli...   30.01.2016, 14:18:22
- - Durkane   Jeżeli dobrze rozumiem to dać takie coś : [PHP] po...   30.01.2016, 14:51:28
- - trueblue   Zamiast readfile.   30.01.2016, 16:03:11
- - Durkane   Witam ponownie. Aby nie zaśmiecać kolejnym tematem...   31.01.2016, 11:08:53
- - viking   Dlaczego nie bindujesz danych POST tylko zezwalasz...   31.01.2016, 11:11:45
- - trueblue   Myślisz, że: [SQL] pobierz, plaintext WHERE Imie L...   31.01.2016, 11:13:18
- - Durkane   No właśnie nad tym myślałem, że to bez sensu, ale ...   31.01.2016, 11:14:13
- - trueblue   Nie wiesz jak podzielić string? http://php.net/ma...   31.01.2016, 11:15:48
- - Durkane   No niestety od początku mojej nauki nie było mi to...   31.01.2016, 11:17:31
- - trueblue   Wpisz w wyszukiwarkę: Tracikowski Adam   31.01.2016, 11:22:55
- - Durkane   Ah... po samym nazwisku albo jak nazwisko pierwsze...   31.01.2016, 13:29:18
- - trueblue   Imię i nazwisko zawierają przynajmniej jedną z fra...   31.01.2016, 13:33:19
- - Durkane   Ah kurde robiłem tak tylko zamiast OR dałem AND Z...   31.01.2016, 13:37:28
- - trueblue   Przede wszystkim masz błąd w budowie zapytania. ...   31.01.2016, 14:09:46
- - Durkane   Ah tak nie zauważyłem tego Dobra działa teraz dob...   31.01.2016, 14:34:07
- - trueblue   A jeśli ktoś wpisze trzy wyrazy?   31.01.2016, 14:56:31
- - Durkane   Jeżeli wpiszę 3 wyraz na końcu to wyszuka normalni...   1.02.2016, 11:35:30
- - trueblue   W Twoim kodzie nie ma nawiązania do capcthy. Co to...   1.02.2016, 11:52:47
- - Durkane   Tzn to jest tak jakby captcha Po prostu pobiera j...   1.02.2016, 12:30:15
- - viking   I w jquery pobieramy go przez input[type="num...   1.02.2016, 12:34:23
- - Durkane   Ogólnie w js, query itd jestem noga nic z tego nie...   1.02.2016, 12:39:22
- - lukaskolista   Twoja captcha to nie captcha. Klient w łatwy sposó...   1.02.2016, 12:42:09
- - Durkane   No wiem,że nie captcha i chyba po prostu na nią zm...   1.02.2016, 12:44:09
- - lukaskolista   Wywal tą "captche", bo na razie masz wię...   1.02.2016, 12:48:29
- - Durkane   Jakie jeśli mógłbym wiedzieć?   1.02.2016, 12:51:24
- - kapslokk   Zmienne prosto z $_POST w zapytaniu ?   1.02.2016, 12:52:25
- - Durkane   Ah w sumie racja. W innych plikach to zmieniałem, ...   1.02.2016, 12:54:32
- - lukaskolista   Zrób oddzielne pola do wyszukiwania imienia i nazw...   1.02.2016, 13:27:57
- - viking   Warto też zapoznać się z tabelką https://www.w3.or...   1.02.2016, 13:28:50


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 Aktualny czas: 12.10.2025 - 13:44