PHP - Array con consulta de base de datos y checkbox

 
Vista:
sin imagen de perfil

Array con consulta de base de datos y checkbox

Publicado por ggb (14 intervenciones) el 13/06/2016 18:11:14
Hola a tod@s estaba buscando la manera de crear un array con una cadena de información, y tener la opción de selección para poder ejercer un proceso.

He efectuado una conexión contra la base de datos de mysql y le indicado que cree tantas tablas como resultado de la select muestre y he añadido un checkbox a cada fila, el problema es que deseo que cuando seleccione ese checkbox seleccione el value para poder efectuar un lanzamiento de script si no es seleccionado no efectué nada, el problema que es como lo tengo que hacer para que lo vincule a que esa opción la desconozco.

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
<html><head><title>Masivo</title></head><body>
<?php
$db_host = 'localhost';
$db_user = 'root';
$db_pwd = 'pwd';
 
$database = 'prueba_db';
$table1 = 'client';
$table2 = 'prov';
$estado = array('Activo','Inactivo');
 
if (!mysql_connect($db_host, $db_user, $db_pwd))
    die("Can't connect to database");
 
if (!mysql_select_db($database))
    die("Can't select database");
 
// sending query
$result1 = mysql_query("SELECT {$table1}.provid  from {$table1} inner join {$table2} on {$table1}.provid={$table2}.id;");
if (!$result1) {
    die("Query to show fields from table failed");
}
 
$fields_num = mysql_num_fields($result1);
 
echo "<table border='1'><tr>";
// printing table headers
        echo "<td>Selección</td>";
        echo "<td>ID</td>";
echo "</tr>\n";
// printing table rows
while($row1 = mysql_fetch_row($result1))
{
    echo "<tr>";
 
    // $row is array... foreach( .. ) puts every element
    // of $row to $cell variable
        //foreach($row1 as $cell1)
 
        //echo "<td>$cell1</td>";
        echo "<td>
  <input type='checkbox' name='Seleccion' value='$row1[0]'><br>

</form> 
</td>";
        echo "<td>$row1[0]</td>";
        echo "<td>

</form>
 </td>";
 
    echo "</tr>\n";
}
mysql_free_result($result1);
?>
</body></html>
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 Miguel

Array con consulta de base de datos y checkbox

Publicado por Miguel (15 intervenciones) el 14/06/2016 04:48:51
Saludos en el script no veo que se creen tablas segun los resultados de la consulta , solo se crean fila de una tabla html y veo que tienes algunos problemas de sintaxis en el codigo html, por ejemplo que pretendes cierras dos veces la etiqueta form (</form>) sin haber abierto alguna (correcto es<form></form>), como le indicas a tu script que ejecute algo sino lo programas (puedes usar ajax y con javascript llamar a tu codigo php que haga algo cuando se seleccione el checkbox. Revisa bien los fundamentos de formularios html
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

Array con consulta de base de datos y checkbox

Publicado por ggb (14 intervenciones) el 14/06/2016 09:43:06
Hola, es correcto, crea Filas al consultar con la base de datos pero no puedo selecionar la tabla para que parece un proceso, mi idea es poder selecionar varias filas y ejecute un script, ejemplo imageinemos que el resultado son 20 filas y solo deseo selecionar 10 filas para poder efectuar un script, es por ese motivo si me podias indicar o bien indicarme un ejemplo para poder probarlo.

He visto un ejemplo en un foro pero creo que no se puede ejecutar en este caso.

<input name="<?php valores[$I] >" type="checkbox" value="Libro ">libro 1<br />

Un saludo y 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

Array con consulta de base de datos y checkbox

Publicado por ggb (14 intervenciones) el 14/06/2016 13:54:27
Hola, he coregido varias cosas de la pagina web, pero creo que me queda mas datos que añadir..
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
<html><head><title>Masivo</title></head><body>
 
<?php
 
$db_host = 'localhost';
 
$db_user = 'root';
$db_pwd = 'pwd';
 
 
 
 
 
$database = 'prueba_db';
 
$table1 = 'client';
 
$table2 = 'prov';
 
$estado = array('Activo','Inactivo');
 
 
 
if (!mysql_connect($db_host, $db_user, $db_pwd))
 
    die("Can't connect to database");
 
 
 
if (!mysql_select_db($database))
 
    die("Can't select database");
 
 
 
// sending query
 
$result1 = mysql_query("SELECT {$table1}.provid  from {$table1} inner join {$table2} on {$table1}.provid={$table2}.id;");
 
if (!$result1) {
 
    die("Query to show fields from table failed");
 
}
 
 
 
$fields_num = mysql_num_fields($result1);
 
echo "<h1>Selecciona proceso </h1>";
echo "<h1>
<form action='demoform.php'>
  <input type='submit' value='Arranque Masivo'>
  <input type='submit' value='Parada Masiva'>
</h1>";
 
 
 
echo "<table border='1'><tr>";
 
// printing table headers
 
        echo "<td>Selección</td>";
 
        echo "<td>Proceso</td>";
 
echo "</tr>\n";
 
// printing table rows
 
while($row1 = mysql_fetch_row($result1))
 
{
 
    echo "<tr>";
 
 
 
    // $row is array... foreach( .. ) puts every element
 
    // of $row to $cell variable
 
        //foreach($row1 as $cell1)
 
 
 
        //echo "<td>$cell1</td>";
        echo "<td>
  <input type='checkbox' name='Seleccion[] '  value='$row1[0]'><br>






</form> 

</td>";
 
        echo "<td>$row1[0]</td>";
 
        echo "<td>


</form>

 </td>";
 
 
 
    echo "</tr>\n";
 
}
 
mysql_free_result($result1);
 
?>
 
</body></html>


Aun así creo que me falta mas datos, el menu al final me ha quedado de esta manera pero no lo efectua correctamente.
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 Miguel

Array con consulta de base de datos y checkbox

Publicado por Miguel (15 intervenciones) el 14/06/2016 14:43:16
Ajuste algunas cosas pero aun asi no se esto es lo que buscas, como te dije anteriormente tienes problemas de sintaxis del html y debes revisar los fundamentos de formularios html. otra cosa elimina los comentarios innecesarios
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
<html>
    <head>
          <title>Masivo</title>
       </head>
        <body>
       <?php
               $db_host = 'localhost';
               $db_user = 'root';
               $db_pwd = 'pwd';
               $database = 'prueba_db';
               $table1 = 'client';
               $table2 = 'prov';
               $estado = array('Activo','Inactivo');
 
                if (!mysql_connect($db_host, $db_user, $db_pwd))
                     die("Can't connect to database");
                 if (!mysql_select_db($database))
                     die("Can't select database");
 
                 // sending query
                 $result1 = mysql_query("SELECT {$table1}.provid from {$table1} inner join {$table2} on {$table1}.provid={$table2}.id;");
 
                  if (!$result1) {
                         die("Query to show fields from table failed");
                   }
 
                   $fields_num = mysql_num_fields($result1);
 
                   echo "<h1>Selecciona proceso </h1>";
                   echo "<h1>
                              <form action='demoform.php'>
                              <input type='submit' value='Arranque Masivo'>
                              <input type='submit' value='Parada Masiva'>
                              </h1>";
 
                               echo "<table border='1'><tr>";
                               echo "<td>Selección</td>";
                               echo "<td>Proceso</td>";
                               echo "</tr>"; //AQUI ESTABA MAL CERRADA LA ETIQUETA
 
                                 // printing table rows
                                 while($row1 = mysql_fetch_row($result1))
                                 {
                                    echo "<tr>";
                                     echo "<td>
                                                 <input type='checkbox' name='Seleccion[] ' value='$row1[0]'><br>
                                                   </td>";
                                       echo "<td>$row1[0]</td>";
                                    echo "</tr>";
                              }
                            echo "<input type='submit' value='enviar' name='enviar'/>"
                            echo "</form>";
mysql_free_result($result1);
 
?>
 
</body></html>
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

Array con consulta de base de datos y checkbox

Publicado por ggb (14 intervenciones) el 14/06/2016 15:40:45
Hola, muchas gracias por contesta, te muestro como queda y creo que de esta manera será más comprensible, efectivamente como dices lo primero que hace es una lista de la base de datos de todos los procesos activos, después uno efectúa que procesos desea parar que puede ser más de uno según seleccione en el checkbox , aquí es donde debe de guarda la selección del checkbox.

Aquí seria la acción a realizar, es decir enviaría los seleccionados a 'demoform.php' he indicaría en el sumit si es un arranque masivo o una parada masiva

<form action='demoform.php'>
<input type='submit' value='Arranque Masivo'>
<input type='submit' value='Parada Masiva'>
</h1>";

Después de seleccionar el número de fila asignando el número.

<input type='checkbox' name='Seleccion[] ' value='$row1[0]'><br>

Este es mi dilema es ¿cómo asociarlo?

Un saludo y gracias
Masivo
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 Miguel

Array con consulta de base de datos y checkbox

Publicado por Miguel (15 intervenciones) el 14/06/2016 16:15:05
Te recomiendo lo siguiente:
No coloques dos submit, cambia eso por radio o por un select donde se eliga la opcion y los checkbox los capturas en tu php, te comento que los checkbox que se envian son solo lo seleccionados. podrias intentar algo como esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
<form action='' method='post'>
    <input type="checkbox" name="ch1" value="1"/>
    <input type="checkbox" name="ch2" value="2"/>
    <input type="checkbox" name="ch3" value="3"/>
    <input type="checkbox" name="ch4" value="4"/>
    <input type="checkbox" name="ch5" value="5"/>
    <input type="submit" name="en" value="Enviar"/>
</form>
 
<?php
    foreach($_POST as $c=>$v)
        echo $c." ".$v."<br/>";
?>
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

Array con consulta de base de datos y checkbox

Publicado por ggb (14 intervenciones) el 14/06/2016 16:37:06
Hola, el problema radica que hay tantos como filas muestre en la base de datos por ese motivo, pongo esto.


<input type='checkbox' name='Seleccion[] 'value='$row1[0]'><br

Yo lo que buscaba es que al selecionar checkbox me enviara el numero de value, pero como puedes ver lo extrae directamente con
'value='$row1[0]'



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
<form action='demoform.php'>
  <input type='submit' value='Arranque Masivo'>
  <input type='submit' value='Parada Masiva'>
</h1><table border='1'><tr><td>Selección</td><td>Proceso</td></tr>
<tr><td>
  <input type='checkbox' name='Seleccion[] 'value='1001'><br>
 
</form>
</td><td>1001</td><td>
 
</form>
 </td></tr>
<tr><td>
  <input type='checkbox' name='Seleccion[] 'value='1002'><br>
 
</form>
</td><td>1002</td><td>
 
</form>
 </td></tr>
<tr><td>
  <input type='checkbox' name='Seleccion[] 'value='1003'><br>
 
</form>
</td><td>1003</td><td>
 
</form>
 </td></tr>
<tr><td>
  <input type='checkbox' name='Seleccion[] 'value='1004'><br>
 
</form>
</td><td>1004</td><td>
 
</form>
 </td></tr>
<tr><td>
  <input type='checkbox' name='Seleccion[] 'value='1005'><br>
 
</form>
</td><td>1005</td><td>
 
</form>

Un saludo y 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
Imágen de perfil de Miguel

Array con consulta de base de datos y checkbox

Publicado por Miguel (15 intervenciones) el 14/06/2016 16:58:23
Si te entiendo, no se si soy yo el que no se explica bien, los valores de los check pueden ser el id del proceso eso esta bien, lo que quiero referir es que puedes capturar los valores de los check seleccionado de la manera que te indico arriba. Y vuelvo e insisto tienes errores en el html. Otra cosa probaste el ejemplo que te envie?
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

Array con consulta de base de datos y checkbox

Publicado por ggb (14 intervenciones) el 14/06/2016 17:13:08
El ejemplo lo probe pero no puedo implementarlo en mi codigo (o mejor dicho no se como), mediante la función PHP genero un formulario con varios check boxes dependiendo de la cantidad de resultados que me devuelve mi consulta, cada check box al momento de generarse adquiere un nombre de "checkbox". '$row1[0]', que seria checkbox1, checkbox2, etc. Dependiendo del '$row1[0]' devuelto, hasta ahí todo bien. La cosa es que quiero que al presionar el botón "enviar" del formulario, en mi página destino pueda recoger todos los checkbox que fueron seleccionados, como se generaron dinámicamente, no se cuantos ni que nombre tienen.

Creo que la primera parte la tengo mal debido a que no lo hace, debia de crearlo pero veo que no.
<tr><td>
<input type='checkbox' name='Seleccion[] 'value='1002'><br>

</form>
</td><td>1002</td><td>

</form>
</td></tr>
<tr><td>
<input type='checkbox' name='Seleccion[] 'value='1003'><br>

</form>
</td><td>1003</td><td>

</form>
</td></tr>
<tr><td>
<input type='checkbox' name='Seleccion[] 'value='1004'><br>


Y la segunda parte es coger el valor de cada uno de los checkbox.

Un saludo y 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
Imágen de perfil de Miguel

Array con consulta de base de datos y checkbox

Publicado por Miguel (15 intervenciones) el 14/06/2016 17:30:39
Por eso te digo que uses esto:

1
2
3
4
5
6
7
<?php
 
    foreach($_POST as $c=>$v)
 
        echo $c." ".$v."<br/>";
 
?>

asi los recoges
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
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Array con consulta de base de datos y checkbox

Publicado por kip (877 intervenciones) el 14/06/2016 17:36:38
Hola ggb, estas haciendo mal en las lineas que usas para cerrar la etiqueta <form>, los nombres que le estas dando estan correctos, creando un array con cada valor que selecciones pero como te dije no debes cerrar el form por cada checkbox, seria algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<form action='demoform.php' method='POST'>
<tr><td>
<input type='checkbox' name='Seleccion[] 'value='1002'><br>
</td><td>1002</td><td>
</td></tr>
<tr><td>
<input type='checkbox' name='Seleccion[] 'value='1003'><br>
</td><td>1002</td><td>
</td></tr>
<tr><td>
<input type='checkbox' name='Seleccion[] 'value='1004'><br>
</td><td>1002</td><td>
</td></tr>
<input type='submit' name='submit' value='Enviar datos' />
</form> //AQUI FINALIZO EL FORM

Luego para recibirlos seria algo asi:

1
2
3
4
5
$array = $_POST['Seleccion'];
for ($i=0,$size=count($array);$i<$size;$i++){
    echo 'El valor es: '.$array[$i].'</br>'; //mostramos los valores enviados
}
?>

En este caso hemos almacenado los valores de los checkbox en la variable array y los hemos mostrado, cabe recalcar que podrias re-almacenar aquellos valores creando un array personalizado o en variables individuales si asi lo deseas, pero para ahorrar codigo seria mejor que los dejes en un array y si deseas obtener cada valor solo debes recorrer cada indice tal como lo hice con el uso del bucle for.

Nos cuentas si tienes dudas.

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

Array con consulta de base de datos y checkbox

Publicado por ggb (14 intervenciones) el 14/06/2016 18:32:57
Hola, creo que debo de haberme explicado mal, volveré a empezar y pido disculpar por ello.
Pagina index.php
1º Conecto contra la base de datos y efectuó la query.

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
<html><head><title>Masivo</title></head><body>
 
<?php
 
$db_host = 'localhost';
 
$db_user = 'root';
$db_pwd = 'pwd';
 
 
 
 
 
$database = 'prueba_db';
 
$table1 = 'client';
 
$table2 = 'prov';
 
$estado = array('Activo','Inactivo');
 
 
 
if (!mysql_connect($db_host, $db_user, $db_pwd))
 
die("Can't connect to database");
 
 
 
if (!mysql_select_db($database))
 
die("Can't select database");
 
 
 
// sending query
 
$result1 = mysql_query("SELECT {$table1}.provid from {$table1} inner join {$table2} on {$table1}.provid={$table2}.id;");
 
if (!$result1) {
 
die("Query to show fields from table failed");
 
}
 
 
 
$fields_num = mysql_num_fields($result1);
2º Ponemos el enunciado y los submit, debido que queremos que guarde los datos y ejecute un scripr dependiendo del sumit que pulse.
1
2
3
4
5
6
echo "<h1>Selecciona proceso </h1>";
echo "<h1>
<form action='demoform.php'>
<input type='submit' value='Arranque Masivo'>
<input type='submit' value='Parada Masiva'>
</h1>";

3º Efectuamos los bordes y las cabeceras de las columnas
1
2
3
4
5
6
7
8
9
echo "<table border='1'><tr>";
 
// printing table headers
 
echo "<td>Selección</td>";
 
echo "<td>Proceso</td>";
 
echo "</tr>\n";

4º Efectuamos la creación automática de las tablas por cada fila obtenida de la consulta añadiendo automáticamente los checkbox por cada id obtenido
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
// printing table rows
 
while($row1 = mysql_fetch_row($result1))
 
{
 
echo "<tr>";
 
 
 
// $row is array... foreach( .. ) puts every element
 
// of $row to $cell variable
 
//foreach($row1 as $cell1)
 
 
 
//echo "<td>$cell1</td>";
echo "<td>
<input type='checkbox' name='Seleccion[] ' value='$row1[0]'><br>

5º Cerramos la web

</form> 

</td>";
 
echo "<td>$row1[0]</td>";
 
echo "<td>


</form>

</td>";
 
 
 
echo "</tr>\n";
 
}
 
mysql_free_result($result1);
 
?>
 
</body></html>

A esto me devuelve la captura que enviado.
Y esto es lo que yo deseo hacer.

Mediante una función PHP genero un formulario con varios check boxes dependiendo de la cantidad de filas que me devuelve mi consulta (desconozco cuantas filas puede haber y varían por momentos).
<input type='checkbox' name='Seleccion[] ' value='$row1[0]'><br>
Cada check box al momento de generarse adquiere un nombre de "checkbox". '$row1[0]', que sería checkbox1, checkbox2, etc. (esto aún no lo he efectuado)
Dependiendo del $row1[0]devuelto, hasta ahí todo bien. La cosa es que quiero que al presionar el botón "enviar" del formulario, en mi página destino pueda recoger todos los checkbox que fueron seleccionados, como se generaron dinámicamente, no se cuántos ni que nombre tienen. ¿Hay alguna forma de hacerlo vía $_POST de php ¿

Este es el resultado que me muestra la web, cuando consulto el fichero index.php
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
<html><head><title>Masivo</title></head><body>
<h1>Selecciona proceso </h1><h1>
<form action='demoform.php'>
  <input type='submit' value='Arranque Masivo'>
  <input type='submit' value='Parada Masiva'>
</h1><table border='1'><tr><td>Selección</td><td>Proceso</td></tr>
<tr><td>
  <input type='checkbox' name='Seleccion[] 'value='1001'><br>
 
</form>
</td><td>1001</td><td>
 
</form>
 </td></tr>
<tr><td>
  <input type='checkbox' name='Seleccion[] 'value='1002'><br>
 
</form>
</td><td>1002</td><td>
 
</form>
 </td></tr>
<tr><td>
  <input type='checkbox' name='Seleccion[] 'value='1003'><br>
 
</form>
</td><td>1003</td><td>
 
</form>
 </td></tr>
<tr><td>
  <input type='checkbox' name='Seleccion[] 'value='1004'><br>
 
</form>
</td><td>1004</td><td>
 
</form>
 </td></tr>
<tr><td>
  <input type='checkbox' name='Seleccion[] 'value='1005'><br>
 
</form>
</td><td>1005</td><td>
 
</form>
 </td></tr>
<tr><td>
  <input type='checkbox' name='Seleccion[] 'value='1006'><br>
 
</form>
</td><td>1006</td><td>
 
</form>
 </td></tr>
<tr><td>
  <input type='checkbox' name='Seleccion[] 'value='1007'><br>
 
</form>
</td><td>1007</td><td>
 
</form>
 </td></tr>
<tr><td>
  <input type='checkbox' name='Seleccion[] 'value='1008'><br>
 
</form>
</td><td>1008</td><td>
 
</form>
 </td></tr>
<tr><td>
  <input type='checkbox' name='Seleccion[] 'value='1009'><br>
 
</form>
</td><td>1009</td><td>
 
</form>
 </td></tr>
<tr><td>
  <input type='checkbox' name='Seleccion[] 'value='1010'><br>
 
</form>
</td><td>1010</td><td>
 
</form>
 </td></tr>
</body></html>


Ahora lo que yo deseo efectuar es seleccionar un grupo de checkbox que tiene asociados el numero en el campo value para procesarlos.

Miguel [email protected] Me ha dado un buen ejemplo pero no me es valido debido a que debe ser creado automáticamente y se debe añadir una función que desconozco como efectuarlo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<form action='' method='post'>
    <input type="checkbox" name="ch1" value="1"/>
    <input type="checkbox" name="ch2" value="2"/>
    <input type="checkbox" name="ch3" value="3"/>
    <input type="checkbox" name="ch4" value="4"/>
    <input type="checkbox" name="ch5" value="5"/>
    <input type="submit" name="en" value="Enviar"/>
</form>
 
<?php
    foreach($_POST as $c=>$v)
        echo $c." ".$v."<br/>";
?>
Aquí se precisaría crear una función que automáticamente cree el name y le añada uno, así sucesivamente en cada fila, a mi automáticamente me crea esto <input type='checkbox' name='Seleccion[] 'value='1002'><br>
kip (120 intervenciones)
Me ha informado de crear el archivo así
 
$array = $_POST['Seleccion'];
for ($i=0,$size=count($array);$i<$size;$i++){
    echo $array[$i]; //mostramos los valores enviados
}
?>


Pero sigue dándome error, por ese motivo es mi dilema ¿me podéis indicar el error para corregirlos, son dos fichero index.php y el demoform.php.

Un saludo y 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
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Array con consulta de base de datos y checkbox

Publicado por kip (877 intervenciones) el 14/06/2016 19:14:55
Tu error esta en aquellos </form>, y eso te pasa por meter el echo '</form>', dentro del while, deberias hacer esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<html><head><title>Masivo</title></head><body>
<h1>Selecciona proceso </h1><h1>
<form action="demoform.php" name="form1" method="post">
<?php
$fields_num = mysql_num_fields($result1);
echo "<table border='1'><tr>";
// printing table headers
echo "<td>Selección</td>";
echo "<td>ID</td>";
echo "</tr>\n";
// printing table rows
while($row1 = mysql_fetch_row($result1))
{
    echo "<tr>";
    echo "<td><input type='checkbox' name='Seleccion[]' value='$row1[0]'><br> </td>";
    echo "<td>". $row1[0]++."</td>";
    echo "</tr>\n";
}
mysql_free_result($result1);
?>
<input type='submit' value='Enviar datos'>
</form>
</body></html>

Luego en demoform lo recibes como te dije:

1
2
3
4
5
6
7
8
if(isset($_POST['Seleccion'])){
 
$array = $_POST['Seleccion'];
for ($i=0,$size=count($array);$i<$size;$i++){
echo $array[$i]; //mostramos los valores enviados
}
 
}

Ajustalo a tu archivo y nos cuentas como te fue.
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

Array con consulta de base de datos y checkbox

Publicado por ggb (14 intervenciones) el 15/06/2016 10:39:21
Hola, he efectuado los cambios que me has facilitado pero creo que debo de tener algun tipo de error, he creado los dos ficheros de php.

Index.php

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
<html><head><title>Masivo</title></head><body>
<?php
$db_host = 'localhost';
$db_user = 'root';
$db_pwd = 'pwd';
 
$database = 'prueba_db';
$table1 = 'client';
$table2 = 'prov';
$estado = array('Activo','Inactivo');
 
if (!mysql_connect($db_host, $db_user, $db_pwd))
    die("Can't connect to database");
 
if (!mysql_select_db($database))
    die("Can't select database");
 
// sending query
$result1 = mysql_query("SELECT {$table1}.provid  from {$table1} inner join {$table2} on {$table1}.provid={$table2}.id;");
if (!$result1) {
    die("Query to show fields from table failed");
}
 
 
$fields_num = mysql_num_fields($result1);
 
echo "<h1>Selecciona proceso </h1>";
echo "<h1>
<form action='demoform.php'>
  <input type='submit' value='Arranque Masivo'>
  <input type='submit' value='Parada Masiva'>
</h1>";
 
 
echo "<table border='1'><tr>";
// printing table headers
        echo "<td>Selección</td>";
        echo "<td>Proceso</td>";
echo "</tr>\n";
// printing table rows
while($row1 = mysql_fetch_row($result1))
 
{
 
    echo "<tr>";
 
    echo "<td><input type='checkbox' name='Seleccion[]' value='$row1[0]'><br> </td>";
 
    echo "<td>". $row1[0]++."</td>";
 
    echo "</tr>\n";
 
}
mysql_free_result($result1);
?>
</body></html>



demoform.php

1
2
3
4
5
6
7
8
9
10
if(isset($_POST['Seleccion'])){
 
$array = $_POST['Seleccion'];
 
for ($i=0,$size=count($array);$i<$size;$i++){
 
echo $array[$i]; //mostramos los valores enviados
 
}
}

Observo que efectivamente envia los checkbox que seleciono pero creo que aun me queda mas por que da error.


http://localhost:/demoform.php?Seleccion%5B%5D=1002&Seleccion%5B%5D=1004&Seleccion%5B%5D=1005&Seleccion%5B%5D=1006

Y este es el error que me muestra la web

1
if(isset($_POST['Seleccion'])){ $array = $_POST['Seleccion']; for ($i=0,$size=count($array);$i<$size;$i++){ echo $array[$i]; //mostramos los valores enviados } }

¿Qué parametro he escrito mal?

Un saludo y 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
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Array con consulta de base de datos y checkbox

Publicado por kip (877 intervenciones) el 15/06/2016 12:07:38
Hola, que mensaje de error te muestra?
Por cierto te falta hacer un echo "</form>" despues de mysql_free_result().

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

Array con consulta de base de datos y checkbox

Publicado por ggb (14 intervenciones) el 15/06/2016 12:37:57
Hola, te refieres que ponga esto.

mysql_free_result($result1);
echo "</form>"
?>
</body></html>

El error que da es este ¿no debia mostrar los valores?
error
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
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Array con consulta de base de datos y checkbox

Publicado por kip (877 intervenciones) el 15/06/2016 12:44:51
En el demoform.php debes colocar <?php ?> para que interprete el codigo php correspondiente
1
2
3
4
5
6
7
8
<?php
if(isset($_POST['Seleccion'])){ 
$array = $_POST['Seleccion'];
 for ($i=0,$size=count($array);$i<$size;$i++){ 
echo $array[$i];
 }
}
?>

Y si me refiero a ese echo ggb, en el formulario de los check box:

1
2
3
4
mysql_free_result($result1);
echo "</form>"
?>
</body></html>
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

Array con consulta de base de datos y checkbox

Publicado por ggb (14 intervenciones) el 15/06/2016 13:01:19
Hola , muchas gracias, corregido los parametros que me has facilitado, ahora no da error, pero no muestra los resultado, aparece en blanco .

{ echo $array[$i]; //mostramos los valores enviados }}

Un saludo y 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
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Array con consulta de base de datos y checkbox

Publicado por kip (877 intervenciones) el 15/06/2016 13:05:13
Arriba te deje el codigo para que lo copies y pegues, ya que en el tuyo del demoform.php no haces salto de linea cuando se hace el comentario de //mostrando resultados y no se cierran las }. Por favor trata de verificar aquello tambien.
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

Array con consulta de base de datos y checkbox

Publicado por ggb (14 intervenciones) el 15/06/2016 13:24:55
Creo que lo he copiado bien, pero no muestra nada.



<?php

if(isset($_POST['Seleccion'])){

$array = $_POST['Seleccion'];

for ($i=0,$size=count($array);$i<$size;$i++){

echo $array[$i];

}

}

?>
fichero_vi


Un saludo y 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
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Array con consulta de base de datos y checkbox

Publicado por kip (877 intervenciones) el 15/06/2016 16:40:49
Ahora me fijo que no colocaste el method en el form , solo el action, fijate y coloca el method='POST':

1
2
3
4
echo "<h1>Selecciona proceso </h1>";
echo "<h1><form method='POST' action='demoform.php'>
<input type='submit' value='Arranque Masivo'>
<input type='submit' value='Parada Masiva'> </h1>";
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Array con consulta de base de datos y checkbox

Publicado por ggb (14 intervenciones) el 15/06/2016 17:00:02
Muchas gracias a todos, ahora funciona correctamente.
Un saludo
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