You are on page 1of 13

Confeccionar un formulario que solicite la carga del nombre de usuario y su clave en dos oportunidades.

En la Para crear una base de datos el WampServer instala también un programa codificado en PHP que nos permite
página que se procesan los datos del formulario implementar una función que imprima un mensaje si las dos interactuar con el MySQL.
claves ingresadas son distintas. Este programa se llama PHPMyAdmin (como veremos nos permite crear las bases de datos, tablas, índices,
pagina1.php usuarios etc.)
<!DOCTYPE html>
<html lang="es"> Para iniciar el PHPMyAdmin debemos presionar el botón izquierdo del mouse sobre el ícono del WampServer que
<head> se encuentra en la bandeja del sistema:
<title>Problema</title>
</head>
<body>

<form action="pagina2.php" method="post">


Ingrese nombre de usuario:
<input type="text" name="usuario">
<br>
Ingrese su clave:
<input type="password" name="clave1">
<br>
Repita la clave
<input type="password" name="clave2">
<br>
<input type="submit" name="Confirmar">
</form>
Seleccionamos el nombre nombre de la base de datos "base1" y se actualiza la interfaz de pantalla para que
Como podemos ver la interfaz del PHPMyAdmin es un programa que se ejecuta en la web:
</body> ingresemos el nombre de una tabla y la cantidad de campos que tendrá (crearemos una tabla llamada alumnos
</html> con 4 campos):

Pagina2.php
<html>
<head>
<title>Problema</title>
</head>
<body>

<?php

function verificarClaves($cla1,$cla2)
{
if ($cla1!=$cla2)
echo "Las claves ingresadas son distintas";
}

verificarClaves($_REQUEST['clave1'],$_REQUEST['clave2']);

?> La estructura de la tabla es:


<h2>Se verificaron las claves ingresadas.</h2> codigo int auto_increment primary key
</body> nombre varchar(50)
</html> Para crear una base de datos procedemos a seleccionar la pestaña "Base de datos" e ingresamos como nombre mail varchar(70)
"base1" y presionamos el botón crear: codigocurso int
En el PHPMyAdmin ingresamos:
Base de datos (MySQL)

Uno de los empleos principales de PHP es el acceso a una base de datos en el servidor. Las operaciones básicas se
hacen empleando como lenguaje el SQL.

PHP implementa distintas funciones según la base de datos a emplear. Existen funciones actualmente para
acceder a las siguientes servidores de bases de datos:

- MySQL
- Microsoft SQL Server
- Oracle
- PostgreSQL
- SysBase
- FrontBase
- Informix
- InterBase
- Ingres
- mSQL
- dBase
- SQLlite
El más empleado en la actualidad en la web es el gestor de base de datos MySQL. Luego de crear la base de datos podemos ver que aparece en el lado izquierdo:

Cuando instaló el WampServer en un principio para trabajar con PHP, se instaló el MySQL (recordemos que las
letras que forman el WampServer son : W(Windows)A(Apache)M(MySQL)P(PHP)Server).
Es importante también hacer notar que en el campo codigo debemos marcar en Indice el valor "primary" y tildar
la columna A_I:
<option value="2">ASP</option> Por último cerramos la conexión con la base de datos y mostramos un mensaje indicando que la carga se efectuó
<option value="3">JSP</option> en forma correcta.
</select>
<br> Tener en cuenta que el campo código se generó en forma automática.
<input type="submit" value="Registrar">
</form> Si queremos controlar que el insert se efectuó en forma correcta podemos ingresar al PHPMyAdmin y seleccionar
</body> la tabla "alumnos", y en la pestaña "examinar" podremos ver los datos ingresados dla esde página que creamos:
</html>
El formulario es bastante similar a los que venimos desarrollando en puntos anteriores, tal vez lo distinto es cómo
emplearemos el control "select" del curso a desarrollar:
<select name="codigocurso">
<option value="1">PHP</option>
<option value="2">ASP</option>
<option value="3">JSP</option>
</select>
Por último presionamos el botón guardar y ya tenemos la tabla "alumnos" creada en la base de datos "base1": Cada opción tiene su respectivo valor (en este caso los números 1,2 y 3) y los textos a mostrar PHP, ASP y JSP. El
dato que se envía a la otra página es el código de curso (esto debido a que definimos la propiedad value).

Ahora veremos como realizar la registración de los datos cargados en el formulario, en la tabla alumnos de la base
de datos base1:

