PHP - ARRAY DE UN FORM SÓLO COJA LOS VALORES DONDE EL CHECK ESTA SELECCIONADO

 
Vista:
sin imagen de perfil

ARRAY DE UN FORM SÓLO COJA LOS VALORES DONDE EL CHECK ESTA SELECCIONADO

Publicado por JULIAN (27 intervenciones) el 25/03/2022 14:01:13
Buenas, tengo una form de varias líneas, con un check de pagos, y quiero que sólo se inserten los datos donde el check este marcado.

el form:
form action='administrar_libro.php' method='post'>
<p>Selecciona Fecha: <input type="text" id="datepicker" name='date' required></p>

<table border=1>
<head>
<td>Idalumno</td>
<td>Nombre</td>
<td>Apellidos</td>
<td>Pago</td>

</head>
<body>

<?php foreach ($libro as $libro4) {?>
<tr>
<td> <input type='text' name='id[]' value='<?php echo $libro4->getId()?>'></td>
<td> <input type='text' name='nombre[]' value='<?php echo $libro4->getNombre()?>'></td>
<td> <input type='text' name='apellidos[]' value='<?php echo $libro4->getApellidos()?>'></td>



<td><input type='checkbox' id = 'check' name='pago[]' value="pagado"></td>


</tr>
<?php }?>
</body>
<input type='hidden' name='pagos[]' value='pagos' >
</table><BR><br>



