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:
  • 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.
Devuelve un string con la consulta SQL.

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");