Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Paginacja Wordpress
pawel06281990
post 17.09.2020, 17:38:14
Post #1





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 10.01.2014

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


Witam,

Napisałem sobie paginację ale coś mi nie chce pokazywać jak kliknę zakładkę 2 to mi nic nie pokazuje co może być źle

tak wygląda moja paginacja razem z tym co chce przerzucić na stronę nr 2

  1. $limit = 5;
  2. $rows = dbcount("(Id)", WYSZUKIWARKA_TABLE, "imie like '$imie%' AND nazwisko like '$nazwisko%' AND data_urodzienia like '$data_urodzienia%' AND data_smierci like '$data_smierci%' AND sektor like '$sektor%' AND rzad like '$rzad%' AND pole_grobu like '$pole_grobu%' AND oplata_pokladne like '$oplata_pokladne%'");
  3. if (!isset($_GET['rowstart']) || !isnum($_GET['rowstart'])) { $_GET['rowstart'] = 0; }
  4. $wyniki_wyszukiwania = $wpdb->get_results("SELECT * FROM ".WYSZUKIWARKA_TABLE." WHERE imie like '$imie%' AND nazwisko like '$nazwisko%' AND data_urodzienia like '$data_urodzienia%' AND data_smierci like '$data_smierci%' AND sektor like '$sektor%' AND rzad like '$rzad%' AND pole_grobu like '$pole_grobu%' AND oplata_pokladne like '$oplata_pokladne%' ORDER BY Id ASC LIMIT ".$_GET['rowstart'].", $limit");
  5.  
  6.  
  7. $wyniki_wyszukiwania1 = $wpdb->get_results("SELECT * FROM ".WYSZUKIWARKA_TABLE." WHERE imie like '$imie%' AND nazwisko like '$nazwisko%' AND data_urodzienia like '$data_urodzienia%' AND data_smierci like '$data_smierci%' AND sektor like '$sektor%' AND rzad like '$rzad%' AND pole_grobu like '$pole_grobu%' AND oplata_pokladne like '$oplata_pokladne%' ORDER BY Id ASC");
  8.  
  9. if($wyniki_wyszukiwania1 <= 0) {
  10. echo 'Nie znaleziono!'; // Gdy nie znajdzie rekordów
  11. } else {
  12. if (empty($_GET['rowstart'])) {
  13. $x = 0;
  14. } else {
  15. $x = $_GET['rowstart'];
  16. }
  17. echo" <div class='row'>";
  18. foreach ($wyniki_wyszukiwania as $data){
  19. $x++;
  20. $i++;
  21. <div class='col-sm-4'>
  22. <div class='card' style='width: 18rem;'>";
  23. if($data->nagrobki <= ''){
  24. echo" <img src='../wp-content/uploads/nagrobki/brak_zdjęcia_nagrobka.png' class='card-img-top'>";
  25. }else{
  26. echo" <img src='../wp-content/uploads/nagrobki/".$data->nagrobki."' class='card-img-top' style='border:1px black solid; width: 125px; height:25px'>";
  27. }
  28.  
  29. echo"<div class='card-body'>
  30. <h5 class='card-title'>śp.".$data->imie." ".$data->nazwisko."</h5>
  31. <p class='card-text'>".esc_html('Data Urodzienia', 'zmarli')." ".$data->data_urodzienia." <br /> ".esc_html('Data Śmierci', 'zmarli')." ".$data->data_smierci."</p>
  32. <a href='../podglad/?Id=".$data->Id."' class='btn btn-primary'>".esc_html('Więcej', 'zmarli')."</a>
  33. </div>
  34. </div>
  35. <br /><br />
  36. </div>";
  37.  
  38. }
  39. echo"</div>";
  40.  
  41.  
  42. if ($rows > $limit) echo "<div align='center' style='margin-top:5px;'>\n".pagenavfront($_GET['rowstart'], $limit, $rows, 2, site_url()."/wyniki/?")."\n</div>\n";


A tu function paginate

  1. function pagenavfront($start,$count,$total,$range=1,$link=""){
  2. global $locale;
  3. if ($link == "") $link = site_url()."&";
  4. $res="";
  5. $pg_cnt=ceil($total / $count);
  6. if ($pg_cnt > 1) {
  7. $idx_back = (int)$start - $count;
  8. $idx_next = (int)$start + $count;
  9. $cur_page=ceil(((int)$start + 1) / $count);
  10. $res.="<div class='box-footer clearfix'><ul class='pagination pagination-sm no-margin pull-right'>\n";
  11. $res.="<li><span class='small'>".__('Strona', 'zmarli')." $cur_page ".__('z&nbsp;', 'zmarli')." $pg_cnt </span></li>\n";
  12. if ($idx_back >= 0) {
  13. if ($cur_page > ($range + 1)) $res.=" <li><a href='$link"."rowstart=0'>&lt;&lt;</a></li>\n";
  14. $res.=" <li><a class='small' href='$link"."rowstart=$idx_back'>&lt;</a></li>\n";
  15. }
  16. $idx_fst=max($cur_page - $range, 1);
  17. $idx_lst=min($cur_page + $range, $pg_cnt);
  18. if ($range==0) {
  19. $idx_fst = 1;
  20. $idx_lst=$pg_cnt;
  21. }
  22. for($i=$idx_fst;$i<=$idx_lst;$i++) {
  23. $offset_page=($i - 1) * $count;
  24. if ($i==$cur_page) {
  25. $res.=" <li><span class='small'><b>$i</b></span></li>\n";
  26. } else {
  27. $res.=" <li><a class='small' href='$link"."rowstart=$offset_page'>$i</a></li>\n";
  28. }
  29. }
  30. if ($idx_next < $total) {
  31. $res.=" <li><a href='$link"."rowstart=$idx_next'>&gt;</a></li>\n";
  32. if ($cur_page < ($pg_cnt - $range)) $res.=" <li><a href='$link"."rowstart=".($pg_cnt-1)*$count."'>&gt;&gt;</a></li>\n";
  33. }
  34. $res.="</ul></div>\n";
  35.  
  36. }
  37. return $res;
  38. }


I function licząca tabele

  1. function dbcount($field, $table, $conditions = "") {
  2. global $wpdb, $mysql_queries_count, $mysql_queries_time; $mysql_queries_count++;
  3.  
  4. $cond = $conditions ? " WHERE ".$conditions : "";
  5. $query_time = get_microtime();
  6.  
  7. if (!$result = $wpdb->prepare("SELECT Count".$field." FROM ".$table.$cond)) {
  8. if ($wpdb->error)
  9. echo "Error: ".$wpdb->error."
  10. ";
  11. return FALSE;
  12. } else {
  13. $query_time = substr((get_microtime() - $query_time), 0, 7);
  14. $mysql_queries_time[$mysql_queries_count] = [$query_time, "SELECT COUNT".$field." FROM ".$table.$cond];
  15. $rows = $wpdb->get_var($result, 0);
  16. return $rows;
  17. }
  18. }


Co jest nie tak ze mi nie pokazuje zakładki numer 2 questionmark.gif

Go to the top of the page
+Quote Post
SmokAnalog
post 17.09.2020, 19:44:39
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Tworzysz własną paginację dla zabawy czy to prawdziwy projekt? Jeśli to drugie, to WordPress ma wbudowany mechanizm paginacji i lepiej korzystać z niego. Twój kod jest podatny na SQL Injection, nie mówiąc już o tym, że to kod spaghetti.
Go to the top of the page
+Quote Post
pawel06281990
post 18.09.2020, 19:49:41
Post #3





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 10.01.2014

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


Ok rozumiem dzięki za informację smile.gif

Postaram się ogarnąć z wordpress "get_pagenum(); "

Jednak Potrzebuje waszej pomocy

mam skrypt paginacji dla Wordpressa on działa ale nie tak jak ja chce

Bo działa jedynie tak
  1. $query = "SELECT * FROM `".WYSZUKIWARKA_TABLE."` ORDER BY `Id` ASC";
  2. $ap = new ZM_Paginate(10);
  3. $data = $ap->initializefront($query,@$_REQUEST['paged']);


Ale jak dodaje tak

  1. $query = "SELECT * FROM `".WYSZUKIWARKA_TABLE."` WHERE `nazwisko` like `$nazwisko%` AND `data_urodzienia` like `$data_urodzienia%` AND `data_smierci` like `$data_smierci%` AND `sektor` like `$sektor%` AND `rzad` like `$rzad%` AND `pole_grobu` like `$pole_grobu%` AND `oplata_pokladne` like `$oplata_pokladne%` ORDER BY `Id` ASC";
  2. $ap = new ZM_Paginate(10);
  3. $data = $ap->initializefront($query,@$_REQUEST['paged']);


To już dostaje array(0) { } jak sprawdzam var_dump($data); można to przerobić questionmark.gif

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: 28.03.2024 - 15:05