AJAX - recorrer tabla con jquery para insertar registros

 
Vista:
sin imagen de perfil
Val: 20
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

recorrer tabla con jquery para insertar registros

Publicado por giuli (11 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 Vainas
Val: 47
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

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
sin imagen de perfil
Val: 20
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

recorrer tabla con jquery para insertar registros

Publicado por giuli (11 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
Val: 47
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

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
sin imagen de perfil
Val: 20
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

recorrer tabla con jquery para insertar registros

Publicado por giuli (11 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
sin imagen de perfil
Val: 20
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

recorrer tabla con jquery para insertar registros

Publicado por giuli (11 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
Val: 47
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

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
sin imagen de perfil
Val: 20
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

recorrer tabla con jquery para insertar registros

Publicado por giuli (11 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
Val: 47
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

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