Google
Web dns.bdat.net

Re: [PHP-ES] urgente consulta

Write haof XML files: Vladimir Hernandez ( interco@linuxbaja.org)
Fecha: mar 24 ene 2006 - 00:06:47 CET


Quoting Johnny Sanchez < johnny@inder.co.cu>:

> Buenas tardes a todos, por favor, necesito si alguien me pudiera
> ayudar a realizar una consulta a una base de datos, en la que luego
> esa misma consulta la pueda mostrar a traves de paginas web, es
> decir, mostrar los datos que tengo en mi base de datos, en una tabla
> en una pagina X, es que estoy en un trabajo que pueda definir muchas
> cosas en mi vida, y bueno, necesito eso lo mas pronto posible, si
> alguien me pudiera ayudar a realizar este trabajo le estaria
> eternamente agradecido.
> Saludos.
>
> Johnny

Espero que hayas hecho algo de lectura, de otra manera... será difícil
ayudarte. Mínimo necesitas conocer conceptos tales como base de datos, tabla,
algo de HTML, cliente, servidor, etc. y por supuesto ya debes saber hacer algo
en PHP, de perdida el clásico "hola mundo", y un poco del lenguaje SQL de
consulta a bases de datos. Va:

Para la consulta de una base de datos (MySQL) necesitarás saber el nombre de
usuario, la contraseña, y el nombre de la base de datos de la cual extraerás
la información. Estos datos te los debe dar el administrador de la base de
datos. La forma de conectarse a una base de datos es:

$db = mysql_connect("localhost","usuario","contrasenia");
mysql_select_db("nombre_de_la_base_de_datos",$db);

tras esto estarás conectado a la base de datos. Actuarás pidiendo información
sobre alguna tabla, supongamos la tabla tabla_ejemplo que contiene los campos
usuario, nombre, domicilio:

$texto_consulta = "SELECT `usuario`, `nombre`, `domicilio` FROM
`tabla_ejemplo";
$consulta = mysql_query($texto_consulta);

ahora en la variable $consulta tienes la salida de lo que hay en esa tabla. Si
quisieras poner restricciones podrías haber hecho que $texto_consulta dijera
algo así como "SELECT * FROM tabla_ejemplo WHERE nombre='Pedro'" lo que te
regresaría la lista de todos aquellos que tengan exactamente "Pedro" en el
campo del nombre. No "pedro" ni "Juan Pedro", sólo "Pedro". Se puede hacer lo
otro, pero por algo hay que empezar. Continúo:

La salida de PHP es el browser (navegador), por lo que necesitarás darle
formato HTML a esa salida, pues HTML es lo que el navegador entiende.
Para este
sencillo ejemplo que te debe seguir como punto de partida (la idea es
ayudarte,
pero no puedo ni quiero pensar por ti) imaginemos una variable $html que irá
acumulando todo el código HTML generado por PHP, y al terminar le diremos a
PHP que envíe esos datos al navegador. Iniciemos la variable:

$html = "<html><head><title>Script de ejemplo de BD</title></head><body>";

Hasta aquí tenemos sólo el encabezado de la salida, falta ponerle el
contenido. Generalmente tendremos alguna descripción de lo que sucede:

$html = $html."Tabla de salida de la base de datos <br />";

El operador "." (punto) sirve para unir una cadena de texto con otra.
Si lo que
tuvieras son números y los quieres sumar usas "+". En este caso en vez de
poner $variable = $variable."nuevo texto" puedes usar la forma breve, que es
$variable.="texto nuevo".

Como ves el código HTML se mezcla con el resto del texto, pues para PHP todo lo
que se maneja es texto. Ya es asunto del navegador en el lado del cliente el
poder desplegarlo correctamente. Continuemos iniciando la tabla en HTML y
poniéndole encabezados.

$html.= "<table><tr><td style="font-weight:bold;">Usuario</td><td
style="font-weight:bold;">Nombre</td><td
style="font-weight:bold;">Domicilio</td></tr>";

Ya tenemos la declaración de inicio de tabla y el primer renglón que en este
caso contiene los encabezados. Ahora sustraeremos de la consulta su contenido,
para esto hay muchas formas de hacerlo pero usaré la que (al menos para mi)
resulta más clara. Primero contamos cuantos renglones de resultado hay
(podrían haber 3 personas o 300 en la tabla, no lo sabemos ni nos interesa
saberlo previamente. Para esto es que se está haciendo una página dinámica.
Para saber cuántos renglones de resultado hay hacemos

$cuantos = mysql_num_rows($consulta);

Luego haremos lo siguiente para recuperar cada resultado (necesitarás leer
sobre lo que son arrays -arreglos- para entenderle, francamente no pienso
explicar eso)

for($i=0;$i<$cuantos;$i++){
  $arreglo_temporal = mysql_fetch_row($consulta);
  $html.=
"<tr><td>".$arreglo_temporal[0]."</td><td>".$arreglo_temporal[1]."</td><td>".$arreglo_temporal[2]."</td></tr>";
}

El código anterior se irá recorriendo cada uno de los $cuantos renglones que
tenga tabla_ejemplo que correspondan a tu criterio (niguno en este caso,
queremos todos los renglones). $arreglo_temporal tendrá en su primera
posición la primer columna, en su segunda posición la segunda, y así
sucesivamente. Como en este caso son sólo 3 columnas, pues no es tan
complicado. Una vez que recorra todos los valores de la tabla el ciclo for
terminará. Faltará cerrar los tags de HTML:

$html.= "</table></body></html>";

Hasta aquí PHP no ha mostrado nada. Ahora sigue que mande esta información al
navegador, para que este la despliegue:

echo $html;

Así entonces, el script completo quedaría...

<?php
// conectandose a la base de datos
$db = mysql_connect("localhost","usuario","contrasenia");
mysql_select_db("nombre_de_la_base_de_datos",$db);
// creando la consulta en SQL y obteniendo su resultado de la tabla
$texto_consulta = "SELECT `usuario`, `nombre`, `domicilio` FROM
`tabla_ejemplo";
$consulta = mysql_query($texto_consulta);
// iniciando HTML,
$html = "<html><head><title>Script de ejemplo de BD</title></head><body>";
// letrero de lo que verá el usuario
$html = $html."Tabla de salida de la base de datos <br />";
// iniciando tabla en HTML
$html.= "<table><tr><td style="font-weight:bold;">Usuario</td><td
style="font-weight:bold;">Nombre</td><td
style="font-weight:bold;">Domicilio</td></tr>";
// contando cuantos registros se encontraron en la consulta
$cuantos = mysql_num_rows($consulta);
//recuperándolos de la base de datos agregándolos a $html
for($i=0;$i<$cuantos;$i++){
  $arreglo_temporal = mysql_fetch_row($consulta);
  $html.=
"<tr><td>".$arreglo_temporal[0]."</td><td>".$arreglo_temporal[1]."</td><td>".$arreglo_temporal[2]."</td></tr>";
}
// cerrando HTML
$html.= "</table></body></html>";
// enviando al navegador
echo $html;
?>

Suerte en tu trabajo

-- 
Vladimir Hernández
http://linuxbaja.org/
Linux user #374079
-- 
PHP Spanish Localization Talk Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


Este archivo fue generado por hypermail 2.1.7 : sáb 18 mar 2006 - 18:23:29 CET