Quiero realizar un formulario de registro en el cual se suban ciertos datos (ya los mostrare). El problema surge cuando ingreso la imagen y pongo registrar me tira el error de que no se ha ingresado ninguna imagen.
Aca les muestro parte del codigo para que vean y se fijen si se dan cuenta de lo que pasa...
registro.php
Código PHP:
<?php
include('acceso_db.php'); // incluimos el archivo de conexión a la Base de Datos
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<?php
if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos desde el formulario
// creamos una función que nos parmita validar el email
function valida_email($correo) {
if (preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/', $correo)) return true;
else return false;
}
// Procedemos a comprobar que los campos del formulario no estén vacíos
$sin_espacios = count_chars($_POST['email'], 1);
if(!empty($sin_espacios[100])) { // comprobamos que el campo "email" no tenga espacios en blanco
echo "El campo <em>email</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(empty($_POST['nombre'])) { // comprobamos que el campo "nombre" no esté vacío
echo "No se ha ingresado ningún nombre. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(empty($_POST['apellido'])) { // comprobamos que el campo "apellido" no esté vacío
echo "No se ha ingresado ningún apellido. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(empty($_POST['email'])) { // comprobamos que el campo "email" no esté vacío
echo "No se ha ingresado ningún correo electrónico. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(empty($_POST['password'])) { // comprobamos que el campo "password" no esté vacío
echo "No se ha ingresado ninguna contraseña. <a href='javascript:history.back();'>Reintentar</a>";
}elseif($_POST['password'] != $_POST['password_conf']) { // comprobamos que las contraseñas ingresadas coincidan
echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(empty($_POST['tipo'])) { // comprobamos que el campo "tipo" no esté vacío
echo "No se ha ingresado ningún tipo. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(empty($_POST['pais'])) { // comprobamos que el campo "pais" no esté vacío
echo "No se ha ingresado ningún país. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(empty($_POST['imagen'])) { // comprobamos que el campo "imagen" no esté vacío
echo "No se ha ingresado ninguna imagen. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(empty($_POST['dia'])) { // comprobamos que el campo "día" no esté vacío
echo "No se ha ingresado ningún día. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(empty($_POST['mes'])) { // comprobamos que el campo "mes" no esté vacío
echo "No se ha ingresado ningún mes. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(empty($_POST['ano'])) { // comprobamos que el campo "año" no esté vacío
echo "No se ha ingresado ningún año. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(!valida_email($_POST['email'])) { // validamos que el email ingresado sea correcto
echo "El email ingresado no es válido. <a href='javascript:history.back();'>Reintentar</a>";
}else {
// "limpiamos" los campos del formulario de posibles códigos maliciosos
$nombre = mysqli_real_escape_string($link, $_POST['nombre']);
$apellido = mysqli_real_escape_string($link, $_POST['apellido']);
$email = mysqli_real_escape_string($link, $_POST['email']);
$password = mysqli_real_escape_string($link, $_POST['password']);
$tipo = mysqli_real_escape_string($link, $_POST['tipo']);
$pais = mysqli_real_escape_string($link, $_POST['pais']);
$imagen = mysqli_real_escape_string($link, $_POST['imagen']);
$dia = mysqli_real_escape_string($link, $_POST['dia']);
$mes = mysqli_real_escape_string($link, $_POST['mes']);
$ano = mysqli_real_escape_string($link, $_POST['ano']);
// comprobamos que el email ingresado no haya sido registrado antes
$sql = mysqli_query($link, "SELECT email FROM usuarios WHERE email='".$email."'");
if(mysqli_num_rows($sql) > 0) {
echo "El email ingresado ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>";
}else {
$password = md5($password); // encriptamos la contraseña ingresada con md5
// ingresamos los datos a la BD
$reg = mysqli_query($link, "INSERT INTO usuarios (nombre, apellido, email, password, tipo, pais, imagen, dia, mes, ano, fecha) VALUES ('".$nombre."', '".$apellido."', '".$email."', '".$password."', '".$tipo."', '".$pais."', '".$imagen."', '".$dia."', '".$mes."', '".$ano."', NOW())");
if($reg) {
echo "Datos ingresados correctamente.";
}else {
echo "ha ocurrido un error y no se registraron los datos.";
}
}
}
if(is_uploaded_file($_FILES['imagen']['tmp_name'])) { // verifica haya sido cargado el archivo
$tipo = $_POST["tipo"];
$ruta= "images/$tipo".$_FILES['imagen']['name'];
move_uploaded_file($_FILES['imagen']['tmp_name'], $ruta);
}
}else {
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data">
<input type="text" name="nombre" id="nombre" placeholder="Nombre" />
<input type="text" name="apellido" id="apellido" placeholder="Apellido" />
<input type="text" name="email" maxlength="50" placeholder="Email" /><br />
<input type="password" name="password" maxlength="15" placeholder="Contraseña" /><br />
<input type="password" name="password_conf" maxlength="15" placeholder="Confirmar Contraseña" /><br />
<div id="seleccion-tipo-pais">
<p id="select-tipo">
<select name="tipo" id="tipo" >
<option>Hombre</option>
<option>Mujer</option>
</select>
</p>
<p id="select-pais">
<select name="pais" id="pais" >
<option>Argentina</option>
<option>Brasil</option>
</select>
</p>
</div>
<p>Imagen</p>
<input type="file" name="imagen" id="imagen" />
<p>Fecha de Nacimiento:</p>
<select name="dia" id="dia">
...
</select>
<select name="mes" id="mes">
...
</select>
<select name="ano" id="ano">
...
</select>
<input type="submit" name="enviar" value="Registrar" />
<input type="reset" value="Borrar" />
</form>
<?php
}
?>
</body>
</html>
`id` int(4) NOT NULL AUTO_INCREMENT,
`nombre` varchar(50) NOT NULL,
`apellido` varchar(50) NOT NULL,
`password` varchar(30) NOT NULL DEFAULT '',
`email` varchar(100) NOT NULL DEFAULT '',
`imagen` varchar(1500) NOT NULL,
`tipo` varchar(30) NOT NULL,
`dia` varchar(2) NOT NULL,
`mes` varchar(30) NOT NULL,
`ano` varchar(4) NOT NULL,
`pais` varchar(100) NOT NULL,
`fecha` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
---------------------------------------------------------------------------------------
retomemos... yo quiero que aparezca la url de la imagen en la base de datos y que la imagen se guarda en la carpeta "images/tipo" (segun si es hombre o mujer)