Paginazione jQuery - PHP

Marcello.Fiore

Nuovo Utente
14 Giu 2016
10
1
3
36
Salve a tutti, ho un piccolo problema, sto creando uno scrip che estrapoli record da un db mysql, questi risultati una volta elaborati con php vengono visualizzati nella stessa pagina da dove si effettua la ricerca.. praticamente nasconde un div e mostra un altro div dove ci saranno i risultati... arrivato a questo punto in fondo alla pagina inserisco la paginazione... con il link alle altre pagine con metodo GET.. ma una volta cliccato sulla pagina da visualizzare tipo pagina due mi manda su un altra pagina... mi sapete dare delle dritte in merito?
POSTO UN PO DI CODICE...
LINK PAGINAZIONE
Codice:
if ($all_pages > 1){
  if ($pag > 1){
  echo "<li><a aria-label='Previous' href='javascript:AjaxCall('', 'GET', 'cerca.php?kategorie=".$kateg."&pag=" . ($pag - 1). "', 'testo')'><span aria-hidden='true'>&laquo;</span></a></li>";
  }
  // faccio un ciclo di tutte le pagine
  for ($p=1; $p<=$all_pages; $p++) {
  // per la pagina corrente non mostro nessun link ma la evidenzio in blod
  // all'interno della sequenza delle pagine
  if ($p == $pag) {
  echo "<li class='active'><a href='#'>".$p."</a></li>";
  }
  // per tutte le altre pagine stampo il link
  else {
  echo "<li><a id='aa' href=\"" . $_SERVER['PHP_SELF'] . "?kategorie=".$kateg."&pag=" . $p . "\">";
  echo $p . "</a></li>";
  }
  }
  if ($all_pages > $pag){
  echo "<li><a aria-label='Next' href=\"" . $_SERVER['PHP_SELF'] . "?kategorie=".$kateg."&pag=" . ($pag + 1) . "\">";
  echo "<span aria-hidden='true'>&raquo;</span></a></li>";
  }
  }
