PHP - insertar valores tabla mediante php pdo

 
Vista:
sin imagen de perfil

insertar valores tabla mediante php pdo

Publicado por july (1 intervención) el 27/01/2022 13:31:56
Imagen1

Buenos días.

Estoy creando una aplicación para registrar asistencia, y como puedo hacer para pasar ese formulario que tengo en la imagen e insertarla con la asistencia del día, mediante php pdo??
Tengo este código pero sólo me insertar el último registro a mysqly necesito me inserte todos.


// método para insertar asistencia, recibe como parámetro un objeto de tipo libro
public function asistencia($libro2){
$db=Db::conectar();
$asistencialibros=[];
$insert=$db->prepare('INSERT INTO asistencia values (NULL,:nombre,:apellidos,:estado,:id, :date)');


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

$insert->bindvalue('estado',$libro2->getEstado());
$insert->bindvalue('id',$libro2->getId());
$insert->bindvalue('date',$libro2->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
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insertar valores tabla mediante php pdo

Publicado por Alejandro (839 intervenciones) el 28/01/2022 23:26:54
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Si ya lo hace con uno de los datos, es igual, solo debe iterar los demás elementos.
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

insertar valores tabla mediante php pdo

Publicado por JULIAN (26 intervenciones) el 14/02/2022 09:58:51
y como hago esto?? es mi pregunta, que metodo debo usar para que inserte todos los elementos del 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
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insertar valores tabla mediante php pdo

Publicado por Alejandro (839 intervenciones) el 14/02/2022 15:59:28
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Es difícil adivinar, se necesita ver mas código.

Puede que tengas una llamada al método asistencia() pasando el objeto que contiene los últimos valores.
Puede ser que iteres los volares del formulario y estés sobrescribiendo el objeto libro y por eso conserva unicamente el ultimo registro.
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

insertar valores tabla mediante php pdo

Publicado por JULIAN (26 intervenciones) el 15/02/2022 07:42:57
Buenos días.

mira este es el código del form:

<?php
//incluye la clase Libro y CrudLibro
require_once('crud_libro.php');
require_once('libro.php');
$crud=new CrudLibro();
$libro= new Libro();
//obtiene todos los libros con el método mostrar de la clase crud
$libro=$crud->mostrar_sele($_GET['id']);


?>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js">
</script>


<html>
<head>
<title>Mostrar Libros</title>

<link rel="stylesheet" type="text/css" href="style/tabla.css" />

<img src="img/judolorenzo.jpg"><br><br>

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>jQuery UI Datepicker - Default functionality</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.13.0/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.0/jquery-ui.js"></script>
<script>
$( function() {
$( "#datepicker" ).datepicker({dateFormat: "yy-mm-dd"});
} );


</script>
</head>
<body>
<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>Asistencia</td>

</head>
<body>

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


<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>


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

<input type='submit' value='Guardar' name="guardar">

<a href="index.php">Volver</a>
</form>
</body>
</html>


--------------------------------------


este es el codigo de administracion del php

}elseif(isset($_POST['asistencia'])){


$libro2->setNombre($_POST['nombre']);
$libro2->setApellidos($_POST['apellidos']);
// $libro->setAnio_nacimiento($_POST['fecha']);

$libro2->setEstado($_POST['estado']);
$libro2->setId($_POST['id']);
$libro2->setFecha($_POST['date']);

//llama a la función asistencia definida en el crud
$crud->asistencia($libro2);

echo '<div class="alert alert-success">Has registrado correctamente la asistencia del día.</div>';

print "<pre>"; print_r($_REQUEST); print "</pre>\n";

y el de insertar es el que ha visto que recibe del de administrar
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 Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insertar valores tabla mediante php pdo

Publicado por Alejandro (839 intervenciones) el 15/02/2022 16:13:57
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
En tu formulario todos los elementos se crean con el mismo name por eso al enviarlo solo se va el último grupo. Agrega [] para que sean manejados como arreglos.
1
<td> <input type='text' name='id[]' value='<?php echo $libro2->getId()?>'></td>

Al recibirlos iteras para registrarlos uno a uno.
1
2
3
4
5
for($i=0, $t=count($_POST['nombre']); $i<$t; $i++){
    $libro2->setNombre($_POST['nombre'][$i]);
    //...
    $crud->asistencia($libro2);
}
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

insertar valores tabla mediante php pdo

Publicado por JULIAN (26 intervenciones) el 16/02/2022 14:37:34
muchas gracias por tu respuesta, pero me da un error al recibir los datos.


Imagenlwp

lo he puesto así en el php administraer_libro.php

}elseif(isset($_POST['asistencia'])){

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

$libro2->setNombre($_POST['nombre'][$i]);
$libro2->setApellidos($_POST['apellidos'][$i]);
// $libro->setAnio_nacimiento($_POST['fecha']);

$libro2->setEstado($_POST['estado'][$i]);
$libro2->setId($_POST['id'][$i]);
$libro2->setFecha($_POST['date'][$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>';

print "<pre>"; print_r($_REQUEST); print "</pre>\n";



el CODIGO QUE INSERTA LOS DATOS ESTA BIEN?? LO DEJO DE ESTA MANERA??

// método para insertar asistencia, recibe como parámetro un objeto de tipo libro
public function asistencia($libro2){
$db=Db::conectar();
// $db->beginTransaction();
// $asistencialibros=[];
$insert=$db->prepare('INSERT INTO asistencia values (NULL,:nombre,:apellidos,:estado,:id, :date)');
// foreach ($libro as $libro2) {



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

$insert->bindvalue('estado',$libro2->getEstado());
$insert->bindvalue('id',$libro2->getId());
$insert->bindvalue('date',$libro2->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
sin imagen de perfil

insertar valores tabla mediante php pdo

Publicado por JULIAN (26 intervenciones) el 16/02/2022 15:02:00
mira he puesto el for así;

for($i=0, $t="7"; $i<$t; $i++){

y mira lo que me inserta, la primera letra de cada bloque pero del último registro. yo creo que el problema esta en el form que solo manda el ultimo registro.



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

insertar valores tabla mediante php pdo

Publicado por Alejandro (839 intervenciones) el 16/02/2022 16:12:48
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
No alcanzo o a leer los errores, pero por lo que comentas es obvio que no estas recibiendo el array y por eso da error count().

Como anteriormente te mencione, a los elementos del formulario debes agregar en los names "[]".
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

insertar valores tabla mediante php pdo

Publicado por JULIAN (26 intervenciones) el 17/02/2022 07:38:08
Imagen245454

ya he puesto en el form los array.

body>
<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>Asistencia</td>

</head>
<body>

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


<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>


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

<input type='submit' value='Guardar' name="guardar">

<a href="index.php">Volver</a>
</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
0
Comentar
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insertar valores tabla mediante php pdo

Publicado por Alejandro (839 intervenciones) el 17/02/2022 16:32:01
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Mira en el inspector que es lo que esta enviando la solicitud.
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

insertar valores tabla mediante php pdo

Publicado por JULIAN (26 intervenciones) el 18/02/2022 07:25:29
Al final me ha funcionado poniendo así el código donde se recibe los datos del form en la página adminsitrar.

}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->setEstado($_POST['estado'][$i]);
$libro2->setId($_POST['id'][$i]);
$libro2->setFecha($_POST['date']);

$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";
}
}
// //header('Location: most




MUCHAS GRACIAS. POR TU AYUDA.

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