2013-12-05 3 views
0

У меня есть форма фильтра в моем html, который отправляет данные в php через ajax для монтирования запроса. Я хочу разбивать на страницы результаты по моему запросу. что это лучший способ сделать это?Результат запроса paginate с PHP и AJAX

вы можете проверить site here (нажмите фильтр)

Аякса:

jQuery(document).ready(function(){ 
     jQuery('#filtros').submit(function(){ 
      var dados = jQuery(this).serialize();//build a post data structure 
      jQuery.ajax({ 
      type: "POST", 
      url: "organiza_tab.php", 
      dataType:"text" 
      data: dados,//Form variables 
      success: function(response) 
      { 
       $("#output").html(response); 
      } 
      }); 
     return false; 
});}); 

это мой PHP-файл, где я захватить данные формы и смонтировать запрос

$deano = $_POST['deyear']; 
$deano = $_POST['deyear']; 
$demes = $_POST['demonth']; 
$dedia = $_POST['deday']; 
$ateano = $_POST['ateyear']; 
$atemes = $_POST['atemonth']; 
$atedia = $_POST['ateday']; 
$asc = $_POST['direcao']; 
$orderby = $_POST['ordenado']; 

$dedata = $deano ."-". $demes ."-". $dedia; 
$atedata = $ateano ."-". $atemes ."-". $atedia; 



if($_POST['loja']){ 
     for ($i=0; $i<sizeof($_POST['loja']); $i++){ 
      $where_loja[$i] = " `loja` = '{$_POST['loja'][$i]}'"; 
     } 
    } 

if(sizeof($where_loja)){ 
    $query[] = "(".implode(' OR ',$where_loja).")"; 
} 

$sql = "SELECT * 
     FROM vendas WHERE"; 

if(sizeof($query)>1){ 
    $sql .= $query[0]; 
    for($i=1; $i<sizeof($query);$i++){ 
    $sql.= ' AND '. $query[$i]; 
    } 

    }else{ 

    $sql.= $query[0]; 
    } 

    if($_POST['loja']){ 
     $sql.=" AND "; 
    } 

    $sql .= " (data > '$dedata' AND data < '$atedata' )"; 
    $sql .= " ORDER BY " . $orderby ." ". $asc ; 

Это разбиение на страницы. проблема в том, что когда я меняю страницу, URL-адрес тоже изменяется, и форма не отправляется. Мне нужно отправить форму для выполнения запроса. Как я могу это сделать? что является лучшим способом для разбиения на страницы моего результата запроса, учитывая, что мне нужно отправить форму.

//items per page 
    $quantidade = 30; 
    //current page 
    $pagina  = (isset($_POST['pagina'])) ? (int)$_POST['pagina'] : 1; 
    //Calcula a pagina de qual valor ser? exibido 
    $inicio  = ($quantidade * $pagina) - $quantidade; 
    $sql .= " LIMIT " . $inicio . " , " . $quantidade ; 

    $qr = mysql_query($sql) or die(mysql_error()); 

    echo "<table id='tab_vendas' border='1' width='100%'>"; 
    echo "<tr><td>Data</td><td>Loja</td><td>Total (AKZ)</td><td>Total (USD)</td>  <td>Multicaixa</td><td>Saidas</td><td>Visa</td></tr>"; 

    $num_rows = mysql_num_rows($qr); 
    if($num_rows > 0){ 
    while($ln = mysql_fetch_assoc($qr)){ 
      echo "<tr><td>" . $ln['data']."</td>"; 
      echo "<td>" . $ln['loja']."</td>"; 
      echo "<td>" . $ln['totalkz']."</td>"; 
      echo "<td>" . $ln['totaldollar']."</td>"; 
      echo "<td>" . $ln['multicaixa']."</td>"; 
      echo "<td>" . $ln['saidas']."</td>"; 
      echo "<td>" . $ln['visa']."</td></tr>"; 
    } 
    }else{ 
     echo "sorry no data"; 
    } 
echo"</table></div>"; 


    //SQL para saber o total 
    $sqlTotal = "SELECT id FROM vendas"; 
    //Executa o SQL 
    $qrTotal = mysql_query($sqlTotal) or die(mysql_error()); 
    //Total de Registro na tabela 
    $numTotal = mysql_num_rows($qrTotal); 
    //O calculo do Total de p?gina ser exibido 
    $totalPagina= ceil($numTotal/$quantidade); 

    $exibir = 3; 

    $anterior = (($pagina - 1) == 0) ? 1 : $pagina - 1; 

    $posterior = (($pagina+1) >= $totalPagina) ? $totalPagina : $pagina+1; 

    echo "<div id='paginacao'><a href='?pagina=1'>Primeira</a> | "; 
    echo "<a href=\"?pagina=$anterior\"><<</a> | "; 

    for($i = $pagina-$exibir; $i <= $pagina-1; $i++){ 
      if($i > 0) 
      echo '<a href="?pagina='.$i.'"> '.$i.' </a>'; 
    } 

    echo '<a href="?pagina='.$pagina.'"><strong>['.$pagina.']</strong></a>'; 

    for($i = $pagina+1; $i < $pagina+$exibir; $i++){ 
      if($i <= $totalPagina) 
      echo '<a href="?pagina='.$i.'"> '.$i.' </a>'; 
    } 

    echo " | <a href=\"?pagina=$posterior\">>></a> | "; 
    echo " <a href=\"?pagina=$totalPagina\">Ultima</a></div>"; 

ответ

0

Вам нужно добавить значения формы для ваших постраничной ссылок, например:

'&deyear='.$deano'&amp;deano='.$deano' 

Затем вам нужно изменить код, который определяет переменные формы, например:

$deano = $_POST['deyear']; 
$deano = $_POST['deyear']; 

... так что он проверяет $ _GET и $ _POST.

У вас также есть много ошибок HTML на вашем сайте, например. вы используете неправильный синтаксис.

+0

Спасибо за ваш ответ Что такое HTML erros? где я должен изменить код, определяющий переменные формы? –

Смежные вопросы