Ver Mensaje Individual
  #4 (permalink)  
Antiguo 29/01/2005, 14:08
oxido_social
 
Fecha de Ingreso: enero-2005
Mensajes: 4
Antigüedad: 19 años, 9 meses
Puntos: 0
Que tal!

Yo utilizo una funcion para realizar la consulta de una tabla completa (con o sin filtros), por cierto agradezco la ayuda de este foro para realizarla, espero les sirva:

//************************************************** *****************************
Function ConsultaCatalogo ($Tabla, $Where,
$Usuario, $Password,
&$Array, &$Registros,
&$Cabecera, &$Columnas)
{
$Servidor = "localhost";
$BaseDatos= "Prueba";

/* Conecta al servidor con el usuario y contrase;a de paso */
$Conexion = mysql_connect ($Servidor, $Usuario, $Password);
IF (!$Conexion)
{
echo "Error conectando a la base de datos.";
RETURN FALSE;
}

/* Seleccionamos la base de datos que nos interesa */
IF (!mysql_select_db ($BaseDatos, $Conexion))
{
echo "Error seleccionando la base de datos.";
mysql_close ($Conexion);
RETURN FALSE;
}

/* Obtiene el catalogo */
$sql = "SELECT * FROM ".$Tabla." ".$Where.";";
$Result = mysql_query ($sql);
IF (!$Result)
{
echo "La siguiente consulta contiene algun error:<br>\nSQL: <b>$sql</b> ";
mysql_close ($Conexion);
RETURN FALSE;
}

/* Obtiene el numero de registros leidos */
$Registros = mysql_num_rows ($Result);

/* Obtiene el numero de columnas leidas en la consulta */
$Columnas = mysql_num_fields ($Result);
$i = 1;
WHILE ($Row = mysql_fetch_Array ($Result))
{
$Array [$i] = $Row;
$i++;
}
$RecordsetSelect = mysql_query ($sql);
$row_Recordset1 = mysql_fetch_assoc ($RecordsetSelect);
$i = 1;
while (list ($key, $val) = each ($row_Recordset1))
{
$Cabecera [$i] = $key;
$i++;
};
mysql_free_result($RecordsetSelect);
mysql_free_result ($Result);
mysql_close ($Conexion);
RETURN TRUE;
}
//************************************************** *********************************************


Donde:
/*****************************************
FUNCTION CONSULTACATALOGO:
Ejecutar:
Funcion encargada de realizar una consulta DE UN CATALOGO A LA BASE DE DATOS
Recibe:
$Tabla: Query a ejecutar.
$Where: Condiciones de consulta.
$Usuario: Usuario con el que se realiza la conexion a la BD.
$Password: Contrase;a con la que se conecta a la BD.
$Array: Arreglo donde retornara todos los valores de la consulta
$Registros: Numero de registros leidos
$Cabecera: Arreglo donde regresara el nombre de cada columna
$Columnas: Numero de columnas leidas

Para utilizarse se ejecuta lo siguiente:

ConsultaCatalogo ("Usuario", "IdUsuario NOT IN (1, 3)", "usrpass", "usrpass",
&$Array, &$Registros,
&Cabecera, &$Columnas);

Para realizar una lectura de los datos leidos:
For ($j = 1; $j <= $Columnas; $j++)
{
echo "<P>".$Cabecera [$j}."<P>";
}
echo "<BR>";
For ($i = 1; $i <= $Registros; $i++)
For ($j = 1; $j <= $Columnas; $j++)
{
echo $Array [$i}[$Cabecera [$j]];
}
******************************************/

Regresando a tu duda, si quieres consultar:
SELECT * FROM mi_tabla WHERE Campo1 LIKE $texto

deberas de llamar la funcion asi:

IF (ConsultaCatalogo ('mi_tabla', "campo1 like \"texto%\"", 'user', 'pass', $Tabla, $Registros, $Cabecera, $Columnas))
{
//Aqui se hace la impresion de la lectura.
// Empezamos con el encabezado.
echo "<tr> \n";
FOR ($NumCab = 1; $NumCab <= $Columnas; $NumCab++)
echo " <TD> ".$Cabecera [$NumCab}." </td> \n";
echo "</tr>\n";

// Ahora realizamos la escritura de los registros leidos.

/* Contador de registros en el catalogo */
FOR ($Reg = 1; $Reg <= $Registros; $Reg++)
{
echo "<tr>\n";
FOR ($NumCab = 1; $NumCab <= $Columnas; $NumCab++)
echo " <td> ".$Array [$Reg][$Cabecera [$NumCab]]." </td> \n";
echo "</tr>\n";
}
}

************************************************** *********/

Lamentablemente esto NO funciona si la tabla esta vacia, esto significa que la tabla al menos debe de tener un registro para que funcione!

Pero les prometo ponerme a trabajar en este punto e investigar como le podemos hacer para que jale, por cierto, si alguien tiene una critica o comentario del codigo, es bienvenido (yo tengo nada mas 3 meses trabajando con PHP, asi que aun no me se muchos trucos!

Última edición por oxido_social; 29/01/2005 a las 14:09