PHP - Ayuda. No me actualiza los campos

   
Vista:

Ayuda. No me actualiza los campos

Publicado por Ramón (11 intervenciones) el 26/07/2016 09:54:07
Buenos días a todos.

Estoy empezando con PHP y tengo este error que no se por qué sale. Espero que podáis ayudarme.
Tengo una página con un formulario para modificar una tabla de la base de datos. Cuando cargo la página en el formulario aparece el producto que quiero modificar. El problema viene cuando pulso el botón para que guarde la modificación en la base de datos. Sale el siguiente error:

[Sun Jul 24 08:51:25.697355 2016] [:error] [pid 23545] [client ::1:42684] PHP Notice: Undefined variable: fila in /var/www/html/ferreteria/categoria_edit.php on line 45, referer: http://localhost/ferreteria/categoria_edit.php?id=1
[Sun Jul 24 08:51:25.697437 2016] [:error] [pid 23545] [client ::1:42684] PHP Notice: Undefined variable: fila in /var/www/html/ferreteria/categoria_edit.php on line 46, referer: http://localhost/ferreteria/categoria_edit.php?id=1

El código es este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
  include("function/conexion.php");
  if(isset($_GET['id'])){
    $id = $_GET['id'];
    $sql = "SELECT * FROM categoriaprod WHERE idcategoria = $id";
    $res = $con->query($sql);
    $fila = $res->fetch_array();
  }  else{
    echo "Debe especificar un 'id'.\n";
  }
  // Aquí actualizamos el registro
  // si enviamos algo por POST mediante el boton actualizar
  if(isset($_POST['actualizar'])){
    // si el campo del formulario que enviampos por POST no está vacío
    if(!empty($_POST['descripcion'])){
      //asignamos a las variables los valores contenidos en los campos
      //del formulario llamados 'idcategoria' y 'descripcion'
      $idcategoria = $_POST['idcategoria'];
      $desccategoria = $_POST['descripcion'];
      $sqlUpdate = $con->query("UPDATE categoriaprod SET descripcionProd = '$desccategoria' WHERE idcategoria = '$idcategoria'") or die(mysqli_error());
      header("loacation:categoria.php");
    } else{
      echo "debe rellenar todos los campos.";
    }
  }
  $con->close();
 ?>
<!DOCTYPE html>
<html lang="en">
  <?php
    include("function/header.php");
  ?>
  <body>
    <?php
      include("function/menu.php");
    ?>
    <div class="container">
      <br>
      <br>
      <div class="starter-template">
        <h1>Editar categoria</h1>
        <form id="categoria" name="categoria" method="post" action="categoria_edit.php">
          Descripcion
          <input class="form-control" name="descripcion" type="descripcion" id="descripcion" value="
          <?php echo $fila['descripcionProd']; ?>" size=45 />     *****EL ERROR LO DA EN ESTA LÍNEA Y EN LA SIGUIENTE *****
          <input type ="Hidden" name="idcategoria" value="<?php echo $fila['descripcionProd']; ?>">
          <!-- el nombre actualizar lo usamos arriba para la linea if(isset($_POST['actualizar']))-->
          <input type="submit" name="actualizar" id="categoria" value="Modificar categoria" />
        </form>
      </div>
 
    </div><!-- /.container -->
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Javier

Ayuda. No me actualiza los campos

