Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/05/2020, 03:58
mensajeescrito
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años, 2 meses
Puntos: 5
Respuesta: Actualizar varios campos de una tabla de manera incremental

Hola, lo primero de todo agradecer a todos por vuestras ayudas.

Decir que ya he encontrado la solución, razón por la cual mi tardanza en responder.

Paso a explicar:

Son varias filas con un campo en cada una de ellas llamado "numero_acceso".

debo utilizar el update de sql , por que en mi caso si borro alguna fila, el resto de filas deben reenumerarse es decir si tengo

1
2
3
y borro el 2

quedaría
1
3

pero con este código que os voy a poner que es la solución, quedaría
1
2

Una vez dicho esto pongo el código:

Código PHP:
Ver original
  1. // Conecto con la bd
  2.         $con = $this->ConectarBbdd();
  3.  
  4.  
  5. // Selecciono los ids de cada una de las filas
  6.         $sql_ficheros = "SELECT id FROM tabla_accesos_ficheros";
  7.  
  8.         $res_accesos = mysqli_query($con,$sql_ficheros) or die ('Lo siento no se han mostrado los datos.' . mysqli_error($con));
  9.  
  10.  
  11. // Mediante dos bucles anidados, el primer foreach servirá para obtener las keys(claves) de dicho bucle que servirán para usarlas como los números ordenados que necesito para cada uno de los accesos
  12.  
  13.         foreach($res_accesos as $nums_accesos=>$accesos)
  14.  
  15.             {
  16.  
  17. // Este segundo foreach servirá para obtener los ids de cada una de las filas
  18.  
  19. // para crear la sentencia update de sql
  20.  
  21.                 foreach ($accesos as $id)
  22.  
  23.                     {
  24. // La siguiente linea suma 1, ya que un array , el primer valor, su key (clave), vale cero.
  25.  
  26. // Y claro las id en una tabla empiezan por uno y no por cero. por eso se suma 1.
  27.  
  28.                         $incremento_nums_accesos = ($nums_accesos+1);
  29.  
  30.  
  31. // La siguiente linea es para colocar 2 ceros delante del "numero de acceso", ya que el numero de acceso debe tener 3 digitos, por ejemplo si el numero de acceso es 5, pues quedaría 005.
  32.  
  33.                         $formato_nums_accesos = str_pad($incremento_nums_accesos, 3, "00", STR_PAD_LEFT);  
  34.  
  35.  
  36. // Y aquí estaría la sentencia update sql, que actualiza cada campo de cada fila de manera 001,002,003,004,005
  37. //y que si borro por ejemplo 003 , se actualizaría quedando así:
  38.  
  39. //001,002,003,004
  40.  
  41.                         $sql = "UPDATE tabla_accesos_ficheros SET numero_acceso='".$formato_nums_accesos."' WHERE id=".$id;
  42.  
  43.  
  44.                         mysqli_query($con,$sql) or die (mysqli_error($con));
  45.                     }
  46.             }

Espero que se entienda bien y que sirva a quien necesite algo parecido a esto.

Si pudieran decirme, comentarme que les parece el código, se los agradecería mucho.

Un cordial saludo a todos.