PHP - MYSQL recuperar en formato checkbox

 
Vista:
sin imagen de perfil

MYSQL recuperar en formato checkbox

Publicado por Sergio (12 intervenciones) el 19/07/2017 15:05:29
Buenos días.

Tengo un problema y quisiera saber si pueden ayudarme, para ello paso a explicarlo. Vieron el menú de programación de un tv cualquiera donde figura la semana y un tilda o no los dias de encencido o apagado automatico. Quiero hacer lo mismo con un formulario php y guardar los datos en mysql. Eso lo tengo resuelto, el problema es que quiero que cuando ingreso nuevamente al formulario me muestre los datos guardados como se muestra en la programación de los tv, es decir si marqué el domingo cuando ingreso que el domingo esté marcado. Podrían indicarme como hacerlo? Gracias.
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 facundo

MYSQL recuperar en formato checkbox

Publicado por facundo (185 intervenciones) el 19/07/2017 16:50:47
Facil amigo, segui estos pasos:

Conectate a la base de datos
en la consulta sql selecciona ese valor de la base de datos
y en el value del checkbox ponele ese valor...

No se como lo guardaste en la base de datos... pero por ejemplo que lo hayas guardado con el valor 1, la consulta seria asi..
1
2
3
4
5
$sql = "SELECT dato_guardado FROM tabla WHERE dato_guardado = 'checked' ";
$rs = mysqli_query($link,$sql); //aca puse $link suponiendo que se llama asi la coneccion, vos suplantalo por la variable en la que guardas la conexion
 
$datos = mysqli_fetch_assoc($rs);
$datoEnCuestion = $datos['dato_guardado'];

Y en el checkbox le vas a poner $datoEnCuestion, el cual va a ser "checked"
Obviamente lo podes hacer con un ternario por si no esta seleccionado
te quedaria asi:

1
2
3
$checked = isset($datoEnCuestion) ? $datoEnCuestion : '';
 
<input type="checkbox" name="" value="" $checked/>

Entendiste te funciono ?
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

MYSQL recuperar en formato checkbox

Publicado por sergio (12 intervenciones) el 19/07/2017 17:35:38
1
2
3
4
5
6
7
8
9
$resultado=mysqli_query("select * from programa id order by id desc limit 1",$link);
 
$fila=mysqli_fetch_assoc($resultado);
 
$d1=$fila["d1"];
 
echo "<form action=\"sem.php\" method=\"post\">";
echo "<br>";
echo "<input type=\"checkbox\" name=\"d1\" value=\"$d1\">DO&nbsp";

Lo probé y no funciona. Este es mi formularo en php. El campo d1 tiene un 1 en la base de datos, pero no me muestra nada. Tal vez tendré que cambiar el valor o el formato?
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 facundo

MYSQL recuperar en formato checkbox

Publicado por facundo (185 intervenciones) el 19/07/2017 18:23:06
primero nose porque tenes todas esas barras " \ " estan de mas...

segundo, en el query no selecciones todo de la tabla, selecciona solo el campo d1

tercero, en mysqli_query va primero $link y despues la consulta sql

tenes que hacer asi:
1
2
3
4
5
6
7
8
$sql = "SELECT d1 FROM programa WHERE d1 = '1' ";
$resultado=mysqli_query($link,$sql);
$fila=mysqli_fetch_assoc($resultado);
 
$d1=$fila["d1"];
$checked = isset($d1) ? 'checked' : '';
 
<input type="checkbox" name="d1" value="1" $checked/>

Lo importante es que entiendas el codigo, entendes? Vos cada vez que entras a la pagina vas a hacer la conexion a la base de datos, y si el campo d1 que seleccionaste de la base de datos tiene 1 entonces $checked va a valer 'checked'

Sino podes simplemente hacer el $sql sin el WHERE y preguntar si $fila['d1'] es igual a 1 entonces $checked = 'checked' de lo contrario $checked = '';

Proba de esa manera y me contas
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

MYSQL recuperar en formato checkbox

Publicado por sergio (12 intervenciones) el 19/07/2017 19:08:48
Esta es mi bd. la cual solo se compone de una fila, donde guardo los días de la semana (d1..d7) y horas de activación o desactivación.
mysql> select * from programa;

+----+------+------+------+------+------+------+------+---------------------+---------------------+
| id | d1 | d2 | d3 | d4 | d5 | d6 | d7 | activar | desactivar |
+----+------+------+------+------+------+------+------+---------------------+---------------------+
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 2017-07-19 15:30:00 | 2017-07-19 08:00:00 |
+----+------+------+------+------+------+------+------+---------------------+---------------------+
1 row in set (0.00 sec)


Esta es el formulario php. Funciona bien con las \ no se si por la version o porque pero el resto funciona,. Muestra el formulario y me indica cuales fueron tildados. Por un tema de no llenar la bd, que solo tiene una línea, manualmente le coloqué un 1 en el campo d1 para realizar las pruebas.

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
$sql = "SELECT d1 FROM programa WHERE d1 = '1'";
$resultado=mysqli_query($link, $sql);
$fila=mysqli_fetch_assoc($resultado);
 
