Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/04/2015, 02:20
Balita
 
Fecha de Ingreso: febrero-2008
Mensajes: 49
Antigüedad: 16 años, 3 meses
Puntos: 0
Problema en el PHP formulario con JS

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
Código HTML:
Ver original
  1. <!doctype html>
  2. <html lang="es">
  3.     <head>     
  4.         <meta charset="utf-8"/>
  5.         <title> Titulo </title>
  6.         <script type="text/Javascript">
  7.        
  8.             function añade()
  9.             {
  10.                 var numero = parseInt(document.getElementById("numero").value);
  11.                 var x = "";
  12.                 var almacen = "";
  13.                
  14.                 for(var i = numero; i > 0; i--)
  15.                 {
  16.                     almacen =  "&nbsp;" + i + ": <input name='adicional" + i +"' type='file' />&nbsp;&nbsp;&nbsp;";
  17.                     x = almacen + x;
  18.                    
  19.                 }
  20.                 document.getElementById("sube").innerHTML =  x;
  21.             }  
  22.         </script>
  23.     </head>
  24.    
  25.     <body bgcolor="white">
  26.    
  27.     <?php
  28.         session_start();
  29.            
  30.             // Controlo si el usuario está logueado
  31.             if (!isset($_SESSION['nombre']))
  32.             {
  33.                 echo "Debes ser administrador o redactor para acceder aquí.";
  34.             }
  35.             else
  36.             {
  37.                 if($_SESSION['rol'] == "administrador" || $_SESSION['rol'] == "redactor"){
  38.                    
  39.     ?>
  40.        
  41.         <table width=100% >
  42.            
  43.             <tr>
  44.                 <td>
  45.                     <!-- FORMULARIO REGISTRO DE DATOS YIR -->
  46.                     Regístrate:
  47.                    
  48.                     <form method="post" action="add.php" enctype="multipart/form-data">
  49.                         <table >
  50.                             <tr>
  51.                                 <td><label for="codigo">CÓDIGO</label> </td>
  52.                                 <td><textarea name="codigo" rows="1" cols="20"></textarea> </td>
  53.                             </tr>
  54.                             <tr>
  55.                                 <td><label for="nombre">NOMBRES</label> </td>
  56.                                 <td><textarea name="nombre" rows="1" cols="30"></textarea> </td>
  57.                             </tr>
  58.                             <tr>
  59.                                 <td><label for="bibliografia">BIBLIOGRAFÍA PRINCIPAL</label>  </td>
  60.                                 <td><textarea name="bibliografia" rows="10" cols="50"></textarea> </td>
  61.                             </tr>
  62.                             <tr>
  63.                                 <td><label for="archivo">SUBIR FOTO</label>  </td>
  64.                                 <td><input name="archivo" type="file" /></td>
  65.                             </tr>
  66.                             <tr>
  67.                                 <td><label for="archivo">FOTOS ADICIONALES (CANTIDAD)</label>  </td>
  68.                                 <td><input type="number" id="numero" name="numero"/><input type="button" name="Añade" value="Añade" onclick="añade()"/></td>
  69.                             </tr>
  70.                             <tr>
  71.                             <td colspan="2"><span id="sube"></span></td>
  72.                             </tr>
  73.                             <tr>
  74.                                 <td colspan="2"><input type="submit" value="Añadir a la Base de datos"/> </td>
  75.                             </tr>
  76.                         </table>
  77.                     </form>
  78.                 </td>
  79.             </tr>
  80.            
  81.         </table>
  82.     <?php
  83.                 }else{
  84.                     echo "Debes de ser administrador o redactor para tener acceso";
  85.                 }
  86.             }
  87.     ?>
  88.     </body>
  89.  
  90. </html>

