Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/05/2020, 09:50
tuadmin
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Actualizar varios campos de una tabla de manera incremental

Cita:
Iniciado por mensajeescrito Ver Mensaje
Hola amigas/os, verán tengo un problema a ver si me pueden ayudar.

Estoy intentando, sin exito, poder actualizar con el "update" de mysql, un mismo campo

que está en varias filas de una misma tabla es decir algo asi:

tabla llamada accesos:

campo_id, campo_numero_acceso

El campo llamado "campo_numero_acceso", debe ser incremetal, es decir

en la primera fila de la tabla debe valer 1, en la segunda fila de la tabla 2, .....etc

pero el código que tengo no me funciona bien, ya que me rellena el campo "campo_numero_acceso" en todas las filas con el mismo valor osea 5 en vez de rellenarmelos con:
1
2
3
4
5

Miren este es el código que tengo:

Código PHP:
Ver original
  1. for ($i=1; $i <= 5; $i++)
  2.  
  3.     {
  4.                 $sql = "UPDATE accesos SET numero_acceso=$i";
  5.  
  6.         mysqli_query($con,$sql) or die (mysqli_error($con));
  7.     }

Gracias de antemano.
eso deberia hacerse al crear la FILA NO AL HACER UN UPDATE, pero bueno tendras tus razones, hacerlo solo con el Comando UPDATE no te valdra, por lo que te tocara hacerlo desde un BUCLE SQL o un BUCLE PHP, tu eliges, si es algo que haras constantemente o solo para reparar, si fuese constantemente lo mas LOGICO seria que crees un STORED PROCEDURE en MYSQL con los parametros y criterios necesarios y con ello estaria listo

ahora del modo PHP, el UPDATE trabaja bajo criterios, y no estas dando ningun criterio o filtro a tu UPDATE por eso esta poniendo a todos los que coinciden el mismo valor

Código PHP:
$sql "UPDATE accesos SET numero_acceso=$i WHERE id=1" 
$sql "UPDATE accesos SET numero_acceso=$i WHERE id=2" 
$sql "UPDATE accesos SET numero_acceso=$i WHERE id=3" 
y lo mejor seria que hagas un SELECT primero y con ese select Obtienes el ID de cada

Código psuedocodigo:
Ver original
  1. var $i = 1;
  2. for ($fila in sql->fetchAll('SELECT * FROM accessos '))
  3.  
  4. {
  5.       $sql = "UPDATE accesos SET numero_acceso=$i WHERE id=" . $fila['id'];
  6.  
  7.       sql->execute($con,$sql) or die (mysqli_error($con));
  8.       $i++;
  9. }
espero puedas comprender la logica
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9