PHP - ayuda con php

 
Vista:
sin imagen de perfil

ayuda con php

Publicado por Marcos (31 intervenciones) el 03/05/2019 16:29:03
Buenas tardes,
Estaria necesitando ayuda con mi programa php, ya que soy relativamente nuevo.
Estoy haciendo un programa en el que tengo un formulario con varias fechas y a cada uno le corresponde un radio buttom para indicar su "estado", si es activo o inactivo. Solo puede estar activa una fecha.
Al programar el formulario no me cambia el valor de la base de datos.

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
<table>
  <thead>
    <tr>
      <th>fecha</th>
      <th>estado</th>
    </tr>
     </thead>
     <tbody><?php foreach ($response as $t){?>
      <tr>
 
      <td><?php echo $t['numero_fecha']; ?></td>
      <form action="fecha_php.php" method="POST">
      <td>
         <?php if ($t['estado']=="1"): ?>
            <input type="radio" name="estado" checked="checked" value="1" />
        <?php else : ?>
          <input type="radio" name="estado" value="0" />
        <?php endif; ?>
            <input type="hidden" name="id_fecha" value="<?php echo $t['id_fecha']; ?>" />
        <?php } ?>
      </td>
      </tr>
      </tbody>
          <input type="submit" value="actualizar"/>
      </form>
     </table>

En fecha_php.php puse el update:

1
2
3
4
5
6
7
8
9
10
11
12
$response = $conn->prepare("SELECT * FROM fecha");
	$response->execute();
 
 $add = "UPDATE fecha SET estado=(:estado) WHERE id_fecha=(:id_fecha)";
  $d = $conn->prepare($add);
  $d->bindParam(':id_fecha', $_POST['id_fecha']);
  $d->bindParam(':estado', $_POST['estado']);
  if ($d->execute()) {
    $message = 'Datos guardados';
  } else {
    $message = 'Ingreso invalido';
  }

Al apretar el submit actualizar, se queda en cero y no se me actualiza nada.
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 joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

ayuda con php

Publicado por joel (1269 intervenciones) el 03/05/2019 19:57:54
Hola Marcos, a simple vista parece que tendria que funcionar...

en el update, yo quitaria los parentesis... algo así:
1
$add = "UPDATE fecha SET estado=:estado WHERE id_fecha=:id_fecha";

Y comprobaría que los valores llegan correctamente:
1
print_r($_POST);
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
sin imagen de perfil

ayuda con php

Publicado por Marcos (31 intervenciones) el 03/05/2019 20:19:03
Hola, gracias por la ayuda. He probado quitarle los paréntesis pero sigue igual.
Puede ser que sea por algún error en la condicional o en el name del radio? Porque si modifico en la linea 14 el "1" por el "0" cambia todos los valores del estado a 1 en la base de datos.
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 italo_pm
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

ayuda con php

Publicado por italo_pm (193 intervenciones) el 03/05/2019 22:52:44
hola, el campo estado es varchar o int? ya que si fuera int (o tipo numerico) debes de compararlo sin doble comilla: (con doble o una comilla es para texto)

<?php if ($t['estado'] == 1): ?>


has verificado el select de $response que datos contiene?

debes hacer un dump de los datos del $_POST que te llegan print_r ($_POST); solo de esa manera podras entender que dato en estado esta llegando.

francamente, si recien estas aprendiendo empezaria con una cosa a la vez, desde la select mysql, update, los if el else etc etc...

salud2.
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
sin imagen de perfil

ayuda con php

Publicado por Marcos (31 intervenciones) el 04/05/2019 08:15:00
Hola, el campo estado es un tinyint, para que me pueda devolver un valor 1 o 0,
$response me trae todos los valores de la tabla correctamente,
En el print_r lo he agregado en el else para ver que llega y obtengo un array vacio, es decir, array()

Gracias por la ayuda, en si, he programado en php pero solo por el colegio hace unos años y ahora he vuelto y por esas razones no recuerdo muchas cosas, pero dentro de todo sé cositas jajaj.
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 joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

ayuda con php

Publicado por joel (1269 intervenciones) el 04/05/2019 08:00:33
Has probado lo que te comente, haber que te devuelve?
1
print_r($_POST);
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
sin imagen de perfil

ayuda con php

Publicado por Marcos (31 intervenciones) el 04/05/2019 08:16:10
Si, lo he probado y me muestra array() junto a los botones del radio al agregarlo junto al else

1
2
3
4
<?php if ($t['estado']==1): ?>
            <input type="radio" name="estado" checked="checked" value="1" />
        <?php else : print_r($_POST);?>
          <input type="radio" name="estado" value="0" />
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 italo_pm
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

ayuda con php

Publicado por italo_pm (193 intervenciones) el 04/05/2019 12:07:28
Hola

el print_r($_POST); lo debes de poner al inicio del file fecha_php.php, solo asi sabras que datos son los que llegaron.

salud2.
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

ayuda con php

Publicado por Mauro (1037 intervenciones) el 04/05/2019 13:56:18
Yo te recomendaría, más allá de este problema puntual, que utilices un IDE para php y un debugger (Xdebug es mi preferencia personal, pero puedes usar ZendDebugger o algún otro), de esa forma será más sencillo encontrar el problema.

Otra cosa que te diría de probar es seguir el flujo de los datos usando la consola del navegador (Si usas Chrome o FireFox la activas apretando F12:

1izNVuC

Desde la pestaña Network (O Red si lo tienes en Español) podrás ver exactamente qué se le está enviando al php sin tener que meter código extra.
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
sin imagen de perfil

ayuda con php

Publicado por Marcos (31 intervenciones) el 04/05/2019 16:11:17
Hola, gracias ahora me trasladaré a estos a ver si les agarro la mano rápido, se ve que es mas sencillo para el usuario, gracias por el consejo!
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
sin imagen de perfil

ayuda con php

Publicado por Marcos (31 intervenciones) el 04/05/2019 16:09:17
Llegan estos mismos

AIUDA
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