Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Guardar MUCHOS registros y datos en MySQL

Estas en el tema de Guardar MUCHOS registros y datos en MySQL en el foro de PHP en Foros del Web. Tengo el siguiente array $_GET, que contiene otros arrays (33 en este caso) y que cada uno tiene 10 ítems en este caso, siendo estas ...
  #1 (permalink)  
Antiguo 05/01/2016, 12:08
 
Fecha de Ingreso: diciembre-2014
Ubicación: Madrid
Mensajes: 274
Antigüedad: 9 años, 4 meses
Puntos: 5
Guardar MUCHOS registros y datos en MySQL

Tengo el siguiente array $_GET, que contiene otros arrays (33 en este caso) y que cada uno tiene 10 ítems en este caso, siendo estas dos cantidades variables y necesito generar las consultas correspondientes y guardarlas. Tengo perfilado el código (abajo lo dejo) y, por favor, decidme qué va mal porque me genera un bucle infinito. Gracias.

Cita:
Array ( [ALM1] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM2] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM3] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM4] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM5] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM6] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM7] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM8] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM9] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM10] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM11] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM12] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM13] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM14] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM15] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM16] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM17] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM18] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM19] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM20] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM21] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM22] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM23] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM24] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM25] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM26] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM27] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM28] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM29] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM30] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM31] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM32] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) [ALM33] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => ) )
Código PHP:
Ver original
  1. <?php
  2. foreach($_GET['ALM'.$a] as $Calificaciones){
  3.     $Query = "UPDATE `CuadernoCalificaciones` ";
  4.     $i = 0;
  5.     while ($i <= count($_GET['ALM'.$a])) {
  6.         $Query .= " EJEMPLO1";
  7.     }   $Query .= " WHERE `NumeroIdentificacionAlumno` = '".$a."'";
  8. }
  9. echo $Query;
  10. ?>
  #2 (permalink)  
Antiguo 05/01/2016, 12:48
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Guardar MUCHOS registros y datos en MySQL

El valor de $i nunca incrementa, por lo tanto, siempre se cumplirá la condición y el bucle no se detendrá.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 05/01/2016, 13:18
 
Fecha de Ingreso: diciembre-2014
Ubicación: Madrid
Mensajes: 274
Antigüedad: 9 años, 4 meses
Puntos: 5
Respuesta: Guardar MUCHOS registros y datos en MySQL

Vale pero, ¿cómo se podría generar ese bucle para que guarde todo en MySQL?
  #4 (permalink)  
Antiguo 05/01/2016, 20:33
Avatar de carlillos  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 245
Antigüedad: 17 años, 2 meses
Puntos: 21
Respuesta: Guardar MUCHOS registros y datos en MySQL

Para recorrer todos los arrays puedes hacer un bucle para las calificaciones dentro del bucle de los alumnos.

Código PHP:
foreach($_GET as $alumno => $calificaciones) {
    
    foreach(
$calificaciones as $calificacion) {
    
        echo 
"Alumno: $alumno | Calificación: $calificacion<br>";
        
    }
    

La variable "$alumno" tiene el id de alumno y "$calificacion" la calificación. Con esas variables puedes generar el query para insertar los datos en tu tabla.

Saludos.
  #5 (permalink)  
Antiguo 06/01/2016, 02:11
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Guardar MUCHOS registros y datos en MySQL

Adicionalmente a lo que te han dicho, puedes armar múltiples cadenas SQL separadas por puntos y comas y ejecutarlas todas a la vez con la función mysqli_multi_query().

Sería algo similar a esto:
Código PHP:
Ver original
  1. $consultas = [];
  2.  
  3. foreach (/* ... */){
  4.     $consulta = 'UPDATE [tabla] SET';
  5.     $pares = [];
  6.     foreach (/* ... */){
  7.         $pares[]= '[campo] = [valor]';
  8.     }
  9.     $consulta .= implode(',', $pares) . ' WHERE [condición]';
  10.     $consultas[] = $consulta;
  11. }
  12.  
  13. if (mysqli_multi_query($conexion, implode(';', $consultas))){
  14.     echo 'Las consultas se ejecutaron exitosamente';
  15. }

Necesitas un array para almacenar las consultas, una variable para almacenar cada consulta que luego añadirás al array y un segundo array para almacenar los pares campo y valor a actualizar. Con la función implode() puedes unir a todos los elementos de un array mediante un carácter, convirtiéndose todo en una cadena de texto.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: muchos, mysql, registros, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:40.