-
Notifications
You must be signed in to change notification settings - Fork 5
/
ajax.php
executable file
·102 lines (95 loc) · 3.51 KB
/
ajax.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
//conectamos a la base de datos
$link = mysql_connect('localhost', 'bomba1990','123456');
if (!$link) {
die('No pudo conectarse: ' . mysql_error());
}
$db_selected = mysql_select_db('prueba', $link);
if (!$db_selected) {
die ('No se puede usar : ' . mysql_error());
}
//Creamos un arreglo con los datos que envia JqGrid
$post=array(
'limit'=>(isset($_REQUEST['rows']))?$_REQUEST['rows']:'',
'page'=>(isset($_REQUEST['page']))?$_REQUEST['page']:'',
'orderby'=>(isset($_REQUEST['sidx']))?$_REQUEST['sidx']:'',
'orden'=>(isset($_REQUEST['sord']))?$_REQUEST['sord']:'',
'search'=>(isset($_REQUEST['_search']))?$_REQUEST['_search']:'',
);
$se ="";
//creamos la consulta de busqueda.
if($post['search'] == 'true'){
$b = array();
//Usamos la funci{on elements para crear un arreglo con los datos que van a ser para buscar por like
$search['like']=elements(array('total','nota'),$_REQUEST);
//haciendo un recorrido sobre ellos vamos creando al consulta.
foreach($search['like'] as $key => $value){
if($value != false) $b[]="$key like '%$value%'";
}
//Usamos la funci{on elements para crear un arreglo con los datos que van a ser para buscar por like
$search['where']=elements(array('fecha','cantidad','taza','cliente'),$_REQUEST);
//haciendo un recorrido sobre ellos vamos creando al consulta.
foreach($search['where'] as $key => $value){
if($value != false) $b[]="$key = '$value'";
}
//Creamos la consulta where
$se=" where ".implode(' and ',$b );
}
//Realizamos la consulta para saber el numero de filas que hay en la tabla con los filtros
$query = mysql_query("select count(*) as t from inventario".$se);
if(!$query)
echo mysql_error();
$count = mysql_result($query,0);
if( $count > 0 && $post['limit'] > 0) {
//Calculamos el numero de paginas que tiene el sistema
$total_pages = ceil($count/$post['limit']);
if ($post['page'] > $total_pages) $post['page']=$total_pages;
//calculamos el offset para la consulta mysql.
$post['offset']=$post['limit']*$post['page'] - $post['limit'];
} else {
$total_pages = 0;
$post['page']=0;
$post['offset']=0;
}
//Creamos la consulta que va a ser enviada de una ves con la parte de filtrado
$sql = "select id, fecha, cliente, cantidad, taza, total, nota from inventario ".$se;
if( !empty($post['orden']) && !empty($post['orderby']))
//Añadimos de una ves la parte de la consulta para ordenar el resultado
$sql .= " ORDER BY $post[orderby] $post[orden] ";
if($post['limit'] && $post['offset']) $sql.=" limit $post[offset], $post[limit]";
//añadimos el limite para solamente sacar las filas de la apgina actual que el sistema esta consultando
elseif($post['limit']) $sql .=" limit 0,$post[limit]";
$query = mysql_query($sql);
if(!$query)
echo mysql_error();
$result = array();
$i = 0;
while($row = mysql_fetch_object($query)){
$result[$i]['id']=$row->id;
$result[$i]['cell']=array($row->id,$row->fecha,$row->cliente,$row->cantidad,$row->taza,$row->total,$row->nota);
$i++;
}
//Asignamos todo esto en variables de json, para enviarlo al navegador.
$json = new stdClass();
$json->rows=$result;
$json->total=$total_pages;
$json->page=$post['page'];
$json->records=$count;
echo json_encode($json);
mysql_close($link);
function elements($items, $array, $default = FALSE)
{
$return = array();
if ( ! is_array($items)){
$items = array($items);
}
foreach ($items as $item){
if (isset($array[$item])){
$return[$item] = $array[$item];
}else{
$return[$item] = $default;
}
}
return $return;
}
?>