AJAX - recorrer tabla con jquery para insertar registros

   
Vista:

recorrer tabla con jquery para insertar registros

Publicado por giuli (9 intervenciones) el 05/08/2016 19:03:18
hola amigos tengo una tabla html:
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
<form action="" method="post" id="listado">
  <section id="seccion">
 
            <table width="100%" id="listaalumnos">
            <tr>
 
                <td width="25%" id="titulocolumna">Nombre</td>
 
                <td width="25%" id="titulocolumna">Apellido</td>
                <td width="10%" id="titulocolumna">Entera</td>
                <td width="10%"id="titulocolumna">LT 1/4</td>
                <td width="10%"id="titulocolumna">LT 1/2</td>
                <td width="10%"id="titulocolumna">RA 1/4</td>
                <td width="10%"id="titulocolumna">RA 1/2</td>
            </tr>
 
            <?php
            if (isset($rsalumnos) && $rsalumnos!=null){
              $total=count($rsalumnos);
              $i=0;
                        foreach($rsalumnos as $alumno){$i++; ?><tr class="fila">
              <div id="$i"><input type="hidden" size="0%" name="idalu"value="<?php echo $alumno['idalumno'];?>"/>
               <td> <?php echo $alumno['nombre'];?></td>
               <td> <?php echo $alumno['apellido']; ?></td>
               <td> <input type="radio" value="1" name="<?php echo $i;?>" id="i1" /></td>
               <td> <input type="radio" value="0.25" name="<?php echo $i;?>" id="i2" /></td>
               <td> <input type="radio" value="0.5" name="<?php echo $i;?>" id="i3"/></td>
               <td> <input type="radio" value="0.25" name="<?php echo $i;?>" id="i4"/></td>
               <td> <input type="radio" value="0.5" name="<?php echo $i;?>" id="i5"/></td>
               </tr>
               <?php }}?>
            </div>
            </table>
 
       </section>
        <input type="submit" name="Actualizar"/>
 
 </form>

tengo el nombre y apellido de un alumno, y en un campo hidden el id. Pero tengo 5 radiobuttons donde, de acuerdo a la hora de llegada es el valor de la inasistencia, debo chequear en cada registro como esta marcado el alumno.
entonces intento usar el foreach:

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
$("#Actualizar").click(function ()
    {
        $("#tabla tbody tr").each(function (index)
        {
            var idalu,tf;
            $(this).children("td").each(function (index2)
            {
                switch (index2)
                {
                    case 0: idalu = $(this).text();
                            break;
                    case 1: tf = $(this).val();
                            break;
 
                }
                $(this).css("background-color", "#ECF8E0");
            })
           $.ajax({
            url: "consultaInasistencias.php?tf=tf",
            type; 'post',
            data: $("#listado").serialize(),
            success: function(result){
                    $("#div1").html(result);
    }});
        })
 
    })
});
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 xve

recorrer tabla con jquery para insertar registros

Publicado por xve (167 intervenciones) el 05/08/2016 21:22:56
Hola Giuli, no se muy bien que problema tienes, pero aquí tienes un ejemplo con varias maneras de obtener los valores de un radio
http://www.lawebdelprogramador.com/codigo/JQuery/2345-Ejemplo-de-utilizar-jquery-con-radio-buttons.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 Vainas

recorrer tabla con jquery para insertar registros

Publicado por Vainas (71 intervenciones) el 06/08/2016 12:10:55
Buenas:

Mucho mal te das cuando puedes usar una clase para todos los formularios y dentro de el usar this. Te dejo un ejemplo aqui:

http://www.lawebdelprogramador.com/codigo/JQuery/3622-Enviar-formularios-independientes-en-jquery.html

Espero que sirva. Es rapido y no es necesario un foreach o each.

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
Imágen de perfil de Vainas

recorrer tabla con jquery para insertar registros

Publicado por Vainas (71 intervenciones) el 06/08/2016 12:16:49
Me he liado con otro comentario pero tu caso es muy parecido.