PHP
Código PHP:
Ver original
  1. <!doctype html>
  2. <html lang="es">
  3.     <head>     
  4.         <meta charset="utf-8"/>
  5.         <title> Titulo </title>    
  6.     </head>
  7.     <body>
  8.    
  9.     <?php
  10.    
  11.         session_start();
  12.            
  13.             // Controlo si el usuario está logueado
  14.             if (!isset($_SESSION['nombre']))
  15.             {
  16.                 echo"Debes estar logueado para acceder aquí.";
  17.             }
  18.             elseif($_SESSION['rol'] == "administrador" || $_SESSION['rol'] == "redactor")
  19.             {  
  20.                 //pasamos parametros
  21.                 $codigo = htmlentities(addslashes($_POST['codigo']));
  22.                 $nombre = htmlentities(addslashes($_POST['nombre']));
  23.                 $bibliografia = htmlentities(addslashes($_POST['bibliografia']));
  24.                 $numero = htmlentities(addslashes($_POST['numero']));
  25.                
  26.                 //empezamos con las condiciones
  27.                
  28.                 if(!isset($codigo) || !isset($nombre) || !isset($bibliografia))
  29.                 {
  30.                     echo "Rellena todos los campos obligatorios. Hay parametros sin enviar";
  31.                 }
  32.                 elseif($codigo == '' || $nombre == '' || $bibliografia == '' )
  33.                 {
  34.                     echo "Rellena todos los campos obligatorios. Faltan datos";
  35.                 }
  36.                 else
  37.                 {
  38.                
  39.                     //SI todo es CORRECTO añadimos al usuario a la BBDD
  40.                    
  41.                     include("../../../mysql.inc.php");
  42.                    
  43.                     conecta($c);
  44.                    
  45.                     mysqli_select_db($c,"dbyir");
  46.                    
  47.                     $sql="insert into yir values(0, '$codigo', '$nombre', '$bibliografia')";
  48.                    
  49.                     $resultado = mysqli_query($c,$sql);
  50.                    
  51.                     if ($resultado)
  52.                     {
  53.                         echo "Registro realizado.<br/>";
  54.                        
  55.                         if(!file_exists("../../../fotos/".$codigo))
  56.                         {
  57.                             mkdir("../../../fotos/".$codigo);
  58.                             mkdir("../../../fotos/".$codigo."/detalle");
  59.                         }
  60.                        
  61.                         // Esta variable se usará fuera del IF
  62.                         // estará inicialmente vacía si el usuario
  63.                         // NO SUBE NADA
  64.                         $uploadfile = "";
  65.                        
  66.                         // COMPRUEBO SI EL USUARIO SUBE UN ARCHIVO
  67.                         if ($_FILES['archivo']['name'] != "")
  68.                         {
  69.                             # Esta variable contiene el directorio donde vamos a subir los archivos
  70.                             # enviados a través del formulario, LA CARPETA DEBE DE ESTAR CREADA
  71.                             $uploaddir = "../../../fotos/".$codigo."/";            
  72.                             $almacen = "fotos/".$codigo."/";
  73.                             # En esta variable juntamos el directorio de subida con el nombre del archivo subido,
  74.                             # de esta forma construimos la ruta a la que será copiado el archivo subido
  75.                             $uploadfile = $uploaddir.basename($_FILES['archivo']['name']);
  76.                                
  77.  
  78.                             # la variable $error contendrá información de la subida del archivo
  79.                             $error = $_FILES['archivo']['error'];
  80.                             $subido = false;
  81.  
  82.                             # el archivo por defecto se sube a la carpeta del servidor web \xampp\tmp
  83.                             if($error==UPLOAD_ERR_OK) {
  84.                                 // si el archivo se ha subido con exito, lo copiamos en nuestra carpeta personal $uploaddir    
  85.                                 // El archivo lo copiamos de la carpeta temporal (tiene un nombre temporal)
  86.                                 // a la carpeta uploads  con el nombre correcto
  87.                                 $subido = copy($_FILES['archivo']['tmp_name'], $uploadfile);
  88.                             }
  89.                            
  90.                             if(!$subido)
  91.                             {
  92.                                 echo "Se ha producido un error: ".$error;
  93.                             }
  94.                            
  95.                            
  96.                             $imagen = $almacen.basename($_FILES['archivo']['name']);
  97.  
  98.                             // Inserto en la tabla fotos
  99.                             $sqlFoto = "insert into fotos values (0,'$codigo','$imagen','General')";
  100.                            
  101.                             $resultadoFoto=mysqli_query($c, $sqlFoto);
  102.  
  103.                             if($resultadoFoto)
  104.                             {
  105.                                 echo "foto subida con exito.<br/>";
  106.                             }
  107.                             else
  108.                             {
  109.                                 $error=mysqli_error($c);       
  110.                                 echo $error;
  111.                             }
  112.                         }
  113.                        
  114.                         if ($_FILES['adicional1']['name'] != "")
  115.                         {
  116.                             # Esta variable contiene el directorio donde vamos a subir los archivos
  117.                             # enviados a través del formulario, LA CARPETA DEBE DE ESTAR CREADA
  118.                             $adicionalDir = "../../../fotos/".$codigo."/detalle/";         
  119.                             $almacen = "fotos/".$codigo."/detalle/";
  120.                             # En esta variable juntamos el directorio de subida con el nombre del archivo subido,
  121.                             # de esta forma construimos la ruta a la que será copiado el archivo subido
  122.                             for($i = 1; $i <= $numero; $i++){
  123.                                 $subirAdicional[$i] = $adicionalDir.basename($_FILES['adicional'.$i]['name']);
  124.                                 echo $subirAdicional[$i];
  125.                                 # la variable $error contendrá información de la subida del archivo
  126.                                 $error[$i] = $_FILES['adicional'.$i]['error'];
  127.                             }
  128.  
  129.                            
  130.                             $subido = false;
  131.  
  132.                             # el archivo por defecto se sube a la carpeta del servidor web \xampp\tmp
  133.                             if($error==UPLOAD_ERR_OK) {
  134.                                 // si el archivo se ha subido con exito, lo copiamos en nuestra carpeta personal $uploaddir    
  135.                                 // El archivo lo copiamos de la carpeta temporal (tiene un nombre temporal)
  136.                                 // a la carpeta uploads  con el nombre correcto
  137.                                 for($i = 1; $i <= $numero; $i++){
  138.                                     $subido[$i] = copy($_FILES['adicional'.$i]['tmp_name'], $subirAdicional[$i]);
  139.                                 }
  140.                             }
  141.                             for($i = 1; $i <= $numero; $i++){
  142.                                     if(!$subido[$i])
  143.                                     {
  144.                                         echo "Se ha producido un error: ".$error[$i];
  145.                                     }
  146.                                     $imagen[$i] = $almacen.basename($_FILES['adicional'.$i]['name']);
  147.  
  148.                                     // Inserto en la tabla fotos
  149.                                     $sqlAdicional = "insert into fotos values (0,'$codigo','$imagen[$i]','Detalle')";
  150.                                    
  151.                                     $resultadoFoto[$i]=mysqli_query($c, $sqlAdicional);
  152.  
  153.                                     if($resultadoFoto[$i])
  154.                                     {
  155.                                         echo "foto subida con exito.<br/>";
  156.                                     }
  157.                                     else
  158.                                     {
  159.                                         $error=mysqli_error($c);       
  160.                                         echo $error;
  161.                                     }
  162.                                 }
  163.                            
  164.                            
  165.                            
  166.                            
  167.                         }
  168.                         echo "<a href='../../../menu.php'> Inicio </a>";
  169.                        
  170.                     }
  171.                     else
  172.                     {
  173.                         $error=mysqli_error($c);       
  174.                         echo $error;
  175.                     }
  176.                    
  177.                     mysqli_close($c);
  178.                 }
  179.                    
  180.                
  181.             }else{
  182.                 echo "debes ser administrador o redactor para acceder aquí.";
  183.             }
  184.        
  185.     ?>
  186.    
  187.     </body>
  188. </html>

Un saludo y gracias