Autor Tema: Problema en el PHP en un formulario con JS  (Leído 378 veces)

Desconectado Balita

  • PHPer@ Fijo
  • ***
  • Mensajes: 173
  • Karma: 2
  • Sexo: Masculino
  • Dale tiempo al tiempo...
    • Ver Perfil
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">
	
<
head>
	
	

	
	
<
meta charset="utf-8"/>
	
	
<
titleTitulo </title>
	

	
	
<
script type="text/Javascript">
	
	

	
	
	
function 
añade()
	
	
	
{
	
	
	
	
var 
numero parseInt(document.getElementById("numero").value);
	
	
	
	
var 
"";
	
	
	
	
var 
almacen "";
	
	
	
	

	
	
	
	
for(var 
numero0i--)
	
	
	
	
{
	
	
	
	
	
almacen =  "&nbsp;" ": <input name='adicional" +"' type='file' />&nbsp;&nbsp;&nbsp;";
	
	
	
	
	
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"/>
	
	
<
titleTitulo </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
<?php  Balita[PHPeros User];  ?>

Comunidad PHPeros

Problema en el PHP en un formulario con JS
« en: 16 de Abril de 2015, 12:51:20 pm »