El tema es que uses serialize o serializeArray. A los radio dales un nombre con relaccion al alumno, id o apellidos o todo junto y asi sabes cuando haces un serialize a que Alumno te estas refiriendo.

Cuando haces:

1
$('.formularios').submit(function(event){ ....

todo lo que sea $(this) dentro de esa funcion se refiere al formulario actual al que has hecho click

Espero que sirva sino preparo un codigo.

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

recorrer tabla con jquery para insertar registros

Publicado por giuli (9 intervenciones) el 06/08/2016 20:21:35
El tema es que uses serialize o serializeArray. A los radio dales un nombre con relaccion al alumno, id o apellidos o todo junto y asi sabes cuando haces un serialize a que Alumno te estas refiriendo.

como veras hago un echo de la variable con la que itero el array de alumnos.:

1
<td> <input type="radio" value="1" name="<?php echo $i;?>" id="i1" /></td>

lo que no se es como obtener el valor para cada fila y mandarlo a php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
include ("../../PHP/Conexion.php");
$conectar = conexionBD();
 
    $fecha=date("20y-m-d");
 
 
            $tipo=$_POST['tr'];
            $idalumno=$alumno['idalu'];
            $sqlinasistencias="INSERT INTO inasistencia (fecha,idtipoinasistencia,idalumno)";
            $sqlinasistencias.=" VALUES ('".$fecha."',".$tipo.",";
            $sqlinasistencias.=$idalumno.");";
 
            $query=insert($conectar,$sqlinasistencias);
 
echo $sqlinasistencias;

de todas formas muchas 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 Vainas

recorrer tabla con jquery para insertar registros

Publicado por Vainas (71 intervenciones) el 06/08/2016 21:13:07
Buenas de nuevo:

1
<td> <input type="radio" value="1" name="alumno-<?php echo $i;?>" id="i1" /></td>

Esto va a dar algo asi al cliente

1
2
3
4
5
6
7
<td> <input type="radio" value="1" name="alumno-1" id="i1" /></td>
</tr>
...
<tr>
<td> <input type="radio" value="1" name="alumno-2" id="i1" /></td>
</tr>
....

en tu php:

1
$mivariable =$_POST['alumno-1'];

Suponiendo que cada alumno pueda seleccionar un solo checkbox de los 4

Espero que ayude.

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

recorrer tabla con jquery para insertar registros

Publicado por giuli (9 intervenciones) el 07/08/2016 17:29:38
al final parece ser que no hace falta ajax...
estuve intentando asi:
pero obtener falta devuelve cero siempre...por eso puse los echos.. para ver que devuelven las variables
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
function obtenerFalta($i){
                if (isset($_POST['alumno'.$i])){
                    $valor=$_POST['alumno'.$i];
                }else{
                    // asistio
                    $valor=0;
                }
             return $valor;
            }
 
if (isset($_POST['Actualizar'])){
   for ($i=0;$i<count($rsalumnos);$i++){
    $fecha=date("20y-m-d");
    echo $fecha;
            $tipo=obtenerFalta($i);
            echo $tipo;
            echo $i;
            if ($tipo!=0){
 
             $idalumno=$_POST['idalu'];
            $sqlinasistencias="INSERT INTO inasistencia (fecha,idtipoinasistencia,idalumno)";
            $sqlinasistencias.=" VALUES ('".$fecha."',".$tipo.",";
            $sqlinasistencias.=$idalumno.");";
             echo $sqlinasistencias;
            $query=insert($conectar,$sqlinasistencias);
            if ($query==true){
                $msj="asdfas";
            }else{
                $msj=$sqlinasistencias;
            }
            }
            }
            }
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

recorrer tabla con jquery para insertar registros

Publicado por giuli (9 intervenciones) el 07/08/2016 18:17:38
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(document).ready(function(){
 $("#Actualizar").click(function(){
 
 var url = "insertar.php"; // El script a dónde se realizará la petición.
    $.ajax({
           type: "POST",
           url: url,
           data: $("#listado").serialize(), // Adjuntar los campos del formulario enviado.
           success: function(data)
           {
               $("#respuesta").html(data); // Mostrar la respuestas del script PHP.
           }
         });
 
    return false; // Evitar ejecutar el submit del formulario.
 });
});
hice un archivo insertar.php, el que llamo arriba:

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
include ("../../PHP/Conexion.php");
$conectar = conexionBD();
function obtenerFalta($i){
                if (isset($_POST['alumno'.$i])){
                    $valor=$_POST['alumno'.$i];
                }else{
                    // asistio
                    $valor=0;
                }
             return $valor;
            }
foreach($alumno as $alu){
    $fecha=date("20y-m-d");
            $tipo=obtenerFalta($i);
 
            if ($tipo!=0){
 
             $idalumno=$_POST['idalu'];
            $sqlinasistencias="INSERT INTO inasistencia (fecha,idtipoinasistencia,idalumno)";
            $sqlinasistencias.=" VALUES ('".$fecha."',".$tipo.",";
            $sqlinasistencias.=$idalumno.");";
             echo $sqlinasistencias;
            $query=insert($conectar,$sqlinasistencias);
            if ($query==true){
                $msj="asdfas";
            }else{
                $msj=$sqlinasistencias;
            }
            }else{
                $msj="no hay inasistencias";
            }
            }
            echo $msj;
?>

el problema que tengo ahora es obtener el total de alumnos para recorrer la tabla. aparentemente el total no llega, el vector de la consulta tampoco..sino podria hacer el each en jquery y para cada registro llamar a insertar..-
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 Vainas

recorrer tabla con jquery para insertar registros

Publicado por Vainas (71 intervenciones) el 07/08/2016 19:01:14
Yo creo que si haces esto:

1
$_POST['alumno'.$i];

En tu formulario tendras esto:

1
<input type="radio" value="1" name="alumno1" id="i1" />

Sino pues esa es la razon de por que no obtienes el valor.

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

recorrer tabla con jquery para insertar registros

Publicado por giuli (9 intervenciones) el 07/08/2016 19:23:17
eso funciona correctamente..alumno1, alumno2..pero necesito iterar de 0 al total de alumnos en la grilla. y tomar el radio seleccionado en cada row.

como lo harias?
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 Vainas

recorrer tabla con jquery para insertar registros

Publicado por Vainas (71 intervenciones) el 07/08/2016 19:34:12
Para obtener el total de alumnos de una forma limpia yo lo haria con arrays. Partiendo de que envias esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<form action="" method="post" class="formularios" id="listado1">
		<input type="hidden" name="alumno[]" value="id-alumno-1"/>
        <div>Nombre 1</div>
        <div>Apellido 1</div>
		<input type="radio" value="1" name="radio1" id="i1" />
		<input type="radio" value="0.25" name="radio1" id="i2" />
		<input type="radio" value="0.5" name="radio1" id="i3"/>
		<input type="radio" value="0.25" name="radio1" id="i4"/>
		<input type="radio" value="0.5" name="radio1" id="i5"/>
Otro alumno
    <input type="hidden" name="alumno[]" value="id-alumno-2"/>
    <div>Nombre 2</div>
    <div>Apellido 2</div>
		<input type="radio" value="1" name="radio2" id="i1" />
		<input type="radio" value="0.25" name="radio2" id="i2" />
		<input type="radio" value="0.5" name="radio2" id="i3"/>
		<input type="radio" value="0.25" name="radio2" id="i4"/>
		<input type="radio" value="0.5" name="radio2" id="i5"/>
    <input type="submit" name="Actualizar"/>
</form>

Fijate que el campo hidden en su name ha cambiado a alumno[]. En el php solo hay que hacer:

1
2
3
4
5
$alumno = $_POST['alumno'];
 
foreach( $alumno as $key => $id ) {
  print "El alumno con id ".$n." ha seleccionado ".$_POST['radio'.$key+1].", </br>";
}

No tengo para probarlo pero es algo asi.

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