Jquery datatable

Jquery datatable
2014-07-09T16:46:19+02:00
2014-07-10T15:06:22+02:00
2022-08-18T00:15:32+02:00
grannie
Sziasztok!

jQuery datatable pluginban szeretnék sorokat megjeleníteni ajaxos megoldással, de a lapozással valami nem ok, mert ha a találatok száma 27, egy oldalon 25-öt jelenítek meg, akkor is csak egy aktív oldal van. Ha átváltom, hogy találat oldalanként 5 legyen, akkor is egy oldalt hoz csak (5 sorral), a többi sort nem látom és nincs aktív lapozó gomb.
Azt gyanítom, hogy nem kapja meg az össz sorok számát, de nem bírok rájönni, hogy hol a hiba.

Js:
<script>
$(document).ready(function(){
$(".table_kapcsolatok").dataTable({
"aoColumns": [{ "sClass": "checkbox-column checkboxes", "bSortable": false }, null, null, null, { "bSortable": false }],
"aaSorting": [[1,'DESC']],
"aLengthMenu": [[5,10,25,50,100,-1],[5,10,25,50,100,"Mind"]],
"iDisplayLength": 25,
"bDestroy": true,
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "ajax.php"
});
});
</script>


PHP:

/* Array of database columns which should be read and sent back to DataTables. Use a space where
* you want to insert a non-database field (for example a counter or static image)
*/
$aColumns = array( 'vezeteknev', 'keresztnev', 'email', 'telefon' );

/* Indexed column (used for fast and accurate table cardinality) */
$sIndexColumn = "kapcsolat_id";

/* DB table to use */
$sTable = "uv_kapcsolatok";

/*
* Paging
*/

$sLimit = " LIMIT 25";
if ( isset( $_GET['iDisplayStart'] ) && $_GET['iDisplayLength'] != '-1' ) {
$sLimit = "LIMIT " . mysql_real_escape_string( $_GET['iDisplayStart'] ) . ", " . mysql_real_escape_string( $_GET['iDisplayLength'] );
}

/*
* Ordering
*/

if ( isset( $_GET['iSortCol_0'] ) ) {
$sOrder = "ORDER BY ";
for ( $i=0 ; $i<intval( $_GET['iSortingCols'] ) ; $i++ ) {
if ( $_GET[ 'bSortable_'.intval($_GET['iSortCol_'.$i]) ] == "true" ) {
$sOrder .= $aColumns[ intval( $_GET['iSortCol_'.$i] ) ] . " " . mysql_real_escape_string( $_GET['sSortDir_'.$i] ) . ", ";
}
}

$sOrder = substr_replace( $sOrder, "", -2 );
if ( $sOrder == "ORDER BY" ) {
$sOrder = "";
}
}

/*
* Filtering
* NOTE this does not match the built-in DataTables filtering which does it
* word by word on any field. It's possible to do here, but concerned about efficiency
* on very large tables, and MySQL's regex functionality is very limited
*/

$sWhere = "";
if ( $_GET['sSearch'] != "" ) {
$sWhere = "WHERE (";
for ( $i=0 ; $i<count($aColumns) ; $i++ ) {
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
}
$sWhere = substr_replace( $sWhere, "", -3 );
$sWhere .= ')';
}

/* Individual column filtering */
for ( $i=0 ; $i<count($aColumns) ; $i++ ) {
if ( $_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '' ) {
if ( $sWhere == "" ) {
$sWhere = "WHERE ";
} else {
$sWhere .= " AND ";
}
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string($_GET['sSearch_'.$i])."%' ";
}
}

/*
* SQL queries
* Get data to display
*/
$sQuery = "SELECT * FROM $sTable $sWhere $sOrder $sLimit ";

$rResult = mysql_query( $sQuery ) or die(mysql_error());

/* Data set length after filtering */
$sQuery = "
SELECT FOUND_ROWS()
";

$rResultFilterTotal = mysql_query( $sQuery ) or die(mysql_error());
$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
$iFilteredTotal = $aResultFilterTotal[0];

/* Total data set length */
$sQuery = "
SELECT COUNT(".$sIndexColumn.")
FROM $sTable
";

$rResultTotal = mysql_query( $sQuery ) or die(mysql_error());
$aResultTotal = mysql_fetch_array($rResultTotal);
$iTotal = $aResultTotal[0];


/*
* Output
*/
$output = array(
"sEcho" => intval($_GET['sEcho']),
"iTotalRecords" => $iTotal,
"iTotalDisplayRecords" => $iFilteredTotal,
"aaData" => array()
);


while ( $aRow = mysql_fetch_array( $rResult ) ) {

$row = array();
$row[] = '<input type="checkbox" name="kapcsolatok_check[]" id="'.$aRow["kapcsolat_id"].'" class="uniform">';
$row[] = $aRow["vezeteknev"];
$row[] = $aRow["keresztnev"];
$row[] = $aRow["email"];
$row[] = '';
$output['aaData'][] = $row;

}

echo json_encode( $output );
Mutasd a teljes hozzászólást!
Próbáld meg úgy, hogy még megadod az sql_calc_found_rows opciót is a selectben:

$sQuery = "SELECT SQL_CALC_FOUND_ROWS * FROM $sTable $sWhere $sOrder $sLimit ";
Mutasd a teljes hozzászólást!

abcd