Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Notice: Undefined index: imagen

Estas en el tema de Notice: Undefined index: imagen en el foro de PHP en Foros del Web. Hola a todo nuevamente, voy a compartir algo que hice y que me dice un error "Notice: Undefined index: imagen" y no se bien por ...
  #1 (permalink)  
Antiguo 29/12/2012, 21:54
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Pregunta Notice: Undefined index: imagen

Hola a todo nuevamente, voy a compartir algo que hice y que me dice un error "Notice: Undefined index: imagen" y no se bien por que ni como solucionarlo. Este script su una imagen de cualquier tamaño y formato. Lo cual tampoco se como definir un tamaño standar ni que tipo de formato (seguridad).

Espero me ayuden, copien el codigo y compartan lo que hicieron con el.

Código PHP:
<?php

include '../conn.php';

$rutaEnServidor =   '../tienda/imagenes';
$rutaTemporal   =   $_FILES['imagen']['tmp_name'];
$nombreImagen   =   $_FILES['imagen']['name'];
$rutaDestino    =   $rutaEnServidor.'/'.$nombreImagen;

move_uploaded_file($rutaTemporal,$rutaDestino);

if(isset(
$_POST['aceptar'])){
    
    if(!empty(
$_POST['imagen']) && !empty($_POST['descripcion']))
    {
        
$fecha date("M.j.Y, g:i a");
        
$desc $_POST['descripcion'];
        
$sql  "INSERT INTO tienda (ruta,descripcion,fecha) values('".$rutaDestino."','".$desc."','".$fecha."')";
        
$res  mysql_query($sql) or die(mysql_error());

    if (
$res){
    echo 
'inserci&oacute;n con exito';
    }
    }
else{
    echo 
'no se puedo insertar';
}
}

?>
y el formulario

Código PHP:
<form method="post" action="" enctype="multipart/form-data">

<
input type="file" name="imagen" /><br />
<
input type="text" name="descripcion" /><br />
<
input type="submit" name="aceptar" value="Aceptar" />
</
form
__________________
Zreep
  #2 (permalink)  
Antiguo 30/12/2012, 01:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Notice: Undefined index: imagen

A ver, es normal el error porque las variables $_FILES no siempre están presentes.

De igual forma que las variables del formulario sólo están presentes cuando el formulario ha sido enviado, a leguas se mira que en tu lógica haces eso pero dejas de fuera las instrucciones para manejar los uploads.

Eso es lo único que te sucede, de nosotros no hace falta hacerle algo al código, tu solo puedes.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/12/2012, 15:52
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Notice: Undefined index: imagen

No quiece decir que lo hagan, pero no puedo ver como resolverlo...
__________________
Zreep
  #4 (permalink)  
Antiguo 30/12/2012, 16:21
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Notice: Undefined index: imagen

Lo que pateketrueke quiere decirte —o lo que dice pero tú no entiendes—, es que declares las variables relativas a la imagen que estás subiendo en el condicional donde compruebas que se ha enviado el formulario —o crear cualquier otra comprobación de que se haya enviado una imagen, que sería más correcto. Seguramente el aviso (notice) sólo te salta cuando no envias ninguna imagen.
  #5 (permalink)  
Antiguo 30/12/2012, 17:01
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Notice: Undefined index: imagen

A ver si entiendo (soy un poco duro), defino una imagen, algo asi;

Código PHP:
$img $_FILES["file"]["type"]; 
o estoy haciendo cualquier cosa. (Me siento como homero; Vamos a partirlo en dos y a manosearle el corazon) je....
__________________
Zreep
  #6 (permalink)  
Antiguo 30/12/2012, 17:46
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Notice: Undefined index: imagen

1.- Haces todo en el mismo archivo
por lo que si no has enviado el form, no existe todavía $_FILES[]. Por que $_FILES solo existe cuando envias en el form un archivo.

prueba así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. include '../conn.php';
  4.  
  5. if(isset($_POST['aceptar'])){
  6.    
  7.     if(!empty($_POST['imagen']) && !empty($_POST['descripcion'])){
  8. //solo si no esta vacio $_POST['imagen'] pasa esto:
  9. $rutaEnServidor =   '../tienda/imagenes';
  10. $rutaTemporal   =   $_FILES['imagen']['tmp_name'];
  11. $nombreImagen   =   $_FILES['imagen']['name'];
  12. $rutaDestino    =   $rutaEnServidor.'/'.$nombreImagen;
  13.  
  14. move_uploaded_file($rutaTemporal,$rutaDestino);
  15.  
  16.         $fecha = date("M.j.Y, g:i a");
  17.         $desc = $_POST['descripcion'];
  18.         $sql  = "INSERT INTO tienda (ruta,descripcion,fecha) values('".$rutaDestino."','".$desc."','".$fecha."')";
  19.         $res  = mysql_query($sql) or die(mysql_error());
  20.  
  21.     if ($res){
  22.     echo 'inserci&oacute;n con exito';
  23.     }
  24.     }
  25. else{
  26.     echo 'no se puedo insertar';
  27. }
  28. }
  29.  
  30. ?>

Última edición por memoadian; 30/12/2012 a las 23:07
  #7 (permalink)  
Antiguo 30/12/2012, 20:30
Avatar de lfriasherrera  
Fecha de Ingreso: marzo-2012
Mensajes: 21
Antigüedad: 12 años, 1 mes
Puntos: 1
Exclamación Respuesta: Notice: Undefined index: imagen

Se resolvería aplicando el código que te publicó memoadian. Ya que despues de las validaciones necesarias recoge los datos que se recibieron del formulario y los utiliza en la función de move_uploaded_file().

Tambien podrías checar aquí

http://us3.php.net/manual/en/features.file-upload.post-method.php

Última edición por lfriasherrera; 30/12/2012 a las 21:07

Etiquetas: formulario, index, mysql, notice, sql, undefined
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 17:09.