hola, buenas tardes, estoy comenzando en este mundo y mirando de a poco los tutoriales que realmente son muy claros y dejan muy claras las cosas.
mi consulta es si se puede hacer cargar la tabla pero que solo me muestre los registros que fueren coincidentes a un valor (como si se tratara de una busqueda pero ya establecida a la carga de la tabla)
yo utilizo este codigo que fue el que me funciono luego de varios intentos con otros que no los pude hacer correr…
$(document).on(«click», «.open-AddBookDialog», function () {
var myUserName = $(this).data(‘art’);
$(«.modal-body #UserName»).val( myUserName );
});
$(document).ready(function () {
$(‘#tabla_stk’).DataTable({
«columns»: [
{«data»: «art»},
{«data»: «descripcion»},
{«data»: «marca»},
{«data»: «modelo»},
{«data»: «stock»},
}
],
«processing»: true,
«bLengthChange»: false,
«bFilter»: true,
«bpaginate»: false,
«serverSide»: true,
«bAutoWidth»: false,
«iDisplayLength»: «4»,
«bInfo» : false,
«pagingType»: «numbers»,
«ajax»: {
url: ‘tablastk.php’,
type: ‘POST’
}
});
});
este otro archivo tablastk.php contiene esto
if (!empty($_POST) ) {
/*
* Database Configuration and Connection using mysqli
*/
define(«HOST», «localhost»);
define(«USER», «root»);
define(«PASSWORD», «XXXX»);
define(«DB», «bd»);
define(«MyTable», «tblrep»);
$connection = mysqli_connect(HOST, USER, PASSWORD, DB) OR DIE(«Impossible to access to DB : » . mysqli_connect_error());
/* END DB Config and connection */
/*
* @param (string) SQL Query
* @return multidim array containing data array(array(‘column1’=>value2,’column2’=>value2…))
*
*/
function getData($sql){
global $connection ;//we use connection already opened
$query = mysqli_query($connection, $sql) OR DIE («Can’t get Data from DB , check your SQL Query » );
$data = array();
foreach ($query as $row ) {
$data[] = $row ;
}
return $data;
}
/* Useful $_POST Variables coming from the plugin */
$draw = $_POST[«draw»];//counter used by DataTables to ensure that the Ajax returns from server-side processing requests are drawn in sequence by DataTables
$orderByColumnIndex = $_POST[‘order’][0][‘column’];// index of the sorting column (0 index based – i.e. 0 is the first record)
$orderBy = $_POST[‘columns’][$orderByColumnIndex][‘data’];//Get name of the sorting column from its index
$orderType = $_POST[‘order’][0][‘dir’]; // ASC or DESC
$start = $_POST[«start»];//Paging first record indicator.
$length = $_POST[‘length’];//Number of records that the table can display in the current draw
/* END of POST variables */
$recordsTotal = count(getData(«SELECT * FROM «.MyTable));
/* SEARCH CASE : Filtered data */
if(!empty($_POST[‘search’][‘value’])){
/* WHERE Clause for searching */
for($i=0 ; $i<count($_POST[‘columns’]);$i++){
$column = $_POST[‘columns’][$i][‘data’];//we get the name of each column using its index from POST request
$where[]=»$column like ‘%».$_POST[‘search’][‘value’].»%'»;
}
$where = «WHERE «.implode(» OR » , $where);// id like ‘%searchValue%’ or name like ‘%searchValue%’ ….
/* End WHERE */
$sql = sprintf(«SELECT * FROM %s %s», MyTable , $where);//Search query without limit clause (No pagination)
$recordsFiltered = count(getData($sql));//Count of search result
/* SQL Query for search with limit and orderBy clauses*/
$sql = sprintf(«SELECT * FROM %s %s ORDER BY %s %s limit %d , %d «, MyTable , $where ,$orderBy, $orderType ,$start,$length );
$data = getData($sql);
}
/* END SEARCH */
else {
$sql = sprintf(«SELECT * FROM %s ORDER BY %s %s limit %d , %d «, MyTable ,$orderBy,$orderType ,$start , $length);
$data = getData($sql);
$recordsFiltered = $recordsTotal;
}
/* Response to client before JSON encoding */
$response = array(
«draw» => intval($draw),
«recordsTotal» => $recordsTotal,
«recordsFiltered» => $recordsFiltered,
«data» => $data
);
echo json_encode($response);
} else {
echo «NO POST Query from DataTable»;
}
?>
Lo que quiero hacer es mostrar en esta data table todos los registros de mi db pero que solo se muestren los que tengan coincidencia del valor de alguna de sus celdas con una variable que la traigo desde otra pagina donde la defino como variable de sesion o puedo mandarla con metodo POST o GET
Desde ya muchas gracias si puedieran ayudarme a resolver esta duda seria de gran ayuda.
Bruno…
Hay dos maneras de dar respuesta a esto, desde javascript o desde php, por sencillez, creo que me declino por PHP. Comentas que quieres mostrar solo las coincidencias, en este caso, podrías lanzar una consulta que devolviera solo los registros los cuales existan más de 1 vez, en otras palabras, los registros repetidos.
Espero que te sirva! Un saludo!
Hay dos maneras de dar respuesta a esto, desde javascript o desde php, por sencillez, creo que me declino por PHP. Comentas que quieres mostrar solo las coincidencias, en este caso, podrías lanzar una consulta que devolviera solo los registros los cuales existan más de 1 vez, en otras palabras, los registros repetidos.
Espero que te sirva! Un saludo!