come potete vedere.. ho provato ad utilizzare una funzione che manda alla pagina tramite get i dati (come vedere nell IF $pag>1 ma non funzionando sto rimettendo tutto com'era...

ah stavo tralasciando che questo pezzo di codice si visualizza nel div che viene mostrato dopo aver passato già dei dati ma in medoto POST
 
Ciao, la prima cosa da fare è creare un file pagination.php
PHP:
<?php

class Pagination{
var $baseURL = '';
var $totalRows = '';
var $perPage = 10;
var $numLinks = 2;
var $currentPage = 0;
var $firstLink = '&lsaquo; First';
var $nextLink = '&gt;';
var $prevLink = '&lt;';
var $lastLink = 'Last &rsaquo;';
var $fullTagOpen = '<div class="pagination">';
var $fullTagClose = '</div>';
var $firstTagOpen = '';
var $firstTagClose = '&nbsp;';
var $lastTagOpen = '&nbsp;';
var $lastTagClose = '';
var $curTagOpen = '&nbsp;<b>';
var $curTagClose = '</b>';
var $nextTagOpen = '&nbsp;';
var $nextTagClose = '&nbsp;';
var $prevTagOpen = '&nbsp;';
var $prevTagClose = '';
var $numTagOpen = '&nbsp;';
var $numTagClose = '';
var $anchorClass = '';
var $showCount = true;
var $currentOffset = 0;
var $contentDiv = '';
var $additionalParam= '';
function __construct($params = array()){
if (count($params) > 0){
$this->initialize($params);
}
if ($this->anchorClass != ''){
$this->anchorClass = 'class="'.$this->anchorClass.'" ';
}
}
function initialize($params = array()){
if (count($params) > 0){
foreach ($params as $key => $val){
if (isset($this->$key)){
$this->$key = $val;
}
}
}
}
// qui genero le pagine
function createLinks(){

if ($this->totalRows == 0 OR $this->perPage == 0){
return '';
}
// Calcolo il totale numero di  righe per pagina
$numPages = ceil($this->totalRows / $this->perPage);


if ($numPages == 1){
if ($this->showCount){
$info = 'Showing : ' . $this->totalRows;
return $info;
}else{
return '';
}
}
// Determino la pagina corrente
if ( ! is_numeric($this->currentPage)){
$this->currentPage = 0;
}

$output = '';

if ($this->showCount){
$currentOffset = $this->currentPage;
$info = 'Showing ' . ( $currentOffset + 1 ) . ' to ' ;
if( ( $currentOffset + $this->perPage ) < ( $this->totalRows -1 ) )
$info .= $currentOffset + $this->perPage;
else
$info .= $this->totalRows;
$info .= ' of ' . $this->totalRows . ' | ';
$output .= $info;
}
$this->numLinks = (int)$this->numLinks;

if ($this->currentPage > $this->totalRows){
$this->currentPage = ($numPages - 1) * $this->perPage;
}
$uriPageNum = $this->currentPage;
$this->currentPage = floor(($this->currentPage/$this->perPage) + 1);

$start = (($this->currentPage - $this->numLinks) > 0) ? $this->currentPage - ($this->numLinks - 1) : 1;
$end = (($this->currentPage + $this->numLinks) < $numPages) ? $this->currentPage + $this->numLinks : $numPages;

if ($this->currentPage > $this->numLinks){
$output .= $this->firstTagOpen
. $this->getAJAXlink( '' , $this->firstLink)
. $this->firstTagClose;
}

if ($this->currentPage != 1){
$i = $uriPageNum - $this->perPage;
if ($i == 0) $i = '';
$output .= $this->prevTagOpen
. $this->getAJAXlink( $i, $this->prevLink )
. $this->prevTagClose;
}

for ($loop = $start -1; $loop <= $end; $loop++){
$i = ($loop * $this->perPage) - $this->perPage;
if ($i >= 0){
if ($this->currentPage == $loop){
$output .= $this->curTagOpen.$loop.$this->curTagClose;
}else{
$n = ($i == 0) ? '' : $i;
$output .= $this->numTagOpen
. $this->getAJAXlink( $n, $loop )
. $this->numTagClose;
}
}
}

if ($this->currentPage < $numPages){
$output .= $this->nextTagOpen
. $this->getAJAXlink( $this->currentPage * $this->perPage , $this->nextLink )
. $this->nextTagClose;
}

if (($this->currentPage + $this->numLinks) < $numPages){
$i = (($numPages * $this->perPage) - $this->perPage);
$output .= $this->lastTagOpen . $this->getAJAXlink( $i, $this->lastLink ) . $this->lastTagClose;
}

$output = preg_replace("#([^:])//+#", "\\1/", $output);

$output = $this->fullTagOpen.$output.$this->fullTagClose;
return $output;
}
function getAJAXlink( $count, $text) {
if( $this->contentDiv == '')
return '<a href="'. $this->anchorClass . ' ' . $this->baseURL . $count . '">'. $text .'</a>';
$pageCount = $count?$count:0;
$this->additionalParam = "{'page' : $pageCount}";
return "<a href=\"javascript:void(0);\" " . $this->anchorClass . "
onclick=\"$.post('". $this->baseURL."', ". $this->additionalParam .", function(data){
$('#". $this->contentDiv . "').html(data); }); return false;\">"
. $text .'</a>';
}
}
?>

PHP:
 //Includo pagination.php nello script
 include('Pagination.php');
 
si si certo, questo lo ho già fatto... questo è il codice...
PHP:
<?php
require 'db.php'; //include una pagina di codice php

$s = $_GET["Suchen"];
$kateg = $_GET["kategorie"];
$regio = $_GET["Region"];

$x_pag = 8; // numero di record per pagina da visualizzare
?>
</br></br></br>
<div class="row">
  <div class="col-sm-12"><h5>Risultato ricerca: <b><?echo $s . " ";?></b></h5></div>
