Comunidad PHPeros

Lenguajes => PHP => Mensaje iniciado por: Balita en 16 de Abril de 2015, 12:51:20 pm

Título: Problema en el PHP en un formulario con JS
Publicado por: Balita 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">
<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 =  "&nbsp;" + i + ": <input name='adicional" + i +"' type='file' />&nbsp;&nbsp;&nbsp;";
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