[PHP] paginazione con ajax

paloppa

Utente Attivo
26 Feb 2018
68
0
6
27
Buongiorno a tutti.
Ho un problema con la paginazione su php, utilizzando ajax.
Ho trovato in rete una demo di paginazione, e ho deciso di modificarla a pennello per il mio sito.
Attualmente sto lavorando in locale , con un database anch'esso in locale.

Nel database (che si chiama 'lavoro') ho una tabella di nome messaggio con all'interno questi campi:
Nome
Cognome
Invio_richiesta
Data_arrivo
Data_partenza
Email
Messaggio.


Si tratta di una tabella che viene aggiornata tramite un form.

Mi spiego meglio:
Sto creando una sorta di sito BOOKING dove i clienti inseriscono in un form il loro nome, cognome, data di arrivo, data partenza ecc. e questi dati poi vengono inseriti nella tabella messaggio.


Dopo che gli utenti hanno effettuato le varie prenotazioni, vorrei vedere tutte le prenotazioni , con paginazione.


Nello specifico sto utilizzando WP all'interno di una sezione personale del menu di WP. Cliccando su questa sezione , si entra in una pagina dove l'admin , sceglierà le richieste entro una nota data (li dentro infatti si trovano due form: una data di arrivo e una data di partenza).
Cliccando il tasto invia , vorrei stampare a video i risultati.


Il mio codice va alla perfezione senza la paginazione. Con la paginazione non riesco a fargli stampare i risultati.

Ho utilizzato 3 file
FILE config-inc.php dove mi collego al mio database e inserisco anche il numero di risultati per pagina
PHP:
<?php

$db_username = 'root';
$db_password = '';
$db_name = 'lavoro';
$db_host = 'localhost';
$item_per_page = 5;


$connecDB = mysqli_connect($db_host, $db_username, $db_password,$db_name)or die('could not connect to database');
?>


FILE index.php dove troviamo il form e dopo che si clicca su invia vorrei far spuntare i risultati
PHP:
 include("config.inc.php");
$results = mysqli_query($connecDB,"SELECT COUNT(*) FROM messaggio");
$get_total_rows = mysqli_fetch_array($results); //total records

//break total records into pages
$pages = ceil($get_total_rows[0]/$item_per_page);


?><!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax Pagination</title>
<script type="text/javascript" src="js/jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="js/jquery.bootpag.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $("#results").load("fetch_pages.php");  //initial page number to load
    $(".pagination").bootpag({
       total: <?php echo $pages; ?>,
       page: 1,
       maxVisible: 5
    }).on("page", function(e, num){
        e.preventDefault();
        $("#results").prepend('<div class="loading-indication"><img src="ajax-loader.gif" /> Loading...</div>');
        $("#results").load("fetch_pages.php", {'page':num});
    });

});
</script>
<link href="css/style.css" rel="stylesheet" type="text/css">
</head>
<body>
    <div>
<h1>Benvenuto nel plugin delle richieste</h1>
  
<form action="" method="post">
    <fieldset>
        <div><legend>
            Selezionare il periodo di richieste che si vogliono visualizzare</legend>
             <div>Giorno Arrivo</div><div> <input type="text"  id="arrivo" name="arrivo" required /></div>
             <div>Giorno Partenza</div><div><input type="text" id="partenza" name="partenza" required/></div>
             <p><input type="submit" name="invia" value="Invia"/></p>
            
            <?php if($_POST['invia']){ ?><div>Numeri risultati per pagina:<select name="paginazione">
                <option value="5">5</option>
                <option value="15">15</option>
                <option value="30">30</option>
            </select></div><?php }?>
        </div>
    </fieldset>
    </form>
</div>

<br/>
<br/>
    <?php
  
    $arrivo=$_POST['arrivo'];
    $partenza=$_POST['partenza'];

    //trasformo il formasto della data da giorno mese e anno ad anno mese e giorno
    $data_arrivo_trattino=str_replace("/", "-", $arrivo);

    $vet=explode("-", $data_arrivo_trattino);
    $data_finale_arrivo=$vet[2]."-".$vet[1]."-".$vet[0];
    $data_partenza_trattino=str_replace("/", "-", $partenza);

    $vet=explode("-", $data_partenza_trattino);
    $data_finale_partenza=$vet[2]."-".$vet[1]."-".$vet[0];

    if($_POST['invia']){
        
    ?>
    
<div id="results"></div>
<div class="pagination"></div>
</body>
    <?php
    }
    ?>
</html>