<?php
if    (($kateg == 0)&&($regio == 0) && ($s=="")){
  $pag = isset($_GET["pag"]) ? $_GET["pag"]:1;
  // Controllo se $pag è valorizzato e se è numerico
  // ...in caso contrario gli assegno valore 1
  if (!$pag || !is_numeric($pag)) $pag = 1;
  //CONTA RECORD TOTALI
  $sconta = ("SELECT COUNT(*) FROM Annunci");
  $n = mysqli_query($connection, $sconta) or die("Query conta non funzionante!");
  $all_rows = mysqli_fetch_array($n);
  // Tramite una semplice operazione matematica definisco il numero totale di pagine
  $all_pages = ceil($all_rows[0] / $x_pag);
  // Calcolo da quale record iniziare
  $first = ($pag - 1) * $x_pag;
  //ESEGUO LA QUERY
  $sql = ("SELECT * FROM Annunci ORDER BY cod DESC LIMIT " .$first.", ".$x_pag);
  $annn = mysqli_query($connection, $sql) or die("Query non funzionante");
  //MOSTRO LA QUERY
  $n = 0;
  while ($annuncio = mysqli_fetch_array($annn))
  {
  $n = $n + 1;
  if (($n == 1)||($n == 5)){
  echo "<div class='row'>";
  }
  $img = "img/min_".$annuncio["foto_home"];
  if (file_exists($img) == FALSE){
  $img = "no-image.jpg";
  }
  else{
  $img = $annuncio["foto_home"];
  }
  //SELEZIONO LE FOTO IN BASE ALL'ARTICOLO
  $sql2 = "SELECT COUNT(*) FROM Immagini WHERE cod_annuncio=".$annuncio["cod"];
  $fot = mysqli_query($connection, $sql2);
  $n_foto = mysqli_fetch_array($fot);
  //SELEZIONO LA REGIONE
  $sql3 = "SELECT nome_regione FROM Regioni WHERE od_regione=".$annuncio["cod_regio"];
  $rr = mysqli_query($connection, $sql3);
  $regione = mysqli_fetch_array($rr);

  echo (" <div class='col-sm-3 col-md-3'>
  <div class='thumbnail'>
  <img class='img-responsive' src='img/min_".$img."' title='".$annuncio["titolo"]."'>
  <div id='n-foto'>".($n_foto[0]+1)."</div>
  <div class='caption'>
  <h4><a href='Aussehen.php?ID=".$annuncio["cod"]."'>".$annuncio["titolo"]."</a></h4>
  <p id='over-x'>".substr($annuncio["descri"],0,284)."...</p>
  <p id='over-x'>".$regione["nome_regione"]." - ".$annuncio["nome"]."</p>
  <p><a href='#' class='btn btn-primary' role='button'>Mehr Info</a></p>
  </div>
  </div>
  </div>");
  if (($n == 4)||($n == 8)) {
  echo "</div>";
  }
  }
  //STAMPO LA PAGINAZIONE
  echo ("<div class='col-sm-12'>
  <nav>
  <ul class='pagination'>");
  // Se le pagine totali sono più di 1...
  // stampo i link per andare avanti e indietro tra le diverse pagine!
  if ($all_pages > 1){
  if ($pag > 1){
  echo "<li><a aria-label='Previous' href='s.php?Suchen=".$s."&kategorie=".$kateg."&Region=".$regio."&pag=" . ($pag - 1)."'><span aria-hidden='true'>&laquo;</span></a></li>";
  }
  // faccio un ciclo di tutte le pagine
  for ($p=1; $p<=$all_pages; $p++) {
  // per la pagina corrente non mostro nessun link ma la evidenzio in blod
  // all'interno della sequenza delle pagine
  if ($p == $pag) {
  echo "<li class='active'><a href=''>".$p."</a></li>";
  }
  // per tutte le altre pagine stampo il link
  else {
  echo "<li><a href=\"s.php?Suchen=".$s."&kategorie=".$kateg."&Region=".$regio."&pag=" . $p . "\">";
  echo $p . "</a></li>";
  }
  }
  if ($all_pages > $pag){
  echo "<li><a aria-label='Next' href=\"s.php?Suchen=".$s."&kategorie=".$kateg."&Region=".$regio."&pag=" . ($pag + 1) . "\">";
  echo "<span aria-hidden='true'>&raquo;</span></a></li>";
  }
  }
  echo("</ul>
  </nav>
  </div>");
  //FINE PAGINAZIONE
}
?>
</div>

solo che quando clicco su un altra pagina non mi viene aperta nella stessa pagina... ed io vorrei rimanere sulla stessa pagina... avete qualche idea?
 

Discussioni simili