getSearchOrder($cnf) - Devuelve los enlaces para las columnas de búsqueda, cambia el icono de orden y genera el código ORDER para la consulta SQL, para permitir el orden de registros por columnas en tablas de resultados.
Valores de $cnf:
Devuelve un objeto con cuatro valores:
Ejemplo de uso:
getSearchString($phrase,$fields,$opt) - Genera una consulta SQL para hacer búsquedas en la base de datos.
Ejemplo de uso:
Valores de $cnf:
- id (str): Id del campo a ordenar
- ord (bool): Orden ascendente o descendente
- uri (str): URI de la página, puede ser absoluto (https://webvivo.com/clientres), o relativo (/clientes)
- def (str): Orden por defecto para el SQL, por ejemplo, "nombre DESC"
- difn: Nombre en el GET del parámetro para pasar cada campo (Default Item Field Name)
- dofn: Nombre en el GET del parámetro para pasar la dirección del orden (Default Order Field Name)
- fields (array): Listado de los campos en la base de datos
- json (array): Tabla y campo que contiene el elemento JSON indicado en un ID de fields
Devuelve un objeto con cuatro valores:
- out: indica si el orden es ascendente o descendente 0/1)
- order: Sentencia ORDER para la consulta SQL
- uri: Array con las URI para insertar en cada columna para la búsqueda
- json: Consulta SQL para añadir en el SELECT y buscar en campos JSON
Ejemplo de uso:
//Datos de configuración de la función
$conf['difn'] = '__itm'; //Nombre de la variable para enviar el id de cada campo en el GET
$conf['dofn'] = '__ord'; //Nombre de la variable para enviar el orden de cada campo en el GET
$conf['ord'] = $__ord; //Orden ascendente (0), o descendente (1)
$conf['id'] = $__itm; //Id del campo definido en "difn"
$conf['uri'] = "/clientes"; //URL base de la página
//Definición de los campos de búsqueda
$field[1] = "clientes.nombre";
$field[2] = "clientes.apellido";
$field[3] = "clientes.dni";
$field[4] = "direcciones.calle";
$field[5] = "direcciones.poblacion";
$field[6] = "taxid"; //Campo JSON "taxid" dentro del campo empresas.info
$conf['fields'] = $field;
$conf['json'] = [6 => 'empresas.info']; //Carga el valor del ID 6 (taxid) del JSON dentro de empresas.info
$conf['def'] = "clientes.nombre DESC"; //Orden por defecto
//Llamada a la función para generar el objeto de búsqueda
$order = $wv->sqlSearch->getSearchOrder($conf);
//Consulta SQL (Añadir $order->json al SELECT si hay campos JSON)
$result = $wv->db->get_results("
SELECT nombres.* $order->json
FROM wv_listado_clientes AS clientes
JOIN wv_direcciones_clientes AS direcciones
ON clientes.id = direcciones.id
$order->order");
//Cabeceras de la tabla
<tr>
<th>Nombre <?=$order->uri[1]?></th>
<th>Apellido <?=$order->uri[2]?></th>
<th>DNI <?=$order->uri[3]?></th>
<th>Calle <?=$order->uri[4]?></th>
<th>Población <?=$order->uri[5]?></th>
<th>Email de facturación <?=$order->uri[6]?></th>
</tr>
getSearchString($phrase,$fields,$opt) - Genera una consulta SQL para hacer búsquedas en la base de datos.
- $phrase: Frase de búsqueda enviada
- $fields: Array con los campos de la base de datos
- $opt: Array con opciones bolleanas de búsqueda (0/1 o true/false):
- use_where: Usa WHERE en vez de AND para empezar el condicional
- and: Busca todas las palabras de la frase de búsqueda (por defecto busca cualquiera)
- remove_common_words: Elimina palabras comunes de la búsqueda, como artículos y contracciones
- remove_accents: Remplaza las letras acentuadas por letras sin acentuar
- remove_dashes: Reemplaza guiones por espacios
- remove_symbols: Elimina cualquier caracter que no sea una letra o un número
- get_quoted: Usa las palabras entre paréntesis como una única palabra, por ejemplo, "Casa Blanca" busca este valor literal.
Ejemplo de uso:
//Formulario de búsqueda
<form method="GET">
<input type="text" name="search" value="">
<button type="submit">Buscar</button>
</form>
//Inicializa la clase
$wv->initClass(['class_name'=>'sqlSearch']);
//Configuración de la función
if (!empty($search)) {
$search_options['use_where'] = FALSE;
$search_options['and'] = FALSE;
$search_options['replace_common_words'] = FALSE;
$search_options['replace_accents'] = TRUE;
$search_options['replace_dashes'] = FALSE;
$search_options['remove_symbols'] = FALSE;
$search_fields = ["cliente.id",
"cliente.nombre",
"cliente.apellido",
"cliente.dni",
"direcciones.calle",
"direcciones.poblacion"];
//Crea la sentencia de búsqueda SQL
$search_filter = $wv->sqlSearch->getSearchString($search,$search_fields,$search_options);
}
//Consulta SQL
$result = $wv->db->get_results("
SELECT nombres.*
FROM wv_listado_clientes AS clientes
JOIN wv_direcciones_clientes AS direcciones
ON clientes.id = direcciones.id
$search_filter");