<html>
<html>
<head>
<title>Problema</title>
</head>
<body>
<?php
$conexion=mysqli_connect("localhost","root","","base1") or Problema resuelto.
die("Problemas con la conexión"); Copiar el contenido de este cuadro de texto al NotePad++ y grabarlo en la carpeta c:\wamp\www con un nombre
con extensión php (si hay varios cuadros de texto grabar cada uno en un archivo distinto).
mysqli_query($conexion,"insert into alumnos(nombre,mail,codigocurso) values luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear:
('$_REQUEST[nombre]','$_REQUEST[mail]',$_REQUEST[codigocurso])") http://localhost/pagina1.php (o el nombre del archivo que le dió)
or die("Problemas en el select".mysqli_error($conexion));
pagina1.php
mysqli_close($conexion); <html>
<head>
echo "El alumno fue dado de alta."; <title>Problema</title>
La tabla almacenará datos de alumnos que desarrollarán cursos de programación en PHP, ASP y JSP.
?> </head>
</body> <body>
El código del alumno es de tipo numérico (int) y al indicar que es auto_increment se generará automáticamente
</html> <h1>Alta de Alumnos</h1>
por el gestor de base de datos.
Veamos los pasos para efectuar el alta en la tabla alumnos: <form action="pagina2.php" method="post">
Los campos nombre y mail son de tipo varchar (podemos almacenar cualquier caracter) y por último el campo
Ingrese nombre:
codigocurso representa el curso a tomar por el alumno (1=PHP, 2=ASP y 3=JSP)
$conexion=mysqli_connect("localhost","root","","base1") or <input type="text" name="nombre"><br>
El campo clave de esta tabla es el código de alumno (es decir no podemos tener dos alumnos con el mismo código,
die("Problemas con la conexión"); Ingrese mail:
no así el nombre del alumno que puede eventualmente repetirse)
La función mysqli_connect se conecta a una base de datos de tipo MySql, el primer parámetro es la dirección <input type="text" name="mail"><br>
donde se encuentra el gestor de base de datos (en este caso en el mismo servidor por lo que indicamos esto con Seleccione el curso:
En los próximos conceptos comenzaremos a ver como desde PHP podemos comunicarnos con la base de datos
"localhost), el segundo parámetro es el nombre de usuario de la base de datos ("root" en nuestro caso, que es el <select name="codigocurso">
"base1" y acceder a la tabla "alumnos" para ejecutar los comandos SQL más comunes como pueden ser: select,
usuario por defecto que crea MySql para el administrador), seguidamente indicamos la clave del usuario root (por <option value="1">PHP</option>
insert, delete, update etc.
defecto al instalar el Wamp se crea con clave vacía) y por último indicamos el nombre de la base de datos a <option value="2">ASP</option>
conectarnos (en nuestro ejemplo ya creamos la base de datos llamada: base1 que tiene la tabla alumnos) <option value="3">JSP</option>
INSERT (Alta de registros en una tabla)
En caso de haber algún error en la llamada a la función la misma retorna false por lo que se ejecuta la instrucción </select>
Luego de crear una base de datos y sus tablas (Vamos a trabajar con la base de datos ya creada: base1, que
seguida del operador or, en nuestro caso llamamos a la función die que detiene la ejecución del programa y <br>
contiene la tabla alumnos), veremos como agregar registros.
muestra el mensaje por pantalla. <input type="submit" value="Registrar">
</form>
Para añadir datos en la tabla empleamos el comando SQL llamado insert.
El paso más importante es la codificación del comando SQL insert(debemos llamar a la función mysqli_query </body>
pasando como primer parámetro la referencia a la conexion y el segundo parámetro es un string con el comando </html>
Necesitamos dos páginas para este proceso, una será el formulario de carga de datos y la siguiente será la que
efectúe la inserción en la tabla. insert):
pagina2.php
mysqli_query($conexion,"insert into alumnos(nombre,mail,codigocurso) values <html>
Formulario de carga de datos:
('$_REQUEST[nombre]','$_REQUEST[mail]',$_REQUEST[codigocurso])") <head>
or die("Problemas en el select".mysqli_error($conexion)); <title>Problema</title>
<html>
La sintaxis del comando insert es bastante sencilla, indicamos el nombre de la tabla y los campos de la tabla a </head>
<head>
cargar. Luego debemos indicar en el mismo orden los valores a cargar en cada campo (dichos valores los <body>
<title>Problema</title>
rescatamos del formulario anterior). <?php
</head>
$conexion=mysqli_connect("localhost","root","","base1") or
<body>
Los campos de tipo varchar SQL requiere que encerremos entre comillas simples, esto sucede para el nombre y el die("Problemas con la conexión");
<h1>Alta de Alumnos</h1>
<form action="pagina2.php" method="post"> mail; en cambio, para el codigocurso esto no debe ser así.
mysqli_query($conexion,"insert into alumnos(nombre,mail,codigocurso) values
Ingrese nombre:
Otra cosa a tener en cuenta es que los subíndices de los vectores asociativos no deben ir entre simples comillas ya ('$_REQUEST[nombre]','$_REQUEST[mail]',$_REQUEST[codigocurso])")
<input type="text" name="nombre"><br>
que se encuentran dentro de un string, sino se producirá un error. or die("Problemas en el select".mysqli_error($conexion));
Ingrese mail:
<input type="text" name="mail"><br>
En caso que MySql detecte un error, retorna false esta función, por lo que se ejecuta la instrucción posterior al or, mysqli_close($conexion);
Seleccione el curso:
<select name="codigocurso"> es decir la función die que mostrará el error generado por MySql llamando a la función mysqli_error().
echo "El alumno fue dado de alta.";
<option value="1">PHP</option>
?>
</body> break; </head>
</html> case 2:echo "ASP"; <body>
break; <?php
Problema propuesto. case 3:echo "JSP"; $conexion=mysqli_connect("localhost","root","","base1") or
Crear en la base de datos "base1" otra tabla llamada "cursos". break; die("Problemas con la conexión");
La estructura de esta segunda tabla debe ser: }
codigo int auto_increment primery_key echo "<br>"; $registros=mysqli_query($conexion,"select codigo,nombre, mail, codigocurso
nombrecurso varchar(40) echo "<hr>"; from alumnos") or
Utilizar el PHPMyAdmin para la creación de esta tabla. } die("Problemas en el select:".mysqli_error($conexion));
Implementar las dos páginas necesarias para efectuar el alta de cursos. Un formulario para ingresar el nombre del mysqli_close($conexion);
curso y otra página donde se efectuará el insert. ?> while ($reg=mysqli_fetch_array($registros))
</body> {
pagina1.php </html> echo "Codigo:".$reg['codigo']."<br>";
<html> echo "Nombre:".$reg['nombre']."<br>";
<head> La primer parte es similar a lo visto hasta ahora, es decir nos conectamos con el servidor de base de datos y echo "Mail:".$reg['mail']."<br>";
<title>Problema</title> seleccionamos la base de datos base1: echo "Curso:";
</head> switch ($reg['codigocurso']) {
<body> $conexion=mysqli_connect("localhost","root","","base1") or case 1:echo "PHP";
die("Problemas con la conexión"); break;
<form action="pagina2.php" method="post"> case 2:echo "ASP";
Ingrese nombre del curso: El comando SQL que nos permite recuperar datos de tablas se llama SELECT. Indicamos los campos a rescatar de la break;
<input type="text" name="nombrecurso" size="40"> tabla y luego de la palabra clave from indicamos el nombre de la tabla: case 3:echo "JSP";
<br> $registros=mysqli_query($conexion,"select codigo,nombre, mail, codigocurso break;
<input type="submit" value="Confirmar"> from alumnos") or }
</form> die("Problemas en el select:".mysqli_error($conexion)); echo "<br>";
</body> echo "<hr>";
</html> En caso de haber codificado incorrectamente, el comando SQL select la función mysqli_query retorna false, por lo }
que se ejecuta el comando siguiente al operador or, es decir la función die. mysqli_close($conexion);
pagina2.php ?>
<html> Si el comando SQL es correcto, en la variable $registros se almacena una referencia a los datos rescatados de la </body>
<head> tabla alumnos. Ahora debemos ir mostrando registro a registro los datos extraídos: </html>
<title>Problema</title> while ($reg=mysqli_fetch_array($registros))
</head> Problema propuesto.
<body> Confeccionar un programa que recupere los datos de la tabla cursos de la base de datos base1. Mostrar el código
<?php Para rescatar registro a registro los datos obtenidos por el select debemos llamar a la función mysqli_fetch_array. de curso y su nombre.
$conexion=mysqli_connect("localhost","root","","base1") or Esta función retorna un vector asociativo con los datos del registro rescatado, o false en caso de no haber más Solución
die("Problemas con la conexión"); registros. Es decir que si retorna un registro se almacena en el vector $reg y la condición del while se valida como pagina1.php
verdadero y pasa a ejecutarse el bloque del while: <html>
mysqli_query($conexion,"insert into cursos(nombrecurso) values ('$_REQUEST[nombrecurso]')") or <head>
die("Problemas en el select".mysqli_error($conexion)); { <title>Problema</title>
echo "Codigo:".$reg['codigo']."<br>"; </head>
mysqli_close($conexion); echo "Nombre:".$reg['nombre']."<br>"; <body>
echo "Mail:".$reg['mail']."<br>"; <?php
echo "El curso fue dado de alta."; echo "Curso:"; $conexion=mysqli_connect("localhost","root","","base1") or
?> switch ($reg['codigocurso']) { die("Problemas con la conexión");
</body> case 1:echo "PHP";
</html> break; $registros=mysqli_query($conexion,"select codigo,nombrecurso from cursos") or
case 2:echo "ASP"; die("Problemas en el select:".mysqli_error($conexion));
Listado (selección de registros de una tabla) break;
Para recuperar datos desde MySQL debemos emplear el comando select: case 3:echo "JSP"; while ($reg=mysqli_fetch_array($registros))
break; {
select codigo,nombre,mail,codigocurso from alumnos } echo "Codigo:".$reg['codigo']."<br>";
Debemos pasar desde PHP un string con este comando para que MySQL lo ejecute y retorne todas las filas de la echo "<br>"; echo "Nombre del curso:".$reg['nombrecurso']."<br>";
tabla alumnos. echo "<hr>"; echo "<hr>";
} }
Veremos entonces como recuperar los datos almacenados en la tabla alumnos de la base de datos "base1". El bloque del while muestra el contenido del registro rescatado por la función mysql_fetch_array. Como vemos, mysqli_close($conexion);
para rescatar cada campo accedemos mediante el vector asociativo $reg indicando como subíndice un campo ?>
El programa que muestra los registros en una página es: indicado en el select:$reg['codigo'] </body>
<head> </html>
<?php Cada vez que llamamos a la función mysqli_fetch_array nos retorna el siguiente registro.
$conexion=mysqli_connect("localhost","root","","base1") or Consulta (selección de registros de una tabla)
die("Problemas con la conexión"); Cuando debemos mostrar el curso mediante la instrucción switch, analizamos si tiene un 1, 2 ó 3 y procedemos a El proceso de consulta de datos de una tabla es similar al del listado, la diferencia es que se muestra sólo aquel o
mostrar el nombre del curso. aquellos que cumplen la condición por la que buscamos.
$registros=mysqli_query($conexion,"select codigo,nombre, mail, codigocurso
from alumnos") or Para separar cada alumno en la página HTML disponemos el elemento "<hr>"
die("Problemas en el select:".mysqli_error($conexion)); Haremos un programa que nos permita consultar los datos de un alumno ingresando su mail para su búsqueda.
Problema resuelto. Tengamos en cuenta que no puede haber dos alumnos con el mismo mail, por lo que la consulta nos puede
while ($reg=mysqli_fetch_array($registros)) Copiar el contenido de este cuadro de texto al NotePad++ y grabarlo en la carpeta c:\wamp\www con un nombre arrojar uno o ningún registro.
{ con extensión php (si hay varios cuadros de texto grabar cada uno en un archivo distinto).
echo "Codigo:".$reg['codigo']."<br>"; luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear:
http://localhost/pagina1.php (o el nombre del archivo que le dió) Debemos codificar un formulario para el ingreso del mail a consultar:
echo "Nombre:".$reg['nombre']."<br>";
echo "Mail:".$reg['mail']."<br>";
echo "Curso:"; pagina1.php <html>
switch ($reg['codigocurso']) { <html> <head>
case 1:echo "PHP"; <head> <title>Problema</title>
<title>Problema</title>
</head> <body>
<body> <form action="pagina2.php" method="post"> $registros=mysqli_query($conexion,"select codigo,nombre, codigocurso
<form action="pagina2.php" method="post"> Ingrese el mail del alumno a consultar: from alumnos where nombre='$_REQUEST[nombre]'") or
Ingrese el mail del alumno a consultar: <input type="text" name="mail"> die("Problemas en el select:".mysqli_error($conexion));
<input type="text" name="mail"> <br>
<br> <input type="submit" value="buscar"> $cant=0;
<input type="submit" value="buscar"> </form> while ($reg=mysqli_fetch_array($registros))
</form> </body> {
</body> </html> echo "Nombre:".$reg['nombre']."<br>";
</html> echo "Curso:";
Por otro lado tenemos el archivo "pagina2.php" que se encarga de buscar el mail ingresado en el formulario: pagina2.php switch ($reg['codigocurso']) {
<html> case 1:echo "PHP";
<head> break;
<html> <title>Problema</title> case 2:echo "ASP";
<head> </head> break;
<title>Problema</title> <body> case 3:echo "JSP";
</head> <?php break;
<body> $conexion=mysqli_connect("localhost","root","","base1") or }
<?php die("Problemas con la conexión"); $cant++;
$conexion=mysqli_connect("localhost","root","","base1") or echo "<hr>";
die("Problemas con la conexión"); $registros=mysqli_query($conexion,"select codigo,nombre, codigocurso }
$registros=mysqli_query($conexion,"select codigo,nombre, codigocurso from alumnos where mail='$_REQUEST[mail]'") or if ($cant==0)
from alumnos where mail='$_REQUEST[mail]'") or die("Problemas en el select:".mysqli_error($conexion)); {
die("Problemas en el select:".mysqli_error($conexion)); echo "No existen alumnos con dicho nombre";
if ($reg=mysqli_fetch_array($registros)) }
if ($reg=mysqli_fetch_array($registros)) { mysqli_close($conexion);
{ echo "Nombre:".$reg['nombre']."<br>"; ?>
echo "Nombre:".$reg['nombre']."<br>"; echo "Curso:"; </body>
echo "Curso:"; switch ($reg['codigocurso']) { </html>
switch ($reg['codigocurso']) { case 1:echo "PHP";
case 1:echo "PHP"; break; DELETE (Baja de un registro en una tabla)
break; case 2:echo "ASP"; El objetivo de este punto es el borrado de un registro de una tabla. Para ello, implementaremos un algoritmo que
case 2:echo "ASP"; break; solicite ingresar el mail de un alumno y posteriormente efectúe su borrado.
break; case 3:echo "JSP";
case 3:echo "JSP"; break; Para eliminar filas en una tabla debemos utilizar el comando SQL delete.
break; }
} } La primera página es idéntica a la consulta, ya que debemos implementar un formulario que solicite la carga del
} else mail del alumno:
else {
{ echo "No existe un alumno con ese mail."; <html>
echo "No existe un alumno con ese mail."; } <head>
} mysqli_close($conexion); <title>Problema</title>
mysqli_close($conexion); ?> </head>
?> </body> <body>
</body> </html> <form action="pagina2.php" method="post">
</html> Ingrese el mail del alumno a borrar:
Lo más importante está en el comando select: Problema propuesto. <input type="text" name="mail">
Confeccionar un programa que permita ingresar el nombre de un alumno en un formulario, luego mostrar los <br>
datos del mismo (tener en cuenta que puede haber más de un alumno con el mismo nombre) <input type="submit" value="buscar">
$registros=mysqli_query($conexion,"select codigo,nombre, codigocurso </form>
from alumnos where mail='$_REQUEST[mail]'") or Solución </body>
die("Problemas en el select:".mysqli_error($conexion)); pagina1.php </html>
Acá es donde con la clausula where seleccionamos sólo el registro que cumple con la condición que el mail sea <html> Por otro lado tenemos el archivo "pagina2.php" que se encarga de buscar el mail ingresado en el formulario y en
igual al que ingresamos. <head> caso que exista se procede a borrarlo:
<title>Problema</title>
</head> <html>
Como sólo puede haber un registro que cumpla la condición, llamamos a la función mysqli_fetch_array en un if y <body> <head>
no una estructura repetitiva como el listado: <form action="pagina2.php" method="post"> <title>Problema</title>
Ingrese nombre del/los alumno/s: </head>
if ($reg=mysqli_fetch_array($registros)) <input type="text" name="nombre"> <body>
En caso de retornar un vector asociativo la condición del if se verifica como verdadera y pasa a mostrar los datos, <br> <?php
en caso de retornar false se ejecuta el else. <input type="submit" value="buscar"> $conexion=mysqli_connect("localhost","root","","base1") or
</form> die("Problemas con la conexión");
</body>
Problema resuelto. </html> $registros=mysqli_query($conexion, "select codigo from alumnos
Copiar el contenido de este cuadro de texto al NotePad++ y grabarlo en la carpeta c:\wamp\www con un nombre where mail='$_REQUEST[mail]'") or
con extensión php (si hay varios cuadros de texto grabar cada uno en un archivo distinto). pagina2.php die("Problemas en el select:".mysqli_error($conexion));
luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear: <html> if ($reg=mysqli_fetch_array($registros))
http://localhost/pagina1.php (o el nombre del archivo que le dió) <head> {
<title>Problema</title> mysqli_query($conexion,"delete from alumnos where mail='$_REQUEST[mail]'") or
</head> die("Problemas en el select:".mysqli_error($conexion));
pagina1.php <body> echo "Se efectuó el borrado del alumno con dicho mail.";
<html> <?php }
<head> $conexion=mysqli_connect("localhost","root","","base1") or else
<title>Problema</title> die("Problemas con la conexión"); {
</head>
echo "No existe un alumno con ese mail."; <br> $conexion=mysqli_connect("localhost","root","","base1") or
} <input type="submit" value="Borrar"> die("Problemas con la conexión");
mysqli_close($conexion); </form>
?> </body> mysqli_query($conexion,"delete from alumnos") or
</body> </html> die("Problemas en el select:".mysqli_error($conexion));
</html> echo "Se efectuó el borrado de todos los alumnos.";
En esta segunda página efectuamos dos llamadas a la función mysqli_query, una para consultar si existe el mail pagina2.php mysqli_close($conexion);
ingresado y otra para efectuar el borrado del registro respectivo. Si no existe el mail ingresado mostramos un <html> ?>
mensaje de tal situación. <head> </body>
<title>Problema</title> </html>
</head>
<body> Problema propuesto.
Problema resuelto. <?php Efectuar el borrado de todos los registros de la tabla cursos.
Copiar el contenido de este cuadro de texto al NotePad++ y grabarlo en la carpeta c:\wamp\www con un nombre $conexion=mysqli_connect("localhost","root","","base1") or
con extensión php (si hay varios cuadros de texto grabar cada uno en un archivo distinto). die("Problemas con la conexión"); Solución
luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear: pagina1.php
http://localhost/pagina1.php (o el nombre del archivo que le dió) $registros=mysqli_query($conexion,"select codigo from cursos <html>
where nombrecurso='$_REQUEST[nombrecurso]'") or <head>
pagina1.php die("Problemas en el select:".mysqli_error($conexion)); <title>Problema</title>
<html> if ($reg=mysqli_fetch_array($registros)) </head>
<head> { <body>
<title>Problema</title> mysqli_query($conexion,"delete from cursos where nombrecurso='$_REQUEST[nombrecurso]'") or <?php
</head> die("Problemas en el select:".mysqli_error($conexion)); $conexion=mysqli_connect("localhost","root","","base1") or
<body> echo "Se efectuó el borrado del curso ingresado."; die("Problemas con la conexión");
<form action="pagina2.php" method="post"> }
Ingrese el mail del alumno a borrar: else mysqli_query($conexion,"delete from cursos") or
<input type="text" name="mail"> { die("Problemas en el select:".mysqli_error($conexion));
<br> echo "No existe un curso con dicho nombre."; echo "Se efectuó el borrado de todos los cursos.";
<input type="submit" value="buscar"> } mysqli_close($conexion);
</form> mysqli_close($conexion); ?>
</body> ?> </body>
</html> </body> </html>
</html>
pagina2.php UPDATE (Modificación de un registro de una tabla)
<html> DELETE (Baja de todos los registros de una tabla) De las actividades con una tabla esta es la más larga. Vamos a resolverlo implementando tres páginas, la primera
<head> Vimos en el concepto anterior que podemos borrar una o más filas de una tabla indicando en el where del un formulario de consulta del mail de un alumno, la segunda otro formulario que nos permita cargar su mail
<title>Problema</title> comando SQL delete la condición que debe cumplir la fila para ser borrada. modificado y la última registrará el cambio en la tabla.
</head>
<body> Para borrar todos los registros de una tabla debemos llamar al comando delete de SQL sin disponer la cláusula El formulario de consulta del mail del alumno es similar a problemas anteriores:
<?php where.
$conexion=mysqli_connect("localhost","root","","base1") or <html>
die("Problemas con la conexión"); Es importante tener en cuenta que la ausencia de la cláusula where en el comando delete eliminará todas las filas <head>
de la tabla. <title>Problema</title>
$registros=mysqli_query($conexion, "select codigo from alumnos </head>
where mail='$_REQUEST[mail]'") or <html> <body>
die("Problemas en el select:".mysqli_error($conexion)); <head> <form action="pagina2.php" method="post">
if ($reg=mysqli_fetch_array($registros)) <title>Problema</title> Ingrese el mail del alumno:
{ </head> <input type="text" name="mail"><br>
mysqli_query($conexion,"delete from alumnos where mail='$_REQUEST[mail]'") or <body> <input type="submit" value="buscar">
die("Problemas en el select:".mysqli_error($conexion)); <?php </form>
echo "Se efectuó el borrado del alumno con dicho mail."; $conexion=mysqli_connect("localhost","root","","base1") or </body>
} die("Problemas con la conexión"); </html>
else La segunda página es la más interesante y con conceptos nuevos:
{ mysqli_query($conexion,"delete from alumnos") or
echo "No existe un alumno con ese mail."; die("Problemas en el select:".mysqli_error($conexion)); <html>
} echo "Se efectuó el borrado de todos los alumnos."; <head>
mysqli_close($conexion); mysqli_close($conexion); <title>Problema</title>
?> ?> </head>
</body> </body> <body>
</html> </html> <?php
$conexion=mysqli_connect("localhost","root","","base1") or
Problema propuesto. die("Problemas con la conexión");
Confeccionar un programa que permita ingresar el nombre de un curso por teclado y posteriormente efectúe el Problema resuelto.
borrado de dicho registro en la tabla cursos. Mostrar un mensaje si no existe el curso. Copiar el contenido de este cuadro de texto al NotePad++ y grabarlo en la carpeta c:\wamp\www con un nombre $registros=mysqli_query($conexion,"select * from alumnos
con extensión php (si hay varios cuadros de texto grabar cada uno en un archivo distinto). where mail='$_REQUEST[mail]'") or
Solución luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear: die("Problemas en el select:".mysqli_error($conexion));
pagina1.php http://localhost/pagina1.php (o el nombre del archivo que le dió) if ($reg=mysqli_fetch_array($registros))
<html> {
<head> pagina1.php ?>
<title>Problema</title> <html>
</head> <head> <form action="pagina3.php" method="post">
<body> <title>Problema</title> Ingrese nuevo mail:
<form action="pagina2.php" method="post"> </head> <input type="text" name="mailnuevo" value="<?php echo $reg['mail'] ?>">
Ingrese nombre del curso a borrar: <body> <br>
<input type="text" name="nombrecurso"> <?php <input type="hidden" name="mailviejo" value="<?php echo $reg['mail'] ?>">
<input type="submit" value="Modificar"> </form> <head>
</form> </body> <title>Problema</title>
<?php </html> </head>
} <body>
else pagina2.php <?php
echo "No existe alumno con dicho mail"; <html> $conexion=mysqli_connect("localhost","root","","base1") or
?> <head> die("Problemas con la conexión");
</body> <title>Problema</title>
</html> </head> $registros=mysqli_query($conexion,"select * from cursos
Lo primero que podemos observar es que si el if se verifica verdadero se ejecuta un bloque que contiene código <body> where codigo=$_REQUEST[codigo]") or
HTML: <?php die("Problemas en el select:".mysqli_error($conexion));
$conexion=mysqli_connect("localhost","root","","base1") or if ($reg=mysqli_fetch_array($registros))
if ($reg=mysqli_fetch_array($registros)) die("Problemas con la conexión"); {
{ ?>
?> $registros=mysqli_query($conexion,"select * from alumnos
<form action="pagina3.php" method="post"> where mail='$_REQUEST[mail]'") or <form action="pagina3.php" method="post">
Ingrese nuevo mail: die("Problemas en el select:".mysqli_error($conexion)); Ingrese el nuevo nombre del curso:
<input type="text" name="mailnuevo" value="<?php echo $reg['mail'] ?>"> if ($reg=mysqli_fetch_array($registros)) <input type="text" name="nombrecurso" value="<?php echo $reg['nombrecurso'] ?>">
<br> { <input type="hidden" name="codigo" value="<?php echo $reg['codigo'] ?>">
<input type="hidden" name="mailviejo" value="<?php echo $reg['mail'] ?>"> ?> <br>
<input type="submit" value="Modificar"> <input type="submit" value="Modificar">
</form> <form action="pagina3.php" method="post"> </form>
<?php Ingrese nuevo mail: <?php
} <input type="text" name="mailnuevo" value="<?php echo $reg['mail'] ?>"> }
Es decir que podemos disponer bloques de PHP dispersos dentro de la página. <br> else
<input type="hidden" name="mailviejo" value="<?php echo $reg['mail'] ?>"> echo "No existe un curso con dicho codigo";
Otro concepto importante es como enviar el mail del primer formulario a la tercer página, esto se logra con los <input type="submit" value="Modificar"> ?>
controles de tipo "hidden", este tipo de control no se visualiza en el formulario pero se envía al presionar el botón </form> </body>
submit. <?php </html>
}
Si queremos que el control text se cargue con el mail ingresado en el formulario anterior debemos cargar la else pagina3.php
propiedad value con dicho valor: echo "No existe alumno con dicho mail"; <html>
?> <head>
<input type="text" name="mailnuevo" value="<?php echo $reg['mail'] ?>"> </body> <title>Problema</title>
Por último la pagina3.php es la que efectúa la modificación de la tabla propiamente dicha. Con el mail ingresado </html> </head>
en la pagina1.php, el mail modificado en la pagina2.php se efectúa el update. <body>
pagina3.php <?php
<html> <html> $conexion=mysqli_connect("localhost","root","","base1") or
<head> <head> die("Problemas con la conexión");
<title>Problema</title> <title>Problema</title>
</head> </head> mysqli_query($conexion,"update cursos
<body> <body> set nombrecurso='$_REQUEST[nombrecurso]'
<?php <?php where codigo=$_REQUEST[codigo]") or
$conexion=mysqli_connect("localhost","root","","base1") or $conexion=mysqli_connect("localhost","root","","base1") or die("Problemas en el select:".mysqli_error($conexion));
die("Problemas con la conexión"); die("Problemas con la conexión"); echo "Se modificó el nombre del curso";
?>
mysqli_query($conexion, "update alumnos mysqli_query($conexion, "update alumnos </body>
set mail='$_REQUEST[mailnuevo]' set mail='$_REQUEST[mailnuevo]' </html>
where mail='$_REQUEST[mailviejo]'") or where mail='$_REQUEST[mailviejo]'") or
die("Problemas en el select:".mysqli_error($conexion)); die("Problemas en el select:".mysqli_error($conexion)); En un primer paso vimos como efectuar el alta en la tabla alumnos, ahora vamos a ver como resolver el problema
echo "El mail fue modificado con exito"; echo "El mail fue modificado con exito"; del alta de un alumno seleccionando el curso de la tabla "cursos".
?> ?>
</body> </body> Es decir, el formulario de carga de datos no es HTML puro ya que debemos cargar el control "select" con los datos
</html> </html> de la tabla cursos.
Tengamos en cuenta que el segundo formulario nos envía dos datos: $_REQUEST[mailnuevo] y
$_REQUEST[mailviejo]. Problema propuesto. El código por lo tanto queda de la siguiente forma:
Efectuar la modificación del nombre del curso de la tabla "cursos". Para la búsqueda ingresar el código de curso.
<html>
Solución <head>
Problema resuelto. pagina1.php <title>Problema</title>
Copiar el contenido de este cuadro de texto al NotePad++ y grabarlo en la carpeta c:\wamp\www con un nombre <html> </head>
con extensión php (si hay varios cuadros de texto grabar cada uno en un archivo distinto). <head> <body>
luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear: <title>Problema</title> <form action="pagina2.php" method="post">
http://localhost/pagina1.php (o el nombre del archivo que le dió) </head> Ingrese nombre:
<body> <input type="text" name="nombre"><br>
pagina1.php <form action="pagina2.php" method="post"> Ingrese mail:
<html> Ingrese el codigo del curso a modificar: <input type="text" name="mail"><br>
<head> <input type="text" name="codigo"><br> Seleccione el curso:
<title>Problema</title> <input type="submit" value="buscar"> <select name="codigocurso">
</head> </form> <?php
<body> </body> $conexion=mysqli_connect("localhost","root","","base1") or
<form action="pagina2.php" method="post"> </html> die("Problemas con la conexión");
Ingrese el mail del alumno:
<input type="text" name="mail"><br> pagina2.php $registros=mysqli_query($conexion,"select codigo,nombrecurso from cursos") or
<input type="submit" value="buscar"> <html> die("Problemas en el select:".mysqli_error($conexion));
while ($reg=mysqli_fetch_array($registros)) ?> </body>
{ </select> </html>
echo "<option value=\"$reg[codigo]\">$reg[nombrecurso]</option>"; <br>
} <input type="submit" value="Registrar"> Listado (selección de registros de varias tablas - INNER JOIN)
?> </form> Ahora veremos como imprimir todos los alumnos inscriptos a los cursos junto al nombre del curso donde está
</select> </body> inscripto. Los datos se encuentran en las tablas "alumnos" y "cursos".
<br> </html>
<input type="submit" value="Registrar"> Debemos aparear el código de curso de la tabla "alumnos" con el código de la tabla "cursos".
</form> pagina2.php
</body> <html> En caso de no recordar los conceptos de relaciones de tablas en SQL pueden repasar los mismos en el tutorial de
</html> <head> MySQL Ya.
El algoritmo es similar a cuando trabajamos con una tabla, pero el control "select" lo cargamos con los datos de la <title>Problema</title>
tabla "cursos": </head> El código del programa que hace esto es el siguiente:
<body>
while ($reg=mysqli_fetch_array($registros)) <?php <html>
{ $conexion=mysqli_connect("localhost","root","","base1") or <head>
echo "<option value=\"$reg[codigo]\">$reg[nombrecurso]</option>"; die("Problemas con la conexión"); <title>Problema</title>
} </head>
Dentro del while generamos todas las opciones que contiene el "select" imprimiendo el campo nombrecurso y mysqli_query($conexion,"insert into alumnos(nombre,mail,codigocurso) values <body>
asociando el campo codigo a la propiedad value(que es en definitiva el código que necesitamos rescatar en la otra ('$_REQUEST[nombre]','$_REQUEST[mail]',$_REQUEST[codigocurso])") or <?php
página) die("Problemas en el select".mysqli_error($conexion)); $conexion=mysqli_connect("localhost","root","","base1") or
mysqli_close($conexion); die("Problemas con la conexión");
Tengamos en cuenta que cuando queremos imprimir una comilla doble dentro de un string en PHP debemos echo "El alumno fue dado de alta.";
escaparla con el caracter \ ?> $registros=mysqli_query($conexion,"select alu.codigo as codigo,
</body> nombre,
La página que efectúa el insert es exactamente la misma que vimos anteriormente: </html> mail,
codigocurso,
<html> Problema propuesto. nombrecurso
<head> Confeccionar el alta de la tabla alumnos empleando controles de tipo "radio" para la selección del curso. from alumnos as alu
<title>Problema</title> inner join cursos as cur on cur.codigo=alu.codigocurso") or
</head> Solución die("Problemas en el select:".mysqli_error($conexion));
<body> pagina1.php
<?php <html> while ($reg=mysqli_fetch_array($registros))
$conexion=mysqli_connect("localhost","root","","base1") or <head> {
die("Problemas con la conexión"); <title>Problema</title> echo "Codigo:".$reg['codigo']."<br>";
</head> echo "Nombre:".$reg['nombre']."<br>";
mysqli_query($conexion,"insert into alumnos(nombre,mail,codigocurso) values <body> echo "Mail:".$reg['mail']."<br>";
('$_REQUEST[nombre]','$_REQUEST[mail]',$_REQUEST[codigocurso])") or <form action="pagina2.php" method="post"> echo "Curso:".$reg['nombrecurso']."<br>";
die("Problemas en el select".mysqli_error($conexion)); Ingrese nombre: echo "<hr>";
mysqli_close($conexion); <input type="text" name="nombre"><br> }
echo "El alumno fue dado de alta."; Ingrese mail: mysqli_close($conexion);
?> <input type="text" name="mail"><br> ?>
</body> Seleccione el curso:<br> </body>
</html> <?php </html>
$conexion=mysqli_connect("localhost","root","","base1") or Hay varias cosas nuevas cuya sintaxis necesitamos analizar, la primera es como hacer el apareo con la tabla cursos:
die("Problemas con la conexión");
Problema resuelto. inner join cursos as cur on cur.codigo=alu.codigocurso
Copiar el contenido de este cuadro de texto al NotePad++ y grabarlo en la carpeta c:\wamp\www con un nombre $registros=mysqli_query($conexion,"select codigo,nombrecurso from cursos") or Luego de las palabras claves inner join, indicamos la tabla que necesitamos aparear, podemos crear un alias de
con extensión php (si hay varios cuadros de texto grabar cada uno en un archivo distinto). die("Problemas en el select:".mysql_error()); una tabla mediante la palabra clave as. En el resto de la consulta, en vez de indicar el nombre de la tabla,
luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear: while ($reg=mysqli_fetch_array($registros)) hacemos referencia al alias(generalmente un nombre más corto).
http://localhost/pagina1.php (o el nombre del archivo que le dió) {
echo "<input type=\"radio\" name=\"radio1\" value=\"$reg[codigo]\">".$reg['nombrecurso']."<br>"; Seguidamente de la palabra clave on, indicamos los campos por los que apareamos las tablas, en nuestro caso el
pagina1.php } codigo de la tabla cursos con el codigocurso de la tabla alumnos.
<html> ?>
<head> <input type="submit" value="Registrar"> Otro punto a tener en cuenta es indicar en el select que campos debemos rescatar de las tablas, es decir, indicarle
<title>Problema</title> </form> a que tabla pertenece en el caso que tengan el mismo nombre:
</head> </body>
<body> </html> $registros=mysqli_query($conexion,"select alu.codigo as codigo,
<form action="pagina2.php" method="post"> nombre,
Ingrese nombre: pagina2.php mail,
<input type="text" name="nombre"><br> <html> codigocurso,
Ingrese mail: <head> nombrecurso
<input type="text" name="mail"><br> <title>Problema</title> from alumnos as alu
Seleccione el curso: </head> inner join cursos as cur on cur.codigo=alu.codigocurso") or
<select name="codigocurso"> <body> die("Problemas en el select:".mysqli_error($conexion));
<?php <?php En este caso rescatamos el código del alumno (y no el código de curso). Debemos crear un alias si dos tablas
$conexion=mysqli_connect("localhost","root","","base1") or $conexion=mysqli_connect("localhost","root","","base1") or tienen el mismo nombre de campo para evitar confusión; como ocurre aquí con el campo codigo de las tablas
die("Problemas con la conexión"); die("Problemas con la conexión"); alumnos y cursos. También creamos un alias para la tabla alumnos.

$registros=mysqli_query($conexion,"select codigo,nombrecurso from cursos") or mysqli_query($conexion,"insert into alumnos(nombre,mail,codigocurso) values Cuando rescatamos los datos y los mostramos en la página, hacemos referencia al alias del campo:
die("Problemas en el select:".mysqli_error($conexion)); ('$_REQUEST[nombre]','$_REQUEST[mail]',$_REQUEST[radio1])") or
while ($reg=mysqli_fetch_array($registros)) die("Problemas en el select".mysqli_error($conexion)); while ($reg=mysqli_fetch_array($registros))
{ {
echo "<option value=\"$reg[codigo]\">$reg[nombrecurso]</option>"; echo "El alumno fue dado de alta."; echo "Codigo:".$reg['codigo']."<br>";
} ?> echo "Nombre:".$reg['nombre']."<br>";
echo "Mail:".$reg['mail']."<br>"; $registros=mysqli_query($conexion,"select nombre, <?php
echo "Curso:".$reg['nombrecurso']."<br>"; mail, $conexion=mysqli_connect("localhost","root","","base1") or
echo "<hr>"; nombrecurso die("Problemas con la conexión");
} from alumnos as alu
inner join cursos as cur on cur.codigo=alu.codigocurso $registros=mysqli_query($conexion,"select count(*) as cantidad from alumnos",$conexion) or
where alu.codigo=$_REQUEST[codigo]") or die("Problemas en el select:".mysqli_error());
Problema resuelto. die("Problemas en el select:".mysqli_error($conexion)); $reg=mysqli_fetch_array($registros);
Copiar el contenido de este cuadro de texto al NotePad++ y grabarlo en la carpeta c:\wamp\www con un nombre echo "La cantidad de alumnos inscriptos son :".$reg['cantidad'];
con extensión php (si hay varios cuadros de texto grabar cada uno en un archivo distinto). if ($reg=mysqli_fetch_array($registros)) ?>
luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear: { </body>
http://localhost/pagina1.php (o el nombre del archivo que le dió) echo "Nombre:".$reg['nombre']."<br>"; </html>
echo "Mail:".$reg['mail']."<br>";
pagina1.php echo "Curso:".$reg['nombrecurso']."<br>"; Problema propuesto.
<html> } Confeccionar un programa que muestre por pantalla los nombres de todos los cursos y al final la cantidad total de
<head> else cursos.
<title>Problema</title> {
</head> echo "No existe un alumno con ese código."; Solución
<body> } pagina1.php
<?php mysqli_close($conexion); <html>
$conexion=mysqli_connect("localhost","root","","base1") or ?> <head>
die("Problemas con la conexión"); </body> <title>Problema</title>
</html> </head>
$registros=mysqli_query($conexion,"select alu.codigo as codigo, <body>
nombre, Función count de SQL. <?php
mail, Hay en MySQL funciones que nos permiten contar registros, calcular sumas, promedios, obtener valores máximos $conexion=mysqli_connect("localhost","root","","base1") or
codigocurso, y mínimos. Veamos la función count. die("Problemas con la conexión");
nombrecurso
from alumnos as alu Cuando necesitamos saber la cantidad de registros utilizamos la función count, por ejemplo si deseamos conocer $registros=mysqli_query($conexion,"select nombrecurso from cursos") or
inner join cursos as cur on cur.codigo=alu.codigocurso") or la cantidad de alumnos que hay en la tabla "alumnos" debemos implementar el siguiente comando SQL: die("Problemas en el select:".mysqli_error($conexion));
die("Problemas en el select:".mysqli_error($conexion));
select count(*) as cantidad from alumnos while ($reg=mysqli_fetch_array($registros))
while ($reg=mysqli_fetch_array($registros)) Implementamos una página que muestra este resultado: {
{ echo "Nombre del curso:".$reg['nombrecurso']."<br>";
echo "Codigo:".$reg['codigo']."<br>"; <html> echo "<hr>";
echo "Nombre:".$reg['nombre']."<br>"; <head> }
echo "Mail:".$reg['mail']."<br>"; <title>Problema</title> $registros=mysqli_query($conexion,"select count(*) as cantidad from cursos") or
echo "Curso:".$reg['nombrecurso']."<br>"; </head> die("Problemas en el select:".mysqli_error($conexion));
echo "<hr>"; <body>
} <?php $reg=mysqli_fetch_array($registros);
mysqli_close($conexion); $conexion=mysqli_connect("localhost","root","","base1") or echo "La cantidad de cursos son :".$reg['cantidad'];
?> die("Problemas con la conexión");
</body> mysqli_close($conexion);
</html> $registros=mysqli_query($conexion,"select count(*) as cantidad from alumnos") or ?>
die("Problemas en el select:".mysqli_error($conexion)); </body>
Problema propuesto. $reg=mysqli_fetch_array($registros); </html>
Confeccionar un programa que permita ingresar el código de un alumno y nos muestre su nombre, mail y nombre echo "La cantidad de alumnos inscriptos son :".$reg['cantidad'];
del curso en el cual está inscripto. Hacer un formulario donde se ingrese el código de alumno y otra página donde ?> UPDATE (Modificación de un registro trabajando con dos tablas)
se muestren los datos respectivos. Mostrar un mensaje si no existe el código de alumno ingresado. </body> Ahora complicaremos un poco la modificación de un registro consultando dos tablas. Supongamos que un alumno
</html> desea cambiarse de curso, es decir, se inscribió en uno y quiere borrarse de ese e inscribirse en otro diferente.
Solución En la sentencia select en vez de indicar los campos de la tabla, colocamos la llamada a la función count pasando Debemos mostrar en un "select" el curso actual en el que está inscripto y los otros cursos disponibles en la tabla
pagina1.php como parámetro un asterisco y creando un alias para su posterior recuperación e impresión del dato: "cursos".
<html>
<head> $registros=mysqli_query($conexion,"select count(*) as cantidad from alumnos") or Para resolver este problema tenemos que plantear tres páginas, una donde ingresemos el mail del alumno, la
<title>Problema</title> die("Problemas en el select:".mysqli_error($conexion)); segunda donde se pueda cambiar el curso y por última una que permita modificar la tabla "alumnos" con el nuevo
</head> El select no tiene cláusula where ya que debemos contar todos los alumnos y no los de algún curso en particular. curso seleccionado.
<body>
<form action="pagina2.php" method="post"> La llamada a la función mysqli_fetch_array se hace sin estructura condicional o repetitiva ya que sabemos que nos La primera página de ingreso del mail es:
Ingrese el codigo del alumno: retornará un único registro (en realidad, un registro que tiene una sola columna llamada cantidad, en caso de
<input type="text" name="codigo"> estar vacía la tabla alumnos, se almacena cero en el alias cantidad): <html>
<br> <head>
<input type="submit" value="buscar"> $reg=mysqli_fetch_array($registros); <title>Problema</title>
</form> </head>
</body> <body>
</html> Problema resuelto. <form action="pagina2.php" method="post">
Copiar el contenido de este cuadro de texto al NotePad++ y grabarlo en la carpeta c:\wamp\www con un nombre Ingrese el mail del alumno:
pagina2.php con extensión php (si hay varios cuadros de texto grabar cada uno en un archivo distinto). <input type="text" name="mail"><br>
<html> luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear: <input type="submit" value="buscar">
<head> http://localhost/pagina1.php (o el nombre del archivo que le dió) </form>
<title>Problema</title> </body>
</head> pagina1.php </html>
<body> <html> La segunda página y la más importante en cuanto a novedades es la siguiente:
<?php <head>
$conexion=mysqli_connect("localhost","root","","base1") or <title>Problema</title> <html>
die("Problemas con la conexión"); </head> <head>
<body> <title>Problema</title>
</head> die("Problemas en el select:".mysqli_error($conexion)); <?php
<body> echo "El curso fue modificado con exito"; $conexion=mysqli_connect("localhost","root","","base1") or
<?php ?> die("Problemas con la conexión");
$conexion=mysqli_connect("localhost","root","","base1") or </body>
die("Problemas con la conexión"); </html> $registros=mysqli_query($conexion,"update alumnos
set codigocurso=$_REQUEST[codigocurso]
$registros=mysqli_query($conexion,"select * from alumnos where mail='$_REQUEST[mailviejo]'") or
where mail='$_REQUEST[mail]'") or Problema resuelto. die("Problemas en el select:".mysqli_error($conexion));
die("Problemas en el select:".mysqli_error($conexion)); Copiar el contenido de este cuadro de texto al NotePad++ y grabarlo en la carpeta c:\wamp\www con un nombre echo "El curso fue modificado con exito";
if ($regalu=mysqli_fetch_array($registros)) con extensión php (si hay varios cuadros de texto grabar cada uno en un archivo distinto). ?>
{ luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear: </body>
?> http://localhost/pagina1.php (o el nombre del archivo que le dió) </html>
<form action="pagina3.php" method="post">
<input type="hidden" name="mailviejo" value="<?php echo $regalu['mail'] ?>"> pagina1.php Problema propuesto.
<select name="codigocurso"> <html> Confeccionar la modificación del mail, nombre y curso de la tabla "alumnos". Ingresar por teclado el código de
<?php <head> alumno para su búsqueda.
$registros=mysqli_query($conexion,"select * from cursos") or <title>Problema</title>
die("Problemas en el select:".mysqli_error($conexion)); </head> Solución
while ($reg=mysqli_fetch_array($registros)) <body> pagina1.php
{ <form action="pagina2.php" method="post"> <html>
if ($regalu['codigocurso']==$reg['codigo']) Ingrese el mail del alumno: <head>
echo "<option value=\"$reg[codigo]\" selected>$reg[nombrecurso]</option>"; <input type="text" name="mail"><br> <title>Problema</title>
else <input type="submit" value="buscar"> </head>
echo "<option value=\"$reg[codigo]\">$reg[nombrecurso]</option>"; </form> <body>
} </body> <form action="pagina2.php" method="post">
?> </html> Ingrese el codigo del alumno:
</select> <input type="text" name="codigo"><br>
<br> pagina2.php <input type="submit" value="buscar">
<input type="submit" value="Modificar"> <html> </form>
</form> <head> </body>
<?php <title>Problema</title> </html>
} </head>
else <body> pagina2.php
echo "No existe alumno con dicho mail"; <?php <html>
?> $conexion=mysqli_connect("localhost","root","","base1") or <head>
</body> die("Problemas con la conexión"); <title>Problema</title>
</html> </head>
La primera consulta de la tabla alumnos es para verificar si existe un alumno con el mail ingresado por teclado: $registros=mysqli_query($conexion,"select * from alumnos <body>
where mail='$_REQUEST[mail]'") or <?php
$registros=mysqli_query($conexion,"select * from alumnos die("Problemas en el select:".mysqli_error($conexion)); $conexion=mysqli_connect("localhost","root","","base1") or
where mail='$_REQUEST[mail]'") or if ($regalu=mysqli_fetch_array($registros)) die("Problemas con la conexión");
die("Problemas en el select:".mysqli_error($conexion)); {
if ($regalu=mysqli_fetch_array($registros)) ?> $registros=mysqli_query($conexion,"select * from alumnos
{ <form action="pagina3.php" method="post"> where codigo=$_REQUEST[codigo]") or
En caso de existir un alumno con dicho mail, el if se verifica verdadero y pasamos a poblar el control select con los <input type="hidden" name="mailviejo" value="<?php echo $regalu['mail'] ?>"> die("Problemas en el select:".mysqli_error($conexion));
distintos cursos que contiene la tabla "cursos": <select name="codigocurso"> if ($regalu=mysqli_fetch_array($registros))
<?php {
$registros=mysqli_query($conexion,"select * from cursos") or $registros=mysqli_query($conexion,"select * from cursos") or ?>
die("Problemas en el select:".mysqli_error($conexion)); die("Problemas en el select:".mysqli_error($conexion)); <form action="pagina3.php" method="post">
while ($reg=mysqli_fetch_array($registros)) while ($reg=mysqli_fetch_array($registros)) Nombre: <input type="text" name="nombre" value="<?php echo $regalu['nombre'] ?>"><br>
{ { Mail: <input type="text" name="mail" value="<?php echo $regalu['mail'] ?>"><br>
if ($regalu['codigocurso']==$reg['codigo']) if ($regalu['codigocurso']==$reg['codigo']) <input type="hidden" name="codigo" value="<?php echo $regalu['codigo'] ?>">
echo "<option value=\"$reg[codigo]\" selected>$reg[nombrecurso]</option>"; echo "<option value=\"$reg[codigo]\" selected>$reg[nombrecurso]</option>"; <select name="codigocurso">
else else <?php
echo "<option value=\"$reg[codigo]\">$reg[nombrecurso]</option>"; echo "<option value=\"$reg[codigo]\">$reg[nombrecurso]</option>"; $registros=mysqli_query($conexion,"select * from cursos") or
} } die("Problemas en el select:".mysql_error());
?> ?> while ($reg=mysqli_fetch_array($registros))
</select> </select> {
Para que aparezca seleccionado el curso actual debemos inicializar lo marca option con el texto selected. Es decir <br> if ($regalu['codigocurso']==$reg['codigo'])
que el if dentro del while se verifica verdadero una solo vez. <input type="submit" value="Modificar"> echo "<option value=\"$reg[codigo]\" selected>$reg[nombrecurso]</option>";
</form> else
Por último la tercer página procede a registrar el cambio en la tabla "alumnos": <?php echo "<option value=\"$reg[codigo]\">$reg[nombrecurso]</option>";
} }
<html> else ?>
<head> echo "No existe alumno con dicho mail"; </select>
<title>Problema</title> ?> <br>
</head> </body> <input type="submit" value="Modificar">
<body> </html> </form>
<?php <?php
$conexion=mysqli_connect("localhost","root","","base1") or pagina3.php }
die("Problemas con la conexión"); <html> else
<head> echo "No existe alumno con dicho mail";
$registros=mysqli_query($conexion,"update alumnos <title>Problema</title> ?>
set codigocurso=$_REQUEST[codigocurso] </head> </body>
where mail='$_REQUEST[mailviejo]'") or <body> </html>
Luego mostramos el nombre de curso con la cantidad de inscriptos para dicho curso: die("Problemas en el select:".mysqli_error($conexion));
pagina3.php while ($reg=mysqli_fetch_array($registros))
<html> while ($reg=mysqli_fetch_array($registros)) {
<head> { echo "Nombre del curso:".$reg['nombrecurso']."<br>";
<title>Problema</title> echo "Nombre del curso:".$reg['nombrecurso']."<br>"; echo "Cantidad de inscriptos:".$reg['cantidad']."<br>";
</head> echo "Cantidad de inscriptos:".$reg['cantidad']."<br>"; $registros2=mysqli_query($conexion,"select nombre
<body> echo "<hr>"; from alumnos
<?php } where codigocurso=$reg[codigocurso]") or
$conexion=mysqli_connect("localhost","root","","base1") or die("Problemas en el select:".mysqli_error($conexion));
die("Problemas con la conexión"); while ($reg2=mysqli_fetch_array($registros2))
Problema resuelto. {
$registros=mysqli_query($conexion,"update alumnos Copiar el contenido de este cuadro de texto al NotePad++ y grabarlo en la carpeta c:\wamp\www con un nombre echo $reg2['nombre']."-";
set codigocurso=$_REQUEST[codigocurso], con extensión php (si hay varios cuadros de texto grabar cada uno en un archivo distinto). }
nombre='$_REQUEST[nombre]', luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear: echo "<hr>";
mail='$_REQUEST[mail]' http://localhost/pagina1.php (o el nombre del archivo que le dió) }
where codigo=$_REQUEST[codigo]") or mysqli_close($conexion);
die("Problemas en el select:".mysqli_error($conexion)); pagina1.php ?>
echo "El curso fue modificado con exito"; <html> </body>
?> <head> </html>
</body> <title>Problema</title>
</html> </head> Parámetros en un hipervínculo.
<body> Hasta ahora hemos visto como enviar datos de una página a otra mediante formularios. Otra forma muy utilizada
Cláusula Group By de SQL. <?php que complementa la anterior es como parámetro en un hipervínculo.
Entre las muchas posibilidades que nos brinda SQL, una es agrupar registros y obtener información resumida de $conexion=mysqli_connect("localhost","root","","base1") or
tablas. die("Problemas con la conexión"); Confeccionaremos una página que muestre tres hipervínculos, cada uno tiene por objetivo mostrar en una página
las tablas de multiplicar del 2, del 3 o la del 5.
En nuestro problema, un listado interesante sería mostrar la cantidad de alumnos inscriptos por curso. Para $registros=mysqli_query($conexion,"select count(alu.codigo) as
resolver de una manera sencilla esta situación, SQL nos permite agrupar los registros de la tabla "alumnos" por la cantidad, La primer página es un archivo HTML puro, ya que sólo disponemos las marcas de hipervínculos:
columna "codigocurso" y contar la cantidad de registros que hay por cada código de curso igual. nombrecurso
from alumnos as alu <html>
El programa que nos permite resolver este problema es el siguiente: inner join cursos as cur on cur.codigo=alu.codigocurso <head>
group by alu.codigocurso") or <title>Problema</title>
<html> die("Problemas en el select:".mysqli_error($conexion)); </head>
<head> while ($reg=mysqli_fetch_array($registros)) <body>
<title>Problema</title> { <A href="pagina2.php?tabla=2">Tabla del 2</A> <br>
</head> echo "Nombre del curso:".$reg['nombrecurso']."<br>"; <A href="pagina2.php?tabla=3">Tabla del 3</A> <br>
<body> echo "Cantidad de inscriptos:".$reg['cantidad']."<br>"; <A href="pagina2.php?tabla=5">Tabla del 5</A>
<?php echo "<hr>"; </body>
$conexion=mysqli_connect("localhost","root","","base1") or } </html>
die("Problemas con la conexión"); mysqli_close($conexion); La sintaxis para pasar parámetros en un hipervínculo es:
?>
$registros=mysqli_query($conexion,"select count(alu.codigo) as cantidad, </body> <A href="pagina2.php?tabla=2">Tabla del 2</A> <br>
nombrecurso </html> Es decir, luego del caracter "?" indicacamos el nombre del parámetro y seguidamente el valor del mismo.
from alumnos as alu
inner join cursos as cur on cur.codigo=alu.codigocurso Problema propuesto. La página que rescata el valor pasado como parámetro es la siguiente:
group by alu.codigocurso") or Confeccionar un programa que muestre el nombre del curso, la cantidad de inscriptos y todos los inscriptos a
die("Problemas en el select:".mysqli_error($conexion)); dicho curso. Repetir esto con todos los cursos. <html>
while ($reg=mysqli_fetch_array($registros)) <head>
{ Es decir, en la página debe aparecer algo parecido a: <title>Problema</title>
echo "Nombre del curso:".$reg['nombrecurso']."<br>"; </head>
echo "Cantidad de inscriptos:".$reg['cantidad']."<br>"; <body>
echo "<hr>"; Nombre del curso:PHP <?php
} Cantidad de inscriptos:3 echo "Listado de la tabla del $_REQUEST[tabla] <br>";
mysqli_close($conexion); Nombres: Martinez Luis - Rodriguez Pablo - Gonzalez Ana for($f=1;$f<=10;$f++)
?> {
</body> Nombre del curso:JSP $valor=$f*$_REQUEST['tabla'];
</html> Cantidad de inscriptos:2 echo $valor."-";
Hay varias partes importantes en este código; primero, en el select indicamos que cuente la cantidad de registros Nombres: Hernandez Hector - Roca Marta }
de la tabla "alumnos": Solución ?>
pagina1.php </body>
select count(alu.codigo) as cantidad, <html> </html>
nombrecurso <head> Es decir que con el mismo vector asociativo $_REQUEST recuperamos los datos enviados por parámetro en la
from alumnos as alu <title>Problema</title> llamada a la página.
Pero, como veremos más adelante, en 'cantidad' no se almacena la cantidad total de registros de la tabla </head>
"alumnos" debido a que más adelante empleamos la cláusula group by. <body>
<?php
Como necesitamos rescatar el nombre del curso hacemos el apareo con la tabla "cursos": $conexion=mysqli_connect("localhost","root","","base1") or Problema resuelto.
die("Problemas con la conexión"); Copiar el contenido de este cuadro de texto al NotePad++ y grabarlo en la carpeta c:\wamp\www con un nombre
inner join cursos as cur on cur.codigo=alu.codigocurso con extensión php (si hay varios cuadros de texto grabar cada uno en un archivo distinto).
Por último en la sentencia select de SQL disponemos la cláusula group by: $registros=mysqli_query($conexion,"select count(alu.codigo) as cantidad, luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear:
nombrecurso, http://localhost/pagina1.php (o el nombre del archivo que le dió)
group by alu.codigocurso" codigocurso
Con esta cláusula se hace un corte de control por cada grupo de registros que tienen el mismo código de curso from alumnos as alu pagina1.php
almacenado. inner join cursos as cur on cur.codigo=alu.codigocurso <html>
group by alu.codigocurso") or <head>
<title>Problema</title> } Otro concepto importante es la cláusula limit que es propia del gestor MySQL. Mediante esta cláusula limitamos
</head> la cantidad de registros que retorna el select. El primer valor del limit indica a partir de cual registro y el segundo
<body> mysqli_close($conexion); la cantidad de registros. Es decir si un select sin limit retorna 100 registro, luego utilizando por ejemplo la sintaxis
<A href="pagina2.php?tabla=2">Tabla del 2</A> <br> ?> limit 50,25 nos retornará, de esa lista de 100 registros, a partir del registro de la posición 50, 25 registros.
<A href="pagina2.php?tabla=3">Tabla del 3</A> <br> </body>
<A href="pagina2.php?tabla=5">Tabla del 5</A> </html> En nuestro problema indicamos que retorne desde valor que tenga la variable $inicio y como cantidad 2 (páginas
</body> con 2 registros):
</html> Paginación de registros.
En situaciones en las cuales una consulta retorna muy muchos datos, en vez de enviarlos todos al navegador, se $registros=mysqli_query($conexion,"select alu.codigo as
pagina2.php puede enviar un conjunto limitado de registros. Luego, mediante hipervínculos, ver el resto de datos. Por ejemplo, codigo,
<html> cuando hacemos búsquedas con el servidor google, generalmente no nos retorna todas las direcciones donde se nombre,
<head> encuentran los resultados buscados, nos retorna páginas con 10 enlaces por página (pensemos el tiempo de mail,
<title>Problema</title> transferencia si nos retornara 1.000.000 de enlaces). codigocurso,
</head> nombrecurso
<body> Bueno, ahora resolvamos con el lenguaje PHP este problema de paginación, mostraremos dos alumnos por página: from alumnos as alu
<?php inner join cursos as cur on cur.codigo=alu.codigocurso
echo "Listado de la tabla del $_REQUEST[tabla] <br>"; <?php limit $inicio,2") or
for($f=1;$f<=10;$f++) if (isset($_REQUEST['pos'])) die("Problemas en el select:".mysqli_error($conexion));
{ $inicio=$_REQUEST['pos']; Seguidamente mostramos todos los registros retornados y además los contamos:
$valor=$f*$_REQUEST['tabla']; else
echo $valor."-"; $inicio=0; $impresos=0;
} ?> while ($reg=mysqli_fetch_array($registros))
?> <html> {
<br> <head> $impresos++;
<a href="pagina1.php">retornar</a> <title>Problema</title> echo "Codigo:".$reg['codigo']."<br>";
</body> </head> echo "Nombre:".$reg['nombre']."<br>";
</html> <body> echo "Mail:".$reg['mail']."<br>";
echo "Curso:".$reg['nombrecurso']."<br>";
Problema propuesto. <?php echo "<hr>";
Confeccionar un programa que muestre una página con todos los nombres de la tabla "cursos". Los nombres $conexion=mysqli_connect("localhost","root","","base1") or }
deben aparecer como hipervínculos a otra página que deberá mostrar todos los alumnos inscriptos a dicho curso. die("Problemas con la conexión"); Ahora vemos dónde dispondremos los hipervínculos, hacia adelante o atrás:
Como parámetro en el hipervínculo, pasar el código de curso.
$registros=mysqli_query($conexion,"select alu.codigo as if ($inicio==0)
Solución codigo, echo "anteriores ";
pagina1.php nombre, else
<html> mail, {
<head> codigocurso, $anterior=$inicio-2;
<title>Problema</title> nombrecurso echo "<a href=\"pagina1.php?pos=$anterior\">Anteriores </a>";
</head> from alumnos as alu }
<body> inner join cursos as cur on cur.codigo=alu.codigocurso Si la variable $inicio vale 0 significa que no hay registros antes de éste, por lo que sólo mostramos un texto
<?php limit $inicio,2") or "anteriores". En caso que la variable $inicio sea distinta de 0, se ejecuta el else, donde disponemos un
$conexion=mysqli_connect("localhost","root","","base1") or die("Problemas en el select:".mysqli_error($conexion)); hipervínculo con la misma página e inicializando el parámetro pos con el valor de $inicio menos 2.
die("Problemas con la conexión"); $impresos=0;
while ($reg=mysqli_fetch_array($registros)) Si el contador $impresos tiene el valor 2 significa que posiblemente hay más registros por mostrar y debemos
$registros=mysqli_query($conexion,"select codigo,nombrecurso from cursos") or { disponer un hipervínculo con la misma página pero inicializando el parámetro pos con el valor de $inicio más 2:
die("Problemas en el select:".mysqli_error($conexion)); $impresos++;
echo "Codigo:".$reg['codigo']."<br>"; if ($impresos==2)
while ($reg=mysqli_fetch_array($registros)) echo "Nombre:".$reg['nombre']."<br>"; {
{ echo "Mail:".$reg['mail']."<br>"; $proximo=$inicio+2;
echo "Codigo:".$reg['codigo']."<br>"; echo "Curso:".$reg['nombrecurso']."<br>"; echo "<a href=\"pagina1.php?pos=$proximo\">Siguientes</a>";
echo "Nombre del curso:<a href=\"pagina2.php?codigo=$reg[codigo]\">".$reg['nombrecurso']."</a><br>"; echo "<hr>"; }
echo "<hr>"; } else
} if ($inicio==0) echo "siguientes";
mysqli_close($conexion); echo "anteriores ";
?> else
</body> { Problema resuelto.
</html> $anterior=$inicio-2; Copiar el contenido de este cuadro de texto al NotePad++ y grabarlo en la carpeta c:\wamp\www con un nombre
echo "<a href=\"pagina1.php?pos=$anterior\">Anteriores </a>"; con extensión php (si hay varios cuadros de texto grabar cada uno en un archivo distinto).
pagina2.php } luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear:
<html> if ($impresos==2) http://localhost/pagina1.php (o el nombre del archivo que le dió)
<head> {
<title>Problema</title> $proximo=$inicio+2; pagina1.php
</head> echo "<a href=\"pagina1.php?pos=$proximo\">Siguientes</a>"; <?php
<body> } if (isset($_REQUEST['pos']))
<?php else $inicio=$_REQUEST['pos'];
$conexion=mysqli_connect("localhost","root","","base1") or echo "siguientes"; else
die("Problemas con la conexión"); mysqli_close($conexion); $inicio=0;
?> ?>
$registros=mysqli_query($conexion,"select nombre from alumnos where codigocurso=$_REQUEST[codigo]") or </body> <html>
die("Problemas en el select:".mysqli_error($conexion)); </html> <head>
La función isset retorna verdadero si existe la variable que le pasamos como parámetro, en este caso le estamos <title>Problema</title>
echo "Alumnos inscriptos a dicho curso<br>"; pasando la componente pos del vector asociativo $_REQUEST. Cuando llamamos por primera vez a esta página, lo </head>
while ($reg=mysqli_fetch_array($registros)) hacemos : pagina1.php sin parámetros, por lo que el if se verifica como falso. Es decir la variable $inicio se carga <body>
{ con el valor 0. <?php
echo $reg['nombre']." - "; $conexion=mysqli_connect("localhost","root","","base1") or
die("Problemas con la conexión"); echo "anteriores "; La matriz $_FILES almacena el nombre del archivo almacenado en el directorio temporal
else ($_FILES['foto']['tmp_name']) y el nombre del archivo originario ($_FILES['foto']['name'])
$registros=mysqli_query($conexion,"select alu.codigo as {
codigo, $anterior=$inicio-3; Por último mostramos en la página el archivo que se almacenó en el servidor:
nombre, echo "<a href=\"pagina1.php?pos=$anterior\">Anteriores </a>";
mail, } $nom=$_FILES['foto']['name'];
codigocurso, if ($impresos==3) echo "<img src=\"$nom\">";
nombrecurso { Otras cosas interesantes que tiene la matriz $_FILES:
from alumnos as alu $proximo=$inicio+3;
inner join cursos as cur on cur.codigo=alu.codigocurso echo "<a href=\"pagina1.php?pos=$proximo\">Siguientes</a>"; $_FILES['foto']['name'] El nombre original del fichero en
limit $inicio,2") or } la máquina cliente.
die("Problemas en el select:".mysqli_error($conexion)); else $_FILES['foto']['type'] El tipo de archivo (si el navegador
$impresos=0; echo "siguientes"; lo proporciona). Un ejemplo podría ser "image/gif".
while ($reg=mysqli_fetch_array($registros)) ?> $_FILES['foto']['size'] El tamaño en bytes del fichero recibido.
{ </body> $_FILES['foto']['tmp_name'] El nombre del archivo temporal que se
$impresos++; </html> utiliza para almacenar en el servidor el archivo recibido.
echo "Codigo:".$reg['codigo']."<br>";
echo "Nombre:".$reg['nombre']."<br>"; Subir un archivo al servidor (Upload)
echo "Mail:".$reg['mail']."<br>"; Una actividad común en un sitio es poder almacenar un archivo en el servidor, más comunmente conocido como Problema resuelto.
echo "Curso:".$reg['nombrecurso']."<br>"; upload. Copiar el contenido de este cuadro de texto al NotePad++ y grabarlo en la carpeta c:\wamp\www con un nombre
echo "<hr>"; con extensión php (si hay varios cuadros de texto grabar cada uno en un archivo distinto).
} Se necesita en muchas ocasiones este algoritmo, por ejemplo para subir fotos, documentos, programas, etc. luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear:
if ($inicio==0) http://localhost/pagina1.php (o el nombre del archivo que le dió)
echo "anteriores "; Se requieren dos páginas, una de ellas, un formulario donde seleccionamos el archivo a enviar y otra página donde
else se graba el archivo en el servidor. pagina1.php
{ <html>
$anterior=$inicio-2; El formulario para hacer la selección del archivo es: <head>
echo "<a href=\"pagina1.php?pos=$anterior\">Anteriores </a>"; <title>Problema</title>
} <html> </head>
if ($impresos==2) <head> <body>
{ <title>Problema</title> <form action="pagina2.php" method="post" enctype="multipart/form-data">
$proximo=$inicio+2; </head> Seleccione el archivo:
echo "<a href=\"pagina1.php?pos=$proximo\">Siguientes</a>"; <body> <input type="file" name="foto"><br>
} <form action="pagina2.php" method="post" enctype="multipart/form-data"> <input type="submit" value="Enviar">
else Seleccione el archivo: </form>
echo "siguientes"; <input type="file" name="foto"><br> </body>
mysqli_close($conexion); <input type="submit" value="Enviar"> </html>
?> </form>
</body> </body> pagina2.php
</html> </html> <html>
Veamos los puntos que tenemos que respetar cuando efectuamos el upload de archivos: <head>
Problema propuesto. <title>Problema</title>
Confeccionar un programa que muestre los registros de la tabla "cursos" con páginas de 3 registros. <form action="pagina2.php" method="post" enctype="multipart/form-data"> </head>
Se define una nueva propiedad para la etiqueta form, con esta indicamos que dentro del formulario de carga se <body>
Solución envían archivos. Hay que tener mucho cuidado cuando tipeamos esta propiedad, si nos equivocamos en algún <?php
pagina1.php caracter el proceso de upload no funcionará. copy($_FILES['foto']['tmp_name'],$_FILES['foto']['name']);
<?php echo "La foto se registro en el servidor.<br>";
if (isset($_REQUEST['pos'])) El control HTML para la selección del archivo se llama "file": $nom=$_FILES['foto']['name'];
$inicio=$_REQUEST['pos']; echo "<img src=\"$nom\">";
else <input type="file" name="foto"><br> ?>
$inicio=0; Automáticamente aparecerá el botón dentro de la página para poder navegar en nuestro disco duro para la </body>
?> selección del archivo (por defecto PHP está configurado para poder cargar archivos de hasta 2 Mb, de todos </html>
<html> modos, a este valor lo podemos modificar).
<head> Problema propuesto.
<title>Problema</title> La segunda página es: Confeccionar un programa que permita hacer multiples upload con una página (por ejemplo que permita
</head> seleccionar hasta 3 archivos)
<body> <html>
<?php <head> Solución
$conexion=mysqli_connect("localhost","root","","base1") or <title>Problema</title> pagina1.php
die("Problemas con la conexión"); </head> <html>
<body> <head>
$registros=mysqli_query($conexion,"select codigo, <?php <title>Problema</title>
nombrecurso from cursos copy($_FILES['foto']['tmp_name'],$_FILES['foto']['name']); </head>
limit $inicio,3") or echo "La foto se registro en el servidor.<br>"; <body>
die("Problemas en el select:".mysqli_error($conexion)); $nom=$_FILES['foto']['name']; <form action="pagina2.php" method="post" enctype="multipart/form-data">
$impresos=0; echo "<img src=\"$nom\">"; Seleccione el archivo 1:
while ($reg=mysqli_fetch_array($registros)) ?> <input type="file" name="foto1"><br>
{ </body> Seleccione el archivo 2:
$impresos++; </html> <input type="file" name="foto2"><br>
echo "Codigo:".$reg['codigo']."<br>"; Cuando se ejecuta esta página, ya está almacenado en el servidor el archivo, en una carpeta temporal. Ahora nos Seleccione el archivo 2:
echo "Nombre:".$reg['nombrecurso']."<br>"; hace falta copiar el mismo a la carpeta donde se encuentra nuestra página (en definitiva nuestro sitio de internet). <input type="file" name="foto3"><br>
echo "<hr>"; Para esto llamamos a la función copy: <input type="submit" value="Enviar">
} </form>
mysqli_close($conexion); copy($_FILES['foto']['tmp_name'],$_FILES['foto']['name']); </body>
if ($inicio==0) </html>
pagina2.php
<html>
<head>
<title>Problema</title>
</head>
<body>
<?php
if ($_FILES['foto1']['tmp_name']!="")
{
copy($_FILES['foto1']['tmp_name'],$_FILES['foto1']['name']);
$nom=$_FILES['foto1']['name'];
echo "<img src=\"$nom\">";
}
if ($_FILES['foto2']['tmp_name']!="")
{
copy($_FILES['foto2']['tmp_name'],$_FILES['foto2']['name']);
$nom=$_FILES['foto2']['name'];
echo "<img src=\"$nom\">";
}
if ($_FILES['foto3']['tmp_name']!="")
{
copy($_FILES['foto3']['tmp_name'],$_FILES['foto3']['name']);
$nom=$_FILES['foto3']['name'];
echo "<img src=\"$nom\">";
}
?>
</body>
</html>

You might also like