entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Undefined index: Fotografia

HOLA BUENAS NOCHES O TARDES O DIAS
MI PREGUNTA ES POR QUE ME SALE EL ERROR DE

Undefined index: Fotografia in C:\xampp\htdocs\Comecom\Periodico\view\admin\ActualizarNota.php on line 124
<form name="Actualizar" method="post" enctype="multipart/form-data">
<?php
@$Conectando=$_GET['id'];
include("../../../Conexion/conexion.php");
$res=mysqli_query($conecta,"select * from politica where Idnota='$Conectando';");

  while ($resultado=mysqli_fetch_array($res)) {
  $cod=$resultado['Idnota'];
  $Title=$resultado['Titulo'];
  $date=$resultado['Fecha'];
  $photo=$resultado['Fotografia'];
  $note=$resultado['Nota'];

  }
?>

<div class="container">

<table class="table table-striped">
<tr>
  <td>Id Nota:</td>
  <td>  <input type="number" name="Idnota" value ="<?php echo $cod;?>" readonly="readonly"> </td>
</tr>
<tr>
  <td>Titulo:</td>
  <td><input  type="text" name="Titulo" value ="<?php echo $Title;?>"> </td>
</tr>
<tr>
  <td>Fecha:</td>
  <td><input type="date" name="Fecha" value ="<?php echo $date;?>"> </td>
</tr>
  <td>Fotografia:</td>
  <td><input type="file" name="Fotografia"> </td>
</tr>
<tr>
  <td>Nota:</td>
  <td><input type="text" name="Nota"  value ="<?php echo $note;?>"> </td>
</tr>

<tr>
  <td colspan="2" align="center"><input type="submit"  class="btn btn-success"   value="Actualizar" >
  <input type="button"  class="btn btn-success"   value="Regresar" onClick="javascript:window.location='RegistroNoti.php';"></td>
</tr>

</table>
</div>
</form>

</body>
</html>

<?php

include("../../../Conexion/conexion.php");
if ($_FILES['Fotografia']['name']=="") {

    mysql_query("update politica set Titulo ='".$_POST['Titulo']."', 
                                     Fecha='".$_POST['Fecha']."',
                                     Nota='".$_POST['Nota']."'
                                      where Idnota=".$_POST['id'].";");
  }
  else{
    $re = mysql_query("select Fotografia from politica where".$_POST['id'].";");
    while ($f=mysql_fetch_array($re)) {
      unlink("../Fotos/".$f['Fotografia']);
    }
    $ruta = "../Fotos/";
    opendir($ruta);
    $destino = $ruta.$_FILES['fotografia']['name'];
    copy($_FILES['fotografia']['tmp_name'],$destino);
    $nombre=$_FILES['fotografia']['name'];

    mysql_query("update politica set Titulo ='".$_POST['Titulo']."', 
                                     Fecha='".$_POST['Fecha']."',
                                     Imagen ='".$nombre."',
                                     Nota='".$_POST['Nota']."'
                                     where Idnota=".$_POST['id'].";");
  }
  header("Location: ../");
?>

1voto

magarzon comentado

Sería bueno que nos aclararas cuál es la línea 124 de tu código.
Y por qué estás pillando $_POST['id'] cuando en tu formulario no hay ningún campo con ese nombre (es IdNota)

0voto

Elyjn comentado

if ($_FILES['Fotografia']['name']=="") {
Esta es la línea

1 Respuesta

2votos

angelAparicio Puntos2810

Hola, entiendo que lo que estás haciendo es una página con un formulario que muestre el formulario y que ejecute una consulta sql si se han recibido datos.

La variable $_FILES solo tiene datos si se ha enviado el formulario. Si no lo has hecho estará vacía, de ahí que te de error, puesto que $_FILES['Fotografia']['name'] no existe.

Si quieres comprobar si existe o no esa variable tienes que usar isset. Cambia la línea

if ( $_FILES['Fotografia']['name']=="" ) {

por

if ( !isset($_FILES['Fotografia']['name']) ) {

Eso debería funcionarte. La primera parte del IF se ejecutará si no se ha enviado el formulario y la segunda lo hará si se ha hecho.

1voto

Leonardo-Tadei comentado

Lo que dice @angelAparicio es correcto. De hecho, ningún valor de $_POST existe si el formulario no se envía, así que da lo mismo preguntar por cualquier campo del formulario: si alguno de ellos está definido, entonces es que el formulario fue enviado y tiene datos.

Adicionalmente, y como buenas prácticas de estructurar el código, deberías:

  • poner el código PHP que hace la actualización en un IF al principio, no al final. De esta forma, por ejemplo, en caso de un error de validación o algo, podrás mostrar de nuevo el formulario con los datos y avisar del error.

  • que el botón que regresa en vez de hacerlo invocando una llamada a JavaScript que reescribe la URL en el navegador, sea un enlace A decorado como un botón, apuntando a la página a la que quieres volver.

  • las funciones mysql* dejarán de tener soporte próximamente. Deberías interactuar con la DB con las funciones mysqli* o vía PDO.

Saludos cordiales

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta