2016-07-23 10 views
0

Ich habe mehrere Kontrollkästchen Gruppe, deren Wert, wenn aktiviert, an eine PHP-Seite in einem Objekt mit jquery übergeben wird, bekomme ich die Ergebnisse alle gut. Jetzt möchte ich die Ergebnisse paginieren. Ich bin mir nicht sicher, wie ich das anstellen soll. Bei der Verwendung der Paginierung wird kein von AJAXPOST übergebener Wert zurückgegeben. Meine JS:

$(":checkbox").on('change', function() { 
    var mygroup = {}; 
    $(':checkbox:checked').each(function(i) { 
     var val = this.value; 
     var name = this.name; 
     mygroup[name] = (mygroup[name] || []).concat([val]); 
    }); 

    var itemsPerPage = 5; 

    if(typeof url == 'undefined'){ 
    url = "finalprocess1.php?page=1&items_per_page="+itemsPerPage; 
} 
    $.ajax({ 
     type: "POST", 
     url: 'finalprocess.php', 
     data: mygroup, 
     success: function(data) { 

     $.getJSON(url, function(data){  //NOT SURE IF I CAN DO THIS 
     var result = userTemplate({users : data.users}) //UNDERSCORE TEMPLATING 
     $("#theresult").html(result); 
      }); 
     } 
    }); 

}); 
+0

Sie bereits eine Antwortdaten in den Erfolg Rückruf von POT-Methode haben, können Sie, dass – Deep

+0

die Antwort, die Daten aller Listen verwenden soll, wie kann ich es Paginieren? – Somename

+0

Sie können entweder Ihre eigene Paginierungslogik erstellen, indem Sie diese Liste aufteilen, oder Sie können die bereits verfügbaren jquery-Plugins für die Paginierung verwenden. Lesen Sie hier https://plugins.jquery.com/tag/pagination/ – Deep

Antwort

0

sollten Sie fügen ein LIMIT und OFFSET Klausel in Ihre Abfrage auf der PHP-Seite, zu nehmen bestimmte Bereiche entsprechend Ihre Seite Grenze: (Beispiel unter Verwendung von Klar SQL, PHP und PDO)

$limit = $_GET['items_per_page']; //Page limit 

//Get request page, if not set to 1 
!null == $_GET['page'] ? $page = $_GET['page'] : $page = 1; 

//Get total rows count  
$totalRows = $this->db->query('SELECT FOUND_ROWS from items')->fetchColumn(); 

//Calculate number of pages 
$totalPages = ceil($totalRows/$limit); 

//Show next or previous button only when needed validation 
$hasPrevPage = $page > 1 ? true : false; 
$hasNextPage = $page < $totalPages ? true : false; 

//Calculate offset 
$offset = ($page - 1) * $limit; 

$sql = "SELECT * from items 
     LIMIT :pageLimit OFFSET :offset"; //The standard pagination clause 

$query = $this->db->prepare($sql); 
$query->bindValue(':pageLimit', $limit); 
$query->bindValue(':offset', $offset); 
$query->execute(); 
return $query->fetchAll(); 

Dann auf Ihrer Ansicht nach sollten Sie zwei Links, vorherige und nächste erstellen, mantaining Ihre Anfrage URI und modifing den Seitenparameter, +1 auf Seite auf der nächsten und -1 bei früheren so können Sie die Ergebnisse navigieren

so wie Sie hier tat:

url = "finalprocess1.php?page=1&items_per_page="+itemsPerPage; 

aber den Seitenparameter ändern:

prevUrl = "finalprocess1.php?page=" + (page-1) + "&items_per_page=" + itemsPerPage; 
nextUrl = "finalprocess1.php?page=" + (page+1) + "&items_per_page=" + itemsPerPage; 

Achten Sie darauf, diese Validierungen Ihre js passieren nur die Tasten zu zeigen, wenn nötig, und verhindern einen Offset-Fehler .

$hasPrevPage = $page > 1 ? true : false; 
$hasNextPage = $page < $totalPages ? true : false; 
+0

Ich möchte nicht die PHP-Seite zeigen .. Ich rufe es von AJAX. Wenn ich das mache, verschwindet die Ajax-Auswahl. Ich übergebe die Checkbox-Werte als ein Array in der PHP-Seite. Die Werte bleiben nicht auf der PHP-Seite, wenn ich die Seitennummer mit der Seite verknüpfe. – Somename

+0

Sie zeigen nicht die PHP-Seite, Sie müssen nur den Ergebnisbereich auf die Ajax-Anfrage zurückgeben. Und Sie müssen auch die Anfrage-URI auf der js-Seite behalten, um sie an die $ _GET-Seite auf PHP zu übergeben. Außerdem sollten Sie die GET-Methode für Suchseiten verwenden, da sie nur Daten abruft, aber keine eingibt. Auf diese Weise können Sie den Link auf beiden Seiten beibehalten, js und php –

+0

Es tut mir leid, ich bin nicht in der Lage, den Pseudo-Code zu erstellen. :( Wo stelle ich die Bedingung? Ich verwende keine vorbereiteten Aussagen .. können Sie mir bitte im normalen Code sagen? Vielen Dank – Somename