Foros del Web » Programando para Internet » PHP »

editar varios registros en BD

Estas en el tema de editar varios registros en BD en el foro de PHP en Foros del Web. Hola a todos espero y se encuentren bien y gracias por la ayuda de antemano. este es mi codigo: Código PHP: $tot  =  count ( ...
  #1 (permalink)  
Antiguo 19/09/2009, 15:42
 
Fecha de Ingreso: enero-2009
Mensajes: 34
Antigüedad: 15 años, 9 meses
Puntos: 2
editar varios registros en BD

Hola a todos espero y se encuentren bien y gracias por la ayuda de antemano.

este es mi codigo:

Código PHP:
$tot count($_SESSION["listado_id"]);

for (
$i 0$i $tot$i++){
$id $_SESSION["listado_id"][$i];
}

$tot2 count($_SESSION["listado_nm"]);

for (
$i2 0$i2 $tot2$i2++){
$nm $_SESSION["listado_nm"][$i2];
}

include(
"../../config/edit/conexion.php");

$modificador "UPDATE raiz SET nombre = '$nm' WHERE id = '$id'";
$query mysql_query($modificador$link);


Como veran estoy buscando editar los registros de una base de datos, utilizando "2 FOR", cada FOR recorre a su respectivo "$_SESSION" y este trae el listado de los datos que necesito remplazar en la BD, el problema en este codigo es que solo esta editando el ultimo registro que trae en la lista del "$_SESSION", espero haberme explicado.

El codigo que ven es una suma de aprendizajes que e obtenido de esta maravillosa pagina, por lo tanto son bien recibidos sus comentarios y observaciones.
  #2 (permalink)  
Antiguo 19/09/2009, 16:17
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: editar varios registros en BD

La verdad no se me ocurre como. Solo se que puedes modificar un mismo campo con un mismo valor en distintas filas, usando la cláusula WHERE IN.

Ejemplo :

Código PHP:
$query mysql_query("UPDATE raiz SET nombre='un mismo valor para todos' WHERE id IN (1,2,3,4,5,6,7,8,etc)"); 
Haciendo eso, y adaptándolo a lo que ya tienes, serìa algo así.

Código PHP:
$tot count($_SESSION["listado_id"]);

$id_array = array();
for (
$i 0$i $tot$i++){
$id_array[] = $_SESSION["listado_id"][$i];
}

$tot2 count($_SESSION["listado_nm"]);

for (
$i2 0$i2 $tot2$i2++){
$nm $_SESSION["listado_nm"][$i2];
}

include(
"../../config/edit/conexion.php");

$modificador "UPDATE raiz SET nombre = '$nm' WHERE id IN (".implode(','$id_array).")";
$query mysql_query($modificador$link); 
El problema radica en que los nombres, primero son un arreglo, y luego todos deben modificar el mismo campo nombre para cada distinta ID. No puedes poner cientos de veces el mismo campo en la misma consulta.

La única solución que se me ocurre, es meter la consulta a un bucle, lo cual no te recomiendo, pero si no hallas otra solución, pues tendremos que irnos por el mal camino
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 19/09/2009, 16:40
 
Fecha de Ingreso: enero-2009
Mensajes: 34
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: editar varios registros en BD

tienes razon, el problema es que estoy tratando de editar el mismo campo con una sola consulta, como puedo meter la consulta a un bucle, no tengo mucho conocimiento en eso de los bucles, pero con ejemplo minimo que me pongas me sera suficiente para trabajar en ello, tampoco pretendo que hagas mi chamba, mil gracias!
  #4 (permalink)  
Antiguo 19/09/2009, 16:57
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: editar varios registros en BD

A ver, ya que tratas de meter 2 arreglos distintos en una consulta, tendríamos que meter la consulta dentro de 2 bucles anidados para así poder recorrer ambos.

Pero buen. Sería así.

Código PHP:
include("../../config/edit/conexion.php");

$tot count($_SESSION["listado_id"]);
$tot2 count($_SESSION["listado_nm"]);


for (
$i 0$i $tot$i++){
   
$id $_SESSION["listado_id"][$i];
   for (
$i2 0$i2 $tot2$i2++){
         
$nm $_SESSION["listado_nm"][$i2];
         
$modificador "UPDATE raiz SET nombre = '$nm' WHERE id = '$id'";
         
$query mysql_query($modificador$link); 
   }

Insisto, es horrible... imagínate, supon tienes 100 nombres, toda esa consulta se repitiría 100 veces, pero ya que no conozco la solución, no te puedo ayudar más que con esto :(.

Una pregunta, el arreglo de nombres y el arreglo de ID siempre tienen la misma cantidad de elementos o es variable? Si tu respuesta es que siempre tienen la misma cantidad, podríamos eliminar un bucle for.

Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 19/09/2009, 17:01
 
Fecha de Ingreso: enero-2009
Mensajes: 34
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: editar varios registros en BD

ambos arreglos tienen la misma cantidad de elementos. se ve interesante tu codigo, dejame lo checo, que desventaja tengo al que se repita 1000 veces la misma consulta??
  #6 (permalink)  
Antiguo 19/09/2009, 17:09
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: editar varios registros en BD

Cita:
Iniciado por Mikegdl Ver Mensaje
ambos arreglos tienen la misma cantidad de elementos. se ve interesante tu codigo, dejame lo checo, que desventaja tengo al que se repita 1000 veces la misma consulta??
La desventaja es la sobrecarga innecesaria. Podrías colapsar tu sistema si tuvieras miles

Bueno, veamos, modifiquemos el código ya que sabemos que tienen la misma cantidad de elementos.

Código PHP:

$tot 
count($_SESSION["listado_id"]); 
//$tot2 = count($_SESSION["listado_nm"]);  No necesitamos esta linea, ya que con el valor de arriba ya tenemos :P


for ($i 0$i $tot$i++){ 
   
$id $_SESSION["listado_id"][$i]; 
   
$nm $_SESSION["listado_nm"][$i]; 
   
$modificador "UPDATE raiz SET nombre = '$nm' WHERE id = '$id'"
   
$query mysql_query($modificador$link);  

</span></span>

Espero te sirva. Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #7 (permalink)  
Antiguo 19/09/2009, 17:15
 
Fecha de Ingreso: enero-2009
Mensajes: 34
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: editar varios registros en BD

Quedo excelente y solucionado el problema amigo, te lo agredezco muchisimo me sacaste de un problema de 20hrs jajaja un abrazo
  #8 (permalink)  
Antiguo 19/09/2009, 17:50
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: editar varios registros en BD

Cita:
Iniciado por Mikegdl Ver Mensaje
Quedo excelente y solucionado el problema amigo, te lo agredezco muchisimo me sacaste de un problema de 20hrs jajaja un abrazo
Me alegro que te funcionara. Nos vemos
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
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 21:45.