1
PHP / Problema en el PHP en un formulario con JS
« en: 16 de Abril de 2015, 12:51:20 pm »
Hola, Tengo el siguiente formulario HTML que me da la opcion con JS a elegir la cantidad de imagenes adicionales que quiero y cuando eligo mas de 1 me da un notice diciendo que ninguna de las variables que paso por post no esta definida cuando es mentira. adjunto codigos:
HTML
<!doctype html>
<html lang="es">
</html>
PHP
<!doctype html>
<html lang="es">
</html>
Un saludo y gracias
HTML
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8"/>
<title> Titulo </title>
<script type="text/Javascript">
function añade()
{
var numero = parseInt(document.getElementById("numero").value);
var x = "";
var almacen = "";
for(var i = numero; i > 0; i--)
{
almacen = " " + i + ": <input name='adicional" + i +"' type='file' /> ";
x = almacen + x;
}
document.getElementById("sube").innerHTML = x;
}
</script>
</head>
<body bgcolor="white">
<?php
session_start();
// Controlo si el usuario está logueado
if (!isset($_SESSION['nombre']))
{
echo "Debes ser administrador o redactor para acceder aquí.";
}
else
{
if($_SESSION['rol'] == "administrador" || $_SESSION['rol'] == "redactor"){
?>
<table width=100% >
<tr>
<td>
<!-- FORMULARIO REGISTRO DE DATOS YIR -->
Regístrate:
<form method="post" action="add.php" enctype="multipart/form-data">
<table >
<tr>
<td><label for="codigo">CÓDIGO</label> </td>
<td><textarea name="codigo" rows="1" cols="20"></textarea> </td>
</tr>
<tr>
<td><label for="nombre">NOMBRES</label> </td>
<td><textarea name="nombre" rows="1" cols="30"></textarea> </td>
</tr>
<tr>
<td><label for="bibliografia">BIBLIOGRAFÍA PRINCIPAL</label> </td>
<td><textarea name="bibliografia" rows="10" cols="50"></textarea> </td>
</tr>
<tr>
<td><label for="archivo">SUBIR FOTO</label> </td>
<td><input name="archivo" type="file" /></td>
</tr>
<tr>
<td><label for="archivo">FOTOS ADICIONALES (CANTIDAD)</label> </td>
<td><input type="number" id="numero" name="numero"/><input type="button" name="Añade" value="Añade" onclick="añade()"/></td>
</tr>
<tr>
<td colspan="2"><span id="sube"></span></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Añadir a la Base de datos"/> </td>
</tr>
</table>
</form>
</td>
</tr>
</table>
<?php
}else{
echo "Debes de ser administrador o redactor para tener acceso";
}
}
?>
</body>
</html>
PHP
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8"/>
<title> Titulo </title>
</head>
<body>
<?php
session_start();
// Controlo si el usuario está logueado
if (!isset($_SESSION['nombre']))
{
echo"Debes estar logueado para acceder aquí.";
}
elseif($_SESSION['rol'] == "administrador" || $_SESSION['rol'] == "redactor")
{
//pasamos parametros
$codigo = htmlentities(addslashes($_POST['codigo']));
$nombre = htmlentities(addslashes($_POST['nombre']));
$bibliografia = htmlentities(addslashes($_POST['bibliografia']));
$numero = htmlentities(addslashes($_POST['numero']));
//empezamos con las condiciones
if(!isset($codigo) || !isset($nombre) || !isset($bibliografia))
{
echo "Rellena todos los campos obligatorios. Hay parametros sin enviar";
}
elseif($codigo == '' || $nombre == '' || $bibliografia == '' )
{
echo "Rellena todos los campos obligatorios. Faltan datos";
}
else
{
//SI todo es CORRECTO añadimos al usuario a la BBDD
include("../../../mysql.inc.php");
conecta($c);
mysqli_select_db($c,"dbyir");
$sql="insert into yir values(0, '$codigo', '$nombre', '$bibliografia')";
$resultado = mysqli_query($c,$sql);
if ($resultado)
{
echo "Registro realizado.<br/>";
if(!file_exists("../../../fotos/".$codigo))
{
mkdir("../../../fotos/".$codigo);
mkdir("../../../fotos/".$codigo."/detalle");
}
// Esta variable se usará fuera del IF
// estará inicialmente vacía si el usuario
// NO SUBE NADA
$uploadfile = "";
// COMPRUEBO SI EL USUARIO SUBE UN ARCHIVO
if ($_FILES['archivo']['name'] != "")
{
# Esta variable contiene el directorio donde vamos a subir los archivos
# enviados a través del formulario, LA CARPETA DEBE DE ESTAR CREADA
$uploaddir = "../../../fotos/".$codigo."/";
$almacen = "fotos/".$codigo."/";
# En esta variable juntamos el directorio de subida con el nombre del archivo subido,
# de esta forma construimos la ruta a la que será copiado el archivo subido
$uploadfile = $uploaddir.basename($_FILES['archivo']['name']);
# la variable $error contendrá información de la subida del archivo
$error = $_FILES['archivo']['error'];
$subido = false;
# el archivo por defecto se sube a la carpeta del servidor web \xampp\tmp
if($error==UPLOAD_ERR_OK) {
// si el archivo se ha subido con exito, lo copiamos en nuestra carpeta personal $uploaddir
// El archivo lo copiamos de la carpeta temporal (tiene un nombre temporal)
// a la carpeta uploads con el nombre correcto
$subido = copy($_FILES['archivo']['tmp_name'], $uploadfile);
}
if(!$subido)
{
echo "Se ha producido un error: ".$error;
}
$imagen = $almacen.basename($_FILES['archivo']['name']);
// Inserto en la tabla fotos
$sqlFoto = "insert into fotos values (0,'$codigo','$imagen','General')";
$resultadoFoto=mysqli_query($c, $sqlFoto);
if($resultadoFoto)
{
echo "foto subida con exito.<br/>";
}
else
{
$error=mysqli_error($c);
echo $error;
}
}
if ($_FILES['adicional1']['name'] != "")
{
# Esta variable contiene el directorio donde vamos a subir los archivos
# enviados a través del formulario, LA CARPETA DEBE DE ESTAR CREADA
$adicionalDir = "../../../fotos/".$codigo."/detalle/";
$almacen = "fotos/".$codigo."/detalle/";
# En esta variable juntamos el directorio de subida con el nombre del archivo subido,
# de esta forma construimos la ruta a la que será copiado el archivo subido
for($i = 1; $i <= $numero; $i++){
$subirAdicional[$i] = $adicionalDir.basename($_FILES['adicional'.$i]['name']);
echo $subirAdicional[$i];
# la variable $error contendrá información de la subida del archivo
$error[$i] = $_FILES['adicional'.$i]['error'];
}
$subido = false;
# el archivo por defecto se sube a la carpeta del servidor web \xampp\tmp
if($error==UPLOAD_ERR_OK) {
// si el archivo se ha subido con exito, lo copiamos en nuestra carpeta personal $uploaddir
// El archivo lo copiamos de la carpeta temporal (tiene un nombre temporal)
// a la carpeta uploads con el nombre correcto
for($i = 1; $i <= $numero; $i++){
$subido[$i] = copy($_FILES['adicional'.$i]['tmp_name'], $subirAdicional[$i]);
}
}
for($i = 1; $i <= $numero; $i++){
if(!$subido[$i])
{
echo "Se ha producido un error: ".$error[$i];
}
$imagen[$i] = $almacen.basename($_FILES['adicional'.$i]['name']);
// Inserto en la tabla fotos
$sqlAdicional = "insert into fotos values (0,'$codigo','$imagen[$i]','Detalle')";
$resultadoFoto[$i]=mysqli_query($c, $sqlAdicional);
if($resultadoFoto[$i])
{
echo "foto subida con exito.<br/>";
}
else
{
$error=mysqli_error($c);
echo $error;
}
}
}
echo "<a href='../../../menu.php'> Inicio </a>";
}
else
{
$error=mysqli_error($c);
echo $error;
}
mysqli_close($c);
}
}else{
echo "debes ser administrador o redactor para acceder aquí.";
}
?>
</body>
</html>
Un saludo y gracias