$d1=$fila["d1"];
$d2=$fila["d2"];
$d3=$fila["d3"];
$d4=$fila["d4"];
$d5=$fila["d5"];
$d6=$fila["d6"];
$d7=$fila["d7"];
 
$checked=isset($d1)?'checked':'';
echo "<form action=\"sem.php\" method=\"post\">";
echo "<br>";
echo "<input type=\"checkbox\" name=\"d1\" value=\"1\" $checked/>DO&nbsp";
echo "<input type=\"checkbox\" name=\"d2\">LU&nbsp";
echo "<input type=\"checkbox\" name=\"d3\">MA&nbsp";
echo "<input type=\"checkbox\" name=\"d4\">MI&nbsp";
echo "<input type=\"checkbox\" name=\"d5\">JU&nbsp";
echo "<input type=\"checkbox\" name=\"d6\">VI&nbsp";
echo "<input type=\"checkbox\" name=\"d7\">SA&nbsp";
echo "<br>";echo "<br>";echo "<br>";
echo "<input type=\"submit\" class=\"button\">";
echo "</form>";
echo "<br>";
if(isset($_POST['d1']))
{
echo "DOMINGO ";
$d1=1;
//actualiza la  bd
}
?>

Disculpame, pero seguí tus indicaciones y no funciona. Gracias.
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

MYSQL recuperar en formato checkbox

Publicado por Sergio (12 intervenciones) el 21/07/2017 14:39:38
Buen día. HE RESUELTO EL PROBLEMA. Gracias a la colaboración de las respuestas anteriores que me orientaron a entrar más en detalle en los atributos de los checkbox. Por eso comparto mi solución, tal vez no sea la optima en cuanto a líneas de programación, pero funciona.

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
$resultado=mysql_query("select * from programa id order by id desc limit 1",$link);
  $fila=mysql_fetch_array($resultado);
 
  $d1_old=$fila["d1"];
  $d2_old=$fila["d2"];
  $d3_old=$fila["d3"];
  $d4_old=$fila["d4"];
  $d5_old=$fila["d5"];
  $d6_old=$fila["d6"];
  $d7_old=$fila["d7"];
 
  if ($d1_old==1)
     $checked1 = 'checked';
  else
     $checked1 = "";
 
  if ($d2_old==1)
     $checked2 = 'checked';
  else
     $checked2 = "";
 
  if ($d3_old==1)
     $checked3 = 'checked';
  else
     $checked3 = "";
 
  if ($d4_old==1)
     $checked4 = 'checked';
  else
     $checked4 = "";
 
 if ($d5_old==1)
     $checked5 = 'checked';
  else
     $checked5 = "";
 
  if ($d6_old==1)
     $checked6 = 'checked';
  else
    $checked6 = "";
 
  if ($d7_old==1)
     $checked7 = 'checked';
  else
    $checked7 = "";
 
  echo "<form action=\"sem.php\" method=\"post\">";
  echo "<br>";
  echo "<input type=\"checkbox\" name=\"d1\" $checked1/>DO&nbsp";
  echo "<input type=\"checkbox\" name=\"d2\" $checked2/>LU&nbsp";
  echo "<input type=\"checkbox\" name=\"d3\" $checked3/>MA&nbsp";
  echo "<input type=\"checkbox\" name=\"d4\" $checked4/>MI&nbsp";
  echo "<input type=\"checkbox\" name=\"d5\" $checked5/>JU&nbsp";
  echo "<input type=\"checkbox\" name=\"d6\" $checked6/>VI&nbsp";
  echo "<input type=\"checkbox\" name=\"d7\" $checked7/>SA&nbsp";
  echo "<br>";echo "<br>";echo "<br>";
  echo "<input type=\"submit\" class=\"button\" name=\"dias\">";
  echo "<input type=\"hidden\" name=\"accion\"value=\"semana\">";
  echo "</form>";
  echo "<br>";
?>
 
<?php
 
  if($_POST ['accion'] == "semana")
  {
  if(isset($_POST['d1']))
   {
    $d1=1;
   }
  else
   {
    $d1=0;
   }
 
  if(isset($_POST['d2']))
   {
    $d2=1;
   }
  else
   {
    $d2=0;
   }
 
  if(isset($_POST['d3']))
   {
    $d3=1;
   }
  else
   {
    $d3=0;
   }
 
  if(isset($_POST['d4']))
   {
    $d4=1;
   }
  else
   {
    $d4=0;
 }
 
  if(isset($_POST['d5']))
   {
    $d5=1;
   }
  else
   {
    $d5=0;
   }
 
  if(isset($_POST['d6']))
   {
    $d6=1;
   }
  else
   {
    $d6=0;
   }
  if(isset($_POST['d7']))
   {
    $d7=1;
   }
  else
   {
    $d7=0;
   }
 
  if ($d1_old==$d1 and $d2_old==$d2 and $d3_old==$d3 and $d4_old==$d4 and $d5_old==$d5 and $d6_old==$d6 and $d7_old==$d7)
    {
    }
  else
    {
     // en esta parte actualizo la db y refresco la pantalla.
    }
  }
 
?>
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