luego los recibo en mi php administrar_libros.php

}elseif(isset($_POST['pagos'])){
if ( !empty($_POST["pagos"]) && is_array($_POST["pagos"]) ) {

for($i=0, $t=count($_POST['nombre']); $i<$t; $i++){

$libro4->setNombre($_POST['nombre'][$i]);
$libro4->setApellidos($_POST['apellidos'][$i]);


$libro4->setPago($_POST['pago'][$i]);

$libro4->setId($_POST['id'][$i]);
$libro4->setFecha($_POST['date']);

$crud->pagos($libro4);


//llama a la función asistencia definida en el crud


echo '<div class="alert alert-success">Has registrado correctamente la asistencia del día.</div>';
echo "<a href='index.php'>Volver</a> ";
print "<pre>"; print_r($_REQUEST); print "</pre>\n";



public function pagos($libro4){
$db=Db::conectar();
// $db->beginTransaction();
// $asistencialibros=[];
$insert=$db->prepare('INSERT INTO pagos values (NULL,:nombre,:apellidos,:pago,:id, :date)');
// foreach ($libro as $libro2) {



$insert->bindvalue('nombre',$libro4->getNombre());
$insert->bindvalue('apellidos',$libro4->getApellidos());

$insert->bindvalue('pago',$libro4->getPago());
$insert->bindvalue('id',$libro4->getId());
$insert->bindvalue('date',$libro4->getFecha());
//

$insert->execute();


}
}


y los inserto:

public function pagos($libro4){
$db=Db::conectar();
// $db->beginTransaction();
// $asistencialibros=[];
$insert=$db->prepare('INSERT INTO pagos values (NULL,:nombre,:apellidos,:pago,:id, :date)');
// foreach ($libro as $libro2) {



$insert->bindvalue('nombre',$libro4->getNombre());
$insert->bindvalue('apellidos',$libro4->getApellidos());

$insert->bindvalue('pago',$libro4->getPago());
$insert->bindvalue('id',$libro4->getId());
$insert->bindvalue('date',$libro4->getFecha());
//

$insert->execute();
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
sin imagen de perfil

ARRAY DE UN FORM SÓLO COJA LOS VALORES DONDE EL CHECK ESTA SELECCIONADO

Publicado por JULIAN (27 intervenciones) el 05/04/2022 12:53:27
Buenas a todos.

Nadie me puede indicar como hacer para que solo me inserte las líneas que están seleccionadas en el check.

muchas gracias .

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
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

ARRAY DE UN FORM SÓLO COJA LOS VALORES DONDE EL CHECK ESTA SELECCIONADO

Publicado por javier (547 intervenciones) el 05/04/2022 17:51:31
Hola

si pusieras el código clicando justo arruba al boton de </>Código

se podria leer mejor

1
echo 'Hola';

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

ARRAY DE UN FORM SÓLO COJA LOS VALORES DONDE EL CHECK ESTA SELECCIONADO

Publicado por JULIAN (27 intervenciones) el 06/04/2022 07:17:50
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
orm action='administrar_libro.php' method='post'>
<p>Selecciona Fecha: <input type="text" id="datepicker" name='date' required></p>
 
<table border=1>
<head>
<td>Idalumno</td>
<td>Nombre</td>
<td>Apellidos</td>
<td>Pago</td>
 
</head>
<body>
 
<?php foreach ($libro as $libro4) {?>
<tr>
<td> <input type='text' name='id[]' value='<?php echo $libro4->getId()?>'></td>
<td> <input type='text' name='nombre[]' value='<?php echo $libro4->getNombre()?>'></td>
<td> <input type='text' name='apellidos[]' value='<?php echo $libro4->getApellidos()?>'></td>
 
 
 
<td><input type='checkbox' id = 'check' name='pago[]' value="pagado"></td>
 
 
</tr>
<?php }?>
</body>
<input type='hidden' name='pagos[]' value='pagos' >
</table><BR><br>
 
 
 
luego los recibo en mi php administrar_libros.php
 
}elseif(isset($_POST['pagos'])){
if ( !empty($_POST["pagos"]) && is_array($_POST["pagos"]) ) {
 
for($i=0, $t=count($_POST['nombre']); $i<$t; $i++){
 
$libro4->setNombre($_POST['nombre'][$i]);
$libro4->setApellidos($_POST['apellidos'][$i]);
 
 
$libro4->setPago($_POST['pago'][$i]);
 
$libro4->setId($_POST['id'][$i]);
$libro4->setFecha($_POST['date']);
 
$crud->pagos($libro4);
 
 
//llama a la función asistencia definida en el crud
 
 
echo '<div class="alert alert-success">Has registrado correctamente la asistencia del día.</div>';
echo "<a href='index.php'>Volver</a> ";
print "<pre>"; print_r($_REQUEST); print "</pre>\n";
 
 
 
public function pagos($libro4){
$db=Db::conectar();
// $db->beginTransaction();
// $asistencialibros=[];
$insert=$db->prepare('INSERT INTO pagos values (NULL,:nombre,:apellidos,:pago,:id, :date)');
// foreach ($libro as $libro2) {
 
 
 
$insert->bindvalue('nombre',$libro4->getNombre());
$insert->bindvalue('apellidos',$libro4->getApellidos());
 
$insert->bindvalue('pago',$libro4->getPago());
$insert->bindvalue('id',$libro4->getId());
$insert->bindvalue('date',$libro4->getFecha());
//
 
$insert->execute();
 
 
}
}
 
 
y los inserto:
 
public function pagos($libro4){
$db=Db::conectar();
// $db->beginTransaction();
// $asistencialibros=[];
$insert=$db->prepare('INSERT INTO pagos values (NULL,:nombre,:apellidos,:pago,:id, :date)');
// foreach ($libro as $libro2) {
 
 
 
$insert->bindvalue('nombre',$libro4->getNombre());
$insert->bindvalue('apellidos',$libro4->getApellidos());
 
$insert->bindvalue('pago',$libro4->getPago());
$insert->bindvalue('id',$libro4->getId());
$insert->bindvalue('date',$libro4->getFecha());
//
 
$insert->execute();
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
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

ARRAY DE UN FORM SÓLO COJA LOS VALORES DONDE EL CHECK ESTA SELECCIONADO

Publicado por javier (547 intervenciones) el 06/04/2022 09:50:53
Hola

si todos los campos que generas en el bucle forech tienen el mismo nombre y son arrays es normal que te lleguen todos al hacer sbbmit.

Yo para hecerlo mas rápido crearia un form a cada libro con su propio boton de enviar.

cuando recibes los datos de name='id[] en el PHP haz un print_r($variable) a la variable donde recibes esos datos, y pega aqui lo que te imprime en pantalla, para echarle un vistazo.

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

ARRAY DE UN FORM SÓLO COJA LOS VALORES DONDE EL CHECK ESTA SELECCIONADO

Publicado por JULIAN (27 intervenciones) el 06/04/2022 10:05:12
Lo que me dices es que cree un form para cada foreach, para nombre, otro form foreach para id, etc.....

Lo que llega el print_:r, si marco por ejemplo de 3 registros, si marco el primer y el tercer check, llegaria [0]=marcado, [1]=marcado


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 javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

ARRAY DE UN FORM SÓLO COJA LOS VALORES DONDE EL CHECK ESTA SELECCIONADO

Publicado por javier (547 intervenciones) el 06/04/2022 10:56:44
No


1
2
3
4
5
6
7
8
9
10
foreach($values as $value){
 
    echo '<form>';
 
    // resto del form
 
    // boton enviar
 
    //cierra form
}
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 DE UN FORM SÓLO COJA LOS VALORES DONDE EL CHECK ESTA SELECCIONADO

Publicado por JULIAN (27 intervenciones) el 07/04/2022 14:40:25
y como puedo hacer según elija un valor en el select si es ausente el valor, me pongo el valor del otro campo puntos del form a valor = 0

<td><select v-model="employee.status" class="form-control" name='estado[]'>
<option disabled value="unset">--Select--</option>
<option value="presente">Presente</option>
<option value="ausente">Ausente</option>
</select> </td>

<td><input type='text' name='puntos[]' value="3" ></td>
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
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

ARRAY DE UN FORM SÓLO COJA LOS VALORES DONDE EL CHECK ESTA SELECCIONADO

Publicado por javier (547 intervenciones) el 08/04/2022 09:40:25
Pega aqui el código de como recibes los datos del form, solo el PHP

o los procesas con Vue.js antes?

y entre las etiquetas code de este foro, dandole al boton </>Code

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

ARRAY DE UN FORM SÓLO COJA LOS VALORES DONDE EL CHECK ESTA SELECCIONADO

Publicado por JULIAN (27 intervenciones) el 08/04/2022 10:08:57
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
}elseif(isset($_POST['asistencia'])){
            if ( !empty($_POST["asistencia"]) && is_array($_POST["asistencia"]) ) {
             for($i=0, $t=count($_POST['nombre']); $i<$t; $i++){
 
		$libro2->setNombre($_POST['nombre'][$i]);
		$libro2->setApellidos($_POST['apellidos'][$i]);
                $libro2->setIdcolegio1($_POST['idcolegio1'][$i]);
		$libro2->setIdgrupo1($_POST['idgrupo1'][$i]);
 
 
              $libro2->setEstado($_POST['estado'][$i]);
               $libro2->setId($_POST['id'][$i]);
               $libro2->setFecha($_POST['date']);
               $libro2->setPuntos($_POST['puntos'][$i]);
 
               $crud->asistencia($libro2);
 
 
                //llama a la función asistencia definida en el crud
 
 
                echo '<div class="alert alert-success">Has registrado correctamente la asistencia del día.</div>';
                echo "<a href='index.php'>Volver</a> ";
               print "<pre>"; print_r($_REQUEST); print "</pre>\n";
            }
            }
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
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

ARRAY DE UN FORM SÓLO COJA LOS VALORES DONDE EL CHECK ESTA SELECCIONADO

Publicado por javier (547 intervenciones) el 08/04/2022 18:36:10
La verdad es que no entiendo que quieres hacer
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 DE UN FORM SÓLO COJA LOS VALORES DONDE EL CHECK ESTA SELECCIONADO

Publicado por JULIAN (27 intervenciones) el 11/04/2022 09:46:02
Pues que cuando elijo en un select ausente, me ponga en otro campo del form un 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 javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

ARRAY DE UN FORM SÓLO COJA LOS VALORES DONDE EL CHECK ESTA SELECCIONADO

Publicado por javier (547 intervenciones) el 11/04/2022 12:14:37
necesitas javascript o usar Jquery para hacerlo

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