Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema en el PHP formulario con JS

Estas en el tema de Problema en el PHP formulario con JS en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/04/2015, 02:20
 
Fecha de Ingreso: febrero-2008
Mensajes: 49
Antigüedad: 16 años, 2 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
  #2 (permalink)  
Antiguo 16/04/2015, 07:41
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Problema en el PHP formulario con JS

No revise tu código pero de entrada tienes dos errores; las sesiones para que funcionen deben de estar al principio de cada documento.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 16/04/2015, 10:27
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: Problema en el PHP formulario con JS

Cita:
Iniciado por hhs Ver Mensaje
No revise tu código pero de entrada tienes dos errores; las sesiones para que funcionen deben de estar al principio de cada documento.
¿Y el segundo?

Edito: Ahh es el mismo dos veces XD
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #4 (permalink)  
Antiguo 17/04/2015, 01:32
 
Fecha de Ingreso: febrero-2008
Mensajes: 49
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Problema en el PHP formulario con JS

ostiaaaaaaaa ahora entiendo porque en mi hosting no se me cargaba el HTML gracias. El fallo ya esta solucionado era problema del espacio de xampp

Etiquetas: formulario, html, js, mysql, registro, select, sql, tabla, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:08.