Codeigniter - agregar filtro por un campo a getallrecord

 
Vista:

agregar filtro por un campo a getallrecord

Publicado por pedru (2 intervenciones) el 04/01/2021 10:20:02
quisiera agregar filtro po un campo en getallrecord
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
$condition	=	'';
 
 
if(isset($_REQUEST['username']) and $_REQUEST['username']!=""){
    $condition	.=	' AND username LIKE "%'.$_REQUEST['username'].'%" ';
}
if(isset($_REQUEST['useremail']) and $_REQUEST['useremail']!=""){
    $condition	.=	' AND useremail LIKE "%'.$_REQUEST['useremail'].'%" ';
}
if(isset($_REQUEST['fechafact']) and $_REQUEST['fechafact']!=""){
    $condition	.=	' AND fechafact LIKE "%'.$_REQUEST['fechafact'].'%" ';
}
if(isset($_REQUEST['montofact']) and $_REQUEST['montofact']!=""){
    $condition	.=	' AND montofact LIKE "%'.$_REQUEST['montofact'].'%" ';
}
 
 
 
if(isset($_REQUEST['df']) and $_REQUEST['df']!=""){
 
    $condition	.=	' AND DATE(dt)>="'.$_REQUEST['df'].'" ';
 
}
if(isset($_REQUEST['dt']) and $_REQUEST['dt']!=""){
 
    $condition	.=	' AND DATE(dt)<="'.$_REQUEST['dt'].'" ';
 
}
 
 
 
 
// $this->db-> like ('nombre', 'pedro'); esto me funcionó pero despues me dio errpr o filtre por la sesion  $_SESSION['username']
 
 
$userData	=	$db->getAllRecords('users','*'  ,$condition,'ORDER BY id DESC');
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Aplicar filtros de búsqueda en consulta de registros

Publicado por Alejandro (44 intervenciones) el 04/09/2023 16:19:19
Para aplicar filtros a una consulta en CodeIgniter 4, puedes utilizar su Query Builder en lugar de concatenar manualmente las condiciones. Aquí te muestro cómo puedes hacerlo:

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
// Crea un objeto de consulta
$query = $this->db->table('users');
 
// Define las condiciones de filtro
if (isset($_REQUEST['username']) && $_REQUEST['username'] != "") {
    $query->like('username', '%' . $_REQUEST['username'] . '%');
}
if (isset($_REQUEST['useremail']) && $_REQUEST['useremail'] != "") {
    $query->like('useremail', '%' . $_REQUEST['useremail'] . '%');
}
if (isset($_REQUEST['fechafact']) && $_REQUEST['fechafact'] != "") {
    $query->like('fechafact', '%' . $_REQUEST['fechafact'] . '%');
}
if (isset($_REQUEST['montofact']) && $_REQUEST['montofact'] != "") {
    $query->like('montofact', '%' . $_REQUEST['montofact'] . '%');
}
if (isset($_REQUEST['df']) && $_REQUEST['df'] != "") {
    $query->where('dt >=', $_REQUEST['df']);
}
if (isset($_REQUEST['dt']) && $_REQUEST['dt'] != "") {
    $query->where('dt <=', $_REQUEST['dt']);
}
 
// Ejecuta la consulta
$userData = $query->get()->getResult();

En este código, primero creas un objeto de consulta utilizando `$this->db->table('users')`. Luego, agregas condiciones de filtro según los parámetros proporcionados en `$_REQUEST`. El método `like` se utiliza para realizar búsquedas parciales, y `where` se utiliza para condiciones de rango de fecha. Finalmente, ejecutas la consulta utilizando `get()->getResult()` para obtener los resultados.

Este enfoque es más limpio y seguro que concatenar manualmente las condiciones y evita la posibilidad de inyección SQL. Además, es más compatible con la estructura de CodeIgniter 4.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar