PHP: imprescindible para crear páginas web de modo profesional
Y ahora tambien aprende a programar en C++ con Aprende Web C++
y entérate de las novedades o deja un comentario.
última modificación: 13-07-2018.
Visitas este mes: 12
Visitas el mes pasado: 32
Mi agradecimiento a los siguientes sitios en los que me he basado para la elaboración de este manual.:
Por elegir aprende-web
Aprende-web está diseñado a partir de los lenguajes que aquí mismo se enseñan.
By Anyelguti
Esta página es continuación de la anterior, seguimos aquí con el manejo de bases de datos con PHP.
Para leer los datos que hay en una tabla utilizaremos el siguiente código en MySQL:
$sql="select * from `nombre_tabla`";
Escribimos el código select * from seguido del nombre de la tabla.
Utilizamos después el mismo código PHP usado en los apartados anteriores, y que hemos incluido en la función conecta_db(). Para leer la tabla agenda creada anteriormente escribiremos:
$ruta = "conexion.php";
$sql = "select * from `agenda`";
$datos = conecta_db($ruta,$sql);
Los datos que pedimos están dentro de la variable $datos, pero esta variable no podemos leerla directamente ya que si intentamos sacarla en pantalla con la instrucción echo, nos dará un resultado parecido a esto:
Resource id #17
Para poder leerla PHP dispone de varias funciones. La más usada es mysql_fetch_array() a la que le pasamos como único argumento la variable obtenida $datos.
El resultado es un array a la vez indexado y asociativo en el que obtenemos el primer registro de la tabla.
Esto significa que en el array obtenemos el primer registro dos veces, una con array indexado, en el que los índices son el orden en que aparecen los campos, y otra como array asociativo, en el que la clave es el nombre del campo.
La función mysql_fetch_array() tiene un puntero interno que hace que una vez llamada salte hacia el siguiente registro, por lo que si volvemos a llamarla otra vez veremos el segundo registro. Cada vez que llamamos a la función el puntero interno avanza un registro, hasta que se leen todos.
Para mostrar los nombres de los campos no necesitamos más que un registro, del cual extraemos las claves del array asociativo que se crea con mysql_fetch_array()
El código será parecido al siguiente.
$ruta = "conexion.php"; //archivo con datos de conexión a la base
$sql = "select * from `agenda`"; //código MySQL
$datos = conecta_db($ruta,$sql); //función de conexión con la base.
$campos=array(); //array donde guardaremos los datos.
$row=mysql_fetch_array($datos); //extraer datos de un registro
foreach ($row as $clave=>$valor) { //recorrer array de primer registro.
if (is_string($clave)) { //sólo para array asociativo ...
echo "$clave, "; //extraemos la clave y la vemos.
array_push($campos,$clave); //guardamos la clave en un array.
}
}
La función mysql_fetch_array()sólo lee un registro, y mueve después el puntero interno hacia el siguiente registro. Necesitamos por lo tanto un bucle que repita esta función mientras que siga habiendo registros. Utilizaremos para ello el bucle while.
$ruta = "conexion.php"; //archivo con datos de conexión a la base
$sql = "select * from `agenda`"; //código MySQL
$datos = conecta_db($ruta,$sql); //función de conexión con la base.
while ($row=mysql_fetch_array($datos)) { //Bucle para ver todos los registros
$nombre=$row['nombre']; //datos del campo nombre
$telefono=$row['telefono']; //datos del campo teléfono
$email=$row['email']; //datos del campo email
echo "<p>$nombre, $telefono, $email. </p>"; //visualizar datos
}
Dentro del bucle utilizamos los nombres de los campos para buscar los datos. Éstos son las claves del array $row que se crea en cada vuelta.
Tenemos la opción de mostrar los registros ordenados, para ello variamos el código MySQL:
$sql="select * from `agenda` order by `nombre`";
Añadimos al final la instruccion order by seguido del nombre del campo que utilizamos para ordenar los registros.
Los registros aparecerán ordenados de forma ascendente, es decir si son números de menor a mayor, y si son textos, por orden alfabético.
También podemos ordenar los registros por orden descendente, incluyendo al final del código anterior la palabra desc.
$sql="select * from `agenda` order by `nombre` desc";
Otra de las tareas frecuentes en una base de datos es buscar los datos pertenecientes a un mismo registro. Para buscar un registro debemos al menos saber un dato del mismo. Por ejemplo para buscar un teléfono debemos saber el nombre. El dato que sabemos es el dato de referencia, y los otros son los datos buscados.
Podemos hacer una búsqueda exacta o aproximada, dependiendo de si nos sabemos el dato de referencia de forma exacta o aproximada.
En la búsqueda exacta debemos escribir el dato que conocemos de forma completa.
Para realizar una búsqueda seleccionamos primero la tabla entera, y después restringimos los registros mediante una condición. Este es el código en MySQL:
$sql="select * from `nombre_tabla` where `campo` = 'dato'"
Seleccionamos primero la tabla mediante select * from seguido del nombre de la tabla. Después marcamos la condición mediante where seguido del nombre del campo que conocemos, el signo igual, y el dato que conocemos.
El resto de código PHP es igual que para mostrar la tabla completa.
$ruta = "conexion.php"; //archivo con datos de conexión a la base
$sql = "select * from `agenda` where `nombre` = 'Vicente Gracia'"; //código MySQL
$datos = conecta_db($ruta,$sql); //función de conexión con la base.
while ($row=mysql_fetch_array($datos)) { //Bucle para ver todos los registros
$nombre=$row['nombre']; //datos del campo nombre
$telefono=$row['telefono']; //datos del campo teléfono
$email=$row['email']; //datos del campo email
echo "<p>$nombre, $telefono, $email. </p>"; //visualizar datos
}
El hecho de utilizar un bucle para una búsqueda es porque puede haber en la tabla más de un registro con el dato buscado. En este caso se mostrarían todos los registros que coinciden.
Es posible que no sepamos el dato de referencia de manera exacta. En este caso podemos hacer una búsqueda aproximada, lo único que cambia respecto de la anterior es el código MySQL:
$sql="select * from `tabla` where `campo` like 'dato%'";
Respecto al código anterior cambiamos el signo igual = por la palabra like, y en el dato podemos poner tanto delante como detrás el signo % que es un comodín que sustituye a cualquier cadena que pueda haber tanto por delante (si lo ponemos delante), como por detrás (si lo ponemos detrás).
De esta manera podemos buscar en los campos datos que tengan una cierta similitud con el que buscamos.
El resto del código PHP es exactamente igual que para la búsqueda exacta.
El lenguaje SQL (o MySQL) tiene más posibilidades para trabajar con bases de datos. Para ver más consulta el manual de SQL en http://aprende-web.net/progra/sql/sql_1.php
Además de las funciones vistas hasta ahora hay otra serie de funciones que pueden facilitarnos el trabajo con las bases de datos.
Las siguientes funciones se usan para consultar los datos extraídos.
Con la conexión abierta:
Información de conexión
Las siguientes funciones nos dan información sobre el programa que alberga las bases de datos y el tipo de alojamiento:
Hemos visto aquí las principales funciones que se pueden usar con las bases de datos. Existen más funciones aunque no suelen ser muy habituales.
Puedes ver la lista completa de funciones de PHP para bases de datos con MySQL en http://www.php.net/manual/es/book.mysql.php
El siguiente tema es una introducción a la programación con objetos en PHP.
Sugerencias:
aprendeweb@aprende-web.net. Envia un
Visita nuestro blog par saber en qué estamos trabajando: Aprende Web Blog
Más sobre anyelguti en http://anyelguti.16mb.com