FILE fetch_pages.php dove trovo la query e quant'altro
PHP:
<?php
include("config.inc.php"); //include config file
    $arrivo=$_POST['arrivo'];
    $partenza=$_POST['partenza'];

    //trasformo il formasto della data da giorno mese e anno ad anno mese e giorno
    $data_arrivo_trattino=str_replace("/", "-", $arrivo);

    $vet=explode("-", $data_arrivo_trattino);
    $data_finale_arrivo=$vet[2]."-".$vet[1]."-".$vet[0];
    $data_partenza_trattino=str_replace("/", "-", $partenza);

    $vet=explode("-", $data_partenza_trattino);
    $data_finale_partenza=$vet[2]."-".$vet[1]."-".$vet[0];

//sanitize post value
if(isset($_POST["page"])){
    $page_number = filter_var($_POST["page"], FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_STRIP_HIGH);
    if(!is_numeric($page_number)){die('Invalid page number!');} //incase of invalid page number
}else{
    $page_number = 1;
}

//get current starting point of records
$position = (($page_number-1) * $item_per_page);

//Limit our results within a specified range.
$results = mysqli_query($connecDB, "SELECT * from messaggio where data_arrivo >='".$data_finale_arrivo."'and data_partenza <='".$data_finale_partenza."' ORDER BY invio_richiesta desc LIMIT $position, $item_per_page");

//output results from database
echo '<ul class="page_result">';
while($row = mysqli_fetch_array($results))
{
    echo '<li id="item_'.$row["cognome"].'">'.$row["messaggio"].'. <span class="page_name">'.$row["invio_richiesta"].'</span><span class="page_message">'.$row["email"].'</span></li>';
}
echo '</ul>';
?>

Non riesco a capire dove sbaglio. Se qualcuno può aiutarmi , ne sarei grato
 

macus_adi

Utente Attivo
5 Dic 2017
1.330
90
48
IT/SW
$(document).ready(function() {
$("#results").load("fetch_pages.php"); //initial page number to load
$(".pagination").bootpag({
total: <?php echo $pages; ?>,
page: 1,
maxVisible: 5
}).on("page", function(e, num){
e.preventDefault();
$("#results").prepend('<div class="loading-indication"><img src="ajax-loader.gif" /> Loading...</div>');
$("#results").load("fetch_pages.php", {'page':num});
});

});

Ipotizzando che tutta la logica lato server sia corretta....
Utilizzando qualche framework JS
Codice:
template:codice-per-recuperare-il-template,
paginazione_my_:function(data){
        var self=this;
        self.dati=data;
        $('#result').html(self.template({obj:self.dati.obj[0]}));
        $('#page-selection').bootpag({
            total: self.dati.obj.length,
            maxVisible: 10
        }).on("page", function(event, num){
            $('#result').html(self.template({obj:self.dati.obj[(num-1)]}));
        });
    }
Va da se che all'inizio ho caricato tutti i dati separandoli per un massimo di X in php e vengono restituiti dalla funzione ajax in {code:X,obj:eek:bj[]} in questo modo non dovresti avere problemi.....
Quindi l'array risultato che darà php in output sarà

PHP:
$return[0]=['obj0-1','obj-02'...]
$return[1]=['obj1-1','obj1-2'...]
La logica di visualizzazione e aggiornamenti non è presente in questo esempio....
 
Discussioni simili
Autore Titolo Forum Risposte Data
L [PHP] paginazione con classi vendor PHP 2
elpirata [PHP] Paginazione dati estratti da una query con più condizioni PHP 17
filippino Paginazione file txt con PHP? PHP 1
ste80 interazione PHP Access con paginazione PHP 7
S paginazione di xml con asp/php XML 2
K [PHP] Paginazione Wordpress: passare variabile PHP 6
A [PHP] If e Else paginazione ok ci sono risultati no ma avanti lo stesso PHP 15
O paginazione php mysql PHP 10
A [PHP] limitare counter paginazione PHP 7
A [PHP] Problema paginazione motore di ricerca PHP 48
A [PHP] inserire paginazione su script php/mysql PHP 6
Marcello.Fiore Paginazione jQuery - PHP jQuery 2
M Problema su numerazione paginazione php PHP 6
xone Evitare Meta Tag duplicati su paginazione php PHP 2
felino PHP e Paginazione Jquey PHP 2
H [RISOLTO] paginazione PHP + mysql PHP 15
J Paginazione PHP in jQuery UI Tabs jQuery 13
G Paginazione php utilizzando le api di careerjet PHP 0
G Paginazione php utilizzando le api di careerjet WordPress 1
F paginazione file xml tramite php PHP 1
P paginazione php+access PHP 0
C problema paginazione php PHP 2
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 0
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0

Discussioni simili