Publicado por Javier (7 intervenciones) el 26/07/2016 11:34:04
Buenos dias,
he visto que te falta cerrar el if(isset($_POST['actualizar'])){
y aqui también hay un error: header("loacation:categoria.php"); loacation por location

Prueba eso y nos cuentas, saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda. No me actualiza los campos

Publicado por Ramón (11 intervenciones) el 26/07/2016 16:28:32
Hola,

He corregido el error de location [b] pero en el [b]if(isset($_GET['id'])){ lo veo todo bien. No queda ninguna llave, comillas o paréntesis sin cerrar.

Este es el bloque al que te refieres:

1
2
3
4
5
6
7
8
9
10
11
12
13
if(isset($_POST['actualizar'])){
    // si el campo del formulario que enviampos por POST no está vacío
    if(!empty($_POST['descripcion'])){
      //asignamos a las variables los valores contenidos en los campos
      //del formulario llamados 'idcategoria' y 'descripcion'
      $idcategoria = $_POST['idcategoria'];
      $desccategoria = $_POST['descripcion'];
      $sqlUpdate = $con->query("UPDATE categoriaprod SET descripcionProd = '$desccategoria' WHERE idcategoria = '$idcategoria'") or die(mysqli_error());
      header("location:categoria.php");
    } else{
      echo "debe rellenar todos los campos.";
    }
  }
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier

Ayuda. No me actualiza los campos

Publicado por Javier (7 intervenciones) el 26/07/2016 20:06:15
Parece que al copiar el archivo no se copio la última llave.
En cuanto al error sigo mirando pero no encuentro que puede ser, puedes intentar declarar esa variable y asignarle un valor vacío antes del isset: $fila="";

$fila = "";
if(isset($_GET['id'])){
...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda. No me actualiza los campos

Publicado por Ramón (11 intervenciones) el 26/07/2016 20:16:59
He probado lo que me dices.
Ahora me sale esto:

[Tue Jul 26 20:09:52.718643 2016] [:error] [pid 20289] [client ::1:39680] PHP Warning: Illegal string offset 'descripcionProd' in /var/www/html/ferreteria/categoria_edit.php on line 46, referer: http://localhost/ferreteria/categoria_edit.php?id=2
[Tue Jul 26 20:09:52.721980 2016] [:error] [pid 20289] [client ::1:39680] PHP Notice: Uninitialized string offset: 0 in /var/www/html/ferreteria/categoria_edit.php on line 46, referer: http://localhost/ferreteria/categoria_edit.php?id=2
[Tue Jul 26 20:09:52.722009 2016] [:error] [pid 20289] [client ::1:39680] PHP Warning: Illegal string offset 'descripcionProd' in /var/www/html/ferreteria/categoria_edit.php on line 47, referer: http://localhost/ferreteria/categoria_edit.php?id=2
[Tue Jul 26 20:09:52.722019 2016] [:error] [pid 20289] [client ::1:39680] PHP Notice: Uninitialized string offset: 0 in /var/www/html/ferreteria/categoria_edit.php on line 47, referer: http://localhost/ferreteria/categoria_edit.php?id=2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Ayuda. No me actualiza los campos

Publicado por kip (567 intervenciones) el 27/07/2016 01:30:38
Hola, prueba de esta forma, verificando si esta definida la variable dentro del atributo value de los input en cuestion.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
  include("function/conexion.php");
  if(isset($_GET['id'])){
    $id = $_GET['id'];
    $sql = "SELECT * FROM categoriaprod WHERE idcategoria = $id LIMIT 1";
    $res = $con->query($sql);
    $fila = $res->fetch_array();
  }  else {
    echo "Debe especificar un 'id'.\n";
  }
  // Aquí actualizamos el registro
  // si enviamos algo por POST mediante el boton actualizar
  if(isset($_POST['actualizar'])){
    // si el campo del formulario que enviampos por POST no está vacío
    if(!empty($_POST['descripcion'])){
      //asignamos a las variables los valores contenidos en los campos
      //del formulario llamados 'idcategoria' y 'descripcion'
      $idcategoria = $_POST['idcategoria'];
      $desccategoria = $_POST['descripcion'];
      $sqlUpdate = $con->query("UPDATE categoriaprod SET descripcionProd = '$desccategoria' WHERE idcategoria = '$idcategoria'") or die(mysqli_error());
      header("loacation:categoria.php");
    } else{
      echo "debe rellenar todos los campos.";
    }
  }
  $con->close();
?>
 
<!DOCTYPE html>
<html lang="en">
<?php include("function/header.php"); ?>
<body>
	<?php include("function/menu.php"); ?>
    <div class="container">
    	<br>
      	<br>
    	<div class="starter-template">
        <h1>Editar categoria</h1>
        <form id="categoria" name="categoria" method="post" action="categoria_edit.php">
        	Descripcion
          	<input class="form-control" name="descripcion" type="descripcion" id="descripcion" value="<?php echo isset($fila) ? $fila['descripcionProd'] : ''; ?>" size=45 />
          	<input type ="Hidden" name="idcategoria" value="<?php echo isset($fila) ? $fila['descripcionProd'] : '' ; ?>">
          	<!-- el nombre actualizar lo usamos arriba para la linea if(isset($_POST['actualizar']))-->
          	<input type="submit" name="actualizar" id="categoria" value="Modificar categoria" />
        </form>
       	</div>
    </div><!-- /.container -->

Verifica que la consulta que te trae los datos y los almacena en la variable $fecha sean correctos.

Cuentanos si continua con el problema o si tienes alguna duda.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ayuda. No me actualiza los campos

Publicado por Daniel (4 intervenciones) el 27/07/2016 07:27:34
tal vez en la tabla categoriaprod la columna descripcionProd tiene un nombre casi idéntico pero no es el mismo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda. No me actualiza los campos

Publicado por Ramón (11 intervenciones) el 27/07/2016 18:12:38
Solucionado. Después de probar todo sin funcionar le he cambiado el nombre al botón. En lugar de llamarlo actualizar lo he llamado guardar y ha funcionado.
No lo entiendo. Qué cosas más raras.

Gracias a todos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar