El código prometido:
Código PHP:
<?php
/*FUNCION BUSCAR EN DETERMINADAS TABLAS DE LA DB
Realizada por: Carxl
Colaborador: Jorge Morales Linares
Esta función busca en las tablas que pase el programador como parámetro. Cómo último parámetro de la función se debe pasar el criterio
de búsqueda, la frase. Esta función asume que ya se validaron los datos para que quede almacenado en un array las palabras a buscar.
Explicación:
Si el programador hace lo siguiente:
$encon=buscar('archivos','contactos','direcciones','subcategorias',$palabra);
Está diciendo busque en las tablas de una db llamadas 'archivos','contactos','direcciones','subcategorias' el criterio de búsqueda
contenido en $palabra, donde $palabra puede ser un array o simplemente una palabra.
El resultado de la búsqueda queda guardado en $encon(es un array multidimensional), y arroja: la tabla donde se encontró la coincidencia, el id del registro, y el
campo que conincidió.
Para mostrar los datos se debe llamar así:
echo $encon[0]['tabla']." ".$encon[0]['id']." ".$encon[0]['campo'];
Donde 'tabla' es el nombre de la tabla donde se encontró la coincidencia, su respectivo 'id' y 'campo' el campo que coincidió. 0(cero)
quiere decir que muestre en su posición cero, osea que para varios registros debe hacer un ciclo repetitivo cargando el indice de la
matriz en la variable correspondiente:
//contar cuantos registros encontró;
$num_encontradas=count($encon);
//Ya se puede realizar el ciclo
for($x=0;$x<$num_encontradas;$x++)
{
echo $encon[$x]['tabla']." ".$encon[$x]['id']." ".$encon[$x]['nomcampo']."<br>";
}
Creo que no es más...
*/
include("conexion_db.php");
function buscar()
{
//la variable $db es para realizar las consultas que vienen de conexion_db.php, para mi caso la necesitaba así. Pueden cambiar
//la manera de conexión
global $db;
$f=0;
//obtener el número de parámetros
$num_parametros=func_num_args();
//obtener el último parámetro para saber cual fue la frase clave
$id_frase=$num_parametros-1;
//con el número del parámetro, obtengo el nombre del parámetro que lo guardo en la variable $palabra
$palabra=func_get_arg($id_frase);
//establecer en una matriz ordenada los parámetros llamada $nombre_tabla
$nombre_tabla=func_get_args();
//conexión a la DB
$link=conexiondb();
//si conecta
if($link!=1)
{
//un ciclo for para buscar mientras el numero de tablas -1, -1 por que el último parámetro no es una tabla sino el criterio
for ($id_tabla = 0; $id_tabla < $num_parametros-1; $id_tabla++)
{
//la consulta para traer todos los campos de esta tabla
$i=0;
foreach($palabra as $pal)
{
//convierto en minúsculas las parámetros
$nombre_tabla[$id_tabla]=strtolower($nombre_tabla[$id_tabla]);
$sql="SHOW FIELDS FROM ".$nombre_tabla[$id_tabla];
$ras=$db["mq"]($sql);
$numero_atributos=$db["nr"]($ras);
//echo "Tabla: ".$nombre_tabla[$id_tabla]."---".$pal."ºººººººººººººººººººº<br>";
while($raw=$db["fa"]($ras))
{
//echo $raw[0]." --> ".$pal."<br>";
if($i==0)
{
//echo "enta la primera vez!!!!!!!!!!!!!!!!!!!!!<br>";
$criterio=$raw[0]." like '%$pal%'";
}
else
//else if($i==$numero_atributos-1)
{
$criterio.=" or ".$raw[0]." like '%$pal%'";
}
$i++;
}
$i=0;
//echo "Tabla:la parte: ".$criterio."<br>";
/*echo "Completa la consulta: SELECT * FROM ".$nombre_tabla[$id_tabla]." WHERE ".$criterio;
echo "<br>";*/
$concon="SELECT * FROM ".$nombre_tabla[$id_tabla]." WHERE ".$criterio;
$raz=$db["mq"]($concon);
while($razz=$db["fa"]($raz))
{
//echo "HUBO CONSULTA: ".$razz[0]." ".$razz[1]." ".$razz[2]."<br>";
//esta es la matriz donde queda almacenada la tabla donde pertenece el campo y su id...
$matriz[$f]['tabla']=$nombre_tabla[$id_tabla];
$matriz[$f]['id']=$razz[0];
$matriz[$f]['nomcampo']=mysql_field_name($raz,0);
//echo $matriz[$f]['tabla']." -|||||- ".$matriz[$f]['id']." -|||||- ".$matriz[$f]['nomcampo']."<br>";
$f++;
}
//$numero_atributos=$db["nr"]($ras);
}
//echo "<br><br>";
}
//retorno la matriz
return $matriz;
}
}
?>