Foros del Web » Programando para Internet » PHP »

Actualizar varios registros a la vez (BD: MySQL)

Estas en el tema de Actualizar varios registros a la vez (BD: MySQL) en el foro de PHP en Foros del Web. Hola a todos! Tengo este codigo, que me muestra todos los registros de una base llamada productos, a modo formulario. Código PHP: <?PHP  $result  =  ...
  #1 (permalink)  
Antiguo 04/03/2006, 14:42
Avatar de 2D6
2D6
 
Fecha de Ingreso: enero-2006
Ubicación: Posadas, Misiones
Mensajes: 60
Antigüedad: 11 años, 11 meses
Puntos: 4
Actualizar varios registros a la vez (BD: MySQL)

Hola a todos!
Tengo este codigo, que me muestra todos los registros de una base llamada productos, a modo formulario.
Código PHP:
<?PHP 
$result 
mysql_query ("SELECT * FROM he_productos WHERE categ='Motherboards' AND rubro='hard'");
$numeroRegistros=mysql_num_rows($result);
while(
$r=mysql_fetch_array($result))
{
   
$idproducto=$r["idproducto"];
   
$desc=$r["desc"];
   
$categ=$r["categ"];
   
$preciop=$r["preciop"];
   
$preciog=$r["preciog"];
   
$novedad=$r["novedad"];
   
$oferta=$r["oferta"];
   
$mostrar=$r["mostrar"];
   
$garantia=$r["garantia"];
   
$masinfo=$r["masinfo"];
   
$rubro=$r["rubro"];
   
$fechai=$r["fechai"];
   
$marca=$r["marca"];
   
$img=$r["img"];
   
echo 
"<table width='100%' border='0' cellpadding='3' cellspacing='2'>\n";
  echo 
"<tr>\n";
    echo 
"<td colspan='3' bgcolor='#000000'><input name='desc' type='text' id='desc' value='$desc' size='60' /></td>\n";
    echo 
"<td width='43%' bgcolor='#000000'><table width='100%' border='0' cellspacing='0' cellpadding='0'>\n";
      echo 
"<tr>\n";
        echo 
"<td bgcolor='#000000'><div align='center'>Precio\n";
          echo 
"publico:\n";
          echo 
"<input name='preciop' type='text' id='preciop' value='$preciop' size='7' />\n";
        echo 
"</div></td>\n";
        echo 
"<td bgcolor='#000000'><div align='center'>Precio gremio:\n";
          echo 
"<input name='preciog' type='text' id='preciog' value='$preciog' size='7' />\n";
        echo 
"</div></td>\n";
      echo 
"</tr>\n";    
    echo 
"</table></td>\n";
  echo 
"</tr>\n";
  echo 
"<tr>\n";
    echo 
"<td colspan='2' bgcolor='#000000'>\n";
      echo 
"Categoria: <input name='categ' type='text' id='categ' value='$categ' size='20' />\n";
    echo 
"</div></td>\n";
    echo 
"<td width='29%' bgcolor='#000000'><div align='center'>Garantia</div></td>\n";
    echo 
"<td rowspan='4' bgcolor='#000000'><div align='center'>Mas Info:<br />\n";
            echo 
"<textarea name='masinfo' cols='40' rows='4' id='masinfo'>$masinfo</textarea>\n";
            echo 
"<br />\n";
            echo 
"<input name='idproducto' type='hidden' id='idproducto' value='$idproducto' />\n";
            echo 
"<input name='rubro' type='hidden' id='rubro' value='$rubro' />\n";
            echo 
"<input name='fechai' type='hidden' id='fechai' value='$fechai' />\n";
            echo 
"<input name='fechaa' type='hidden' id='fechaa' value='date (&quot;d-m-y&quot;);' />\n";
            echo 
"<input name='marca' type='hidden' id='marca' value='$marca' />\n";
            echo 
"<br />\n";
            echo 
"<br />\n";
    echo 
"</div></td>\n";
  echo 
"</tr>\n";
  echo 
"<tr>\n";
    echo 
"<td width='9%' height='20' bgcolor='#000000'><div align='center'>&iquest;En Stock? </div></td>\n";
    echo 
"<td width='19%' bgcolor='#000000'><div align='center'>\n";
      echo 
"<input name='mostrar' type='text' id='mostrar' value='$mostrar' size='5' />\n";
    echo 
"</div></td>\n";
    echo 
"<td height='20' bgcolor='#000000'><div align='center'>\n";
      echo 
"<input name='garantia' type='text' id='garantia' value='$garantia' size='20' />\n";
    echo 
"</div></td>\n";
  echo 
"</tr>\n";
  echo 
"<tr>\n";
    echo 
"<td height='20' bgcolor='#000000'><div align='center'>&iquest;Es novedad? </div></td>\n";
    echo 
"<td height='20' bgcolor='#000000'><div align='center'>\n";
      echo 
"<input name='novedad' type='text' id='novedad' value='$novedad' size='5' />\n";
    echo 
"</div></td>\n";
    echo 
"<td height='20' bgcolor='#000000'><div align='center'>Imagen</div></td>\n";
  echo 
"</tr>\n";
  echo 
"<tr>\n";
    echo 
"<td height='20' bgcolor='#000000'><div align='center'>&iquest;Es oferta? </div></td>\n";
    echo 
"<td height='20' bgcolor='#000000'><div align='center'>\n";
      echo 
"<input name='oferta' type='text' id='oferta' value='$oferta' size='5' />\n";
    echo 
"</div></td>\n";
    echo 
"<td height='20' bgcolor='#000000'><div align='center'>\n";
      echo 
"<input name='img' type='text' id='img' value='$img' size='20' />\n";
    echo 
"</div></td>\n";
  echo 
"</tr>\n";
echo 
"</table>\n";
echo 
"<br>\n";
}
?>
Esto funciona perfecto, como yo lo necesito...ahora mi problema es al guardarlos. Lo hice (sabiendo que no iba a funcionar pero por curioso que soy nomas) de la manera clasica, con un update. Obviamente me actualizo solo el ultimo registro.
Bueno, haciendola corta, como hago para actualizar todos los registros a la vez?

Muchas gracias!
  #2 (permalink)  
Antiguo 04/03/2006, 15:23
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Haz la consulta dentro del while {}

Código PHP:
<? $consulta="UPDATE tabla SET valor1 = '$valor1' , valor2 = '$valor2'"

mysql_query($consulta); ?>
pon todos los valores separados por comas.

  #3 (permalink)  
Antiguo 04/03/2006, 15:26
Avatar de 2D6
2D6
 
Fecha de Ingreso: enero-2006
Ubicación: Posadas, Misiones
Mensajes: 60
Antigüedad: 11 años, 11 meses
Puntos: 4
Me parece que no se entendio mi pregunta, esa consulta que puse en mi primer mensaje tiene como resultado unos 54 registros, cada uno con su titulo, preciop, preciog, etc.
Lo que yo quiero es poder guardar todos los cambios que haga en los 54 registros de una vez.

Gracias!
  #4 (permalink)  
Antiguo 04/03/2006, 15:31
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Ah, pues no hagas SELECT. Haz el formulario, y que al hacer POST lleve a la consulta que te he dicho
  #5 (permalink)  
Antiguo 04/03/2006, 16:19
Avatar de 2D6
2D6
 
Fecha de Ingreso: enero-2006
Ubicación: Posadas, Misiones
Mensajes: 60
Antigüedad: 11 años, 11 meses
Puntos: 4
Perdon pero sigo sin entender....
yo tengo un form con 54 idproductos y sus respectivos datos, en la pagina guardar cambios hago un update que este dentro de un while? eso es todo?
  #6 (permalink)  
Antiguo 04/03/2006, 16:36
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Lo que quiero decir es que no hagas 54 formularios Haces uno, con los campos vacíos (sin asignar valores) que puedas rellenar. Entonces, al accionar éste formulario que haga un UPDATE como el que te he dicho arriba. Al no indicarse una fila concreta en la consulta, supongo que actualizará los 54 con los valores asignados.

Lo del while olvídalo, formaba parte del SELECT, y a eso ya hemos dicho que no.

¿Mejor ahora?
  #7 (permalink)  
Antiguo 04/03/2006, 19:10
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 11 años, 9 meses
Puntos: 0
Paginacion

la alternarnativa es hacer paginacion con los registros , en cada pagina muestras el formulario para modificar un registro, y asi es mas rapido el envio
  #8 (permalink)  
Antiguo 04/03/2006, 22:03
Avatar de 2D6
2D6
 
Fecha de Ingreso: enero-2006
Ubicación: Posadas, Misiones
Mensajes: 60
Antigüedad: 11 años, 11 meses
Puntos: 4
Estoy mal, a ver si me pueden ayudar con esto.
La primer pagina es esta :
Código PHP:
<?PHP 
echo "<form id='form1' name='form1' method='post' action='guardar_hard.php'>\n";
$result mysql_query ("SELECT * FROM he_productos WHERE rubro='hard' ORDER BY categ");
$numeroRegistros=mysql_num_rows($result);
while(
$r=mysql_fetch_array($result))
{
   
$idproducto=$r["idproducto"];
   
$desc=$r["desc"];
   
$categ=$r["categ"];
   
$preciop=$r["preciop"];
   
$preciog=$r["preciog"];
   
$novedad=$r["novedad"];
   
$oferta=$r["oferta"];
   
$mostrar=$r["mostrar"];
   
$garantia=$r["garantia"];
   
$masinfo=$r["masinfo"];
   
$rubro=$r["rubro"];
   
$fechaa=$r["fechaa"];
   
$fechai=$r["fechai"];
   
$marca=$r["marca"];
   
$img=$r["img"];
 
echo 
"<table width='100%' border='0' cellpadding='3' cellspacing='2'>\n";
  echo 
"<tr>\n";
    echo 
"<td colspan='3' bgcolor='#000000'><input name='desc' type='text' id='desc' value='$desc' size='60' /></td>\n";
    echo 
"<td width='43%' bgcolor='#000000'><table width='100%' border='0' cellspacing='0' cellpadding='0'>\n";
      echo 
"<tr>\n";
        echo 
"<td bgcolor='#000000'><div align='center'>Precio\n";
          echo 
"publico:\n";
          echo 
"<input name='preciop' type='text' id='preciop' value='$preciop' size='7' />\n";
        echo 
"</div></td>\n";
        echo 
"<td bgcolor='#000000'><div align='center'>Precio gremio:\n";
          echo 
"<input name='preciog' type='text' id='preciog' value='$preciog' size='7' />\n";
        echo 
"</div></td>\n";
      echo 
"</tr>\n";    
    echo 
"</table></td>\n";
  echo 
"</tr>\n";
  echo 
"<tr>\n";
    echo 
"<td colspan='2' bgcolor='#000000'>\n";
      echo 
"Categoria: <input name='categ' type='text' id='categ' value='$categ' size='20' />\n";
    echo 
"</div></td>\n";
    echo 
"<td width='29%' bgcolor='#000000'><div align='center'>Garantia</div></td>\n";
    echo 
"<td rowspan='4' bgcolor='#000000'><div align='center'>Mas Info:<br />\n";
            echo 
"<textarea name='masinfo' cols='40' rows='4' id='masinfo'>$masinfo</textarea>\n";
            echo 
"<br />[ borrar producto ]\n";
            echo 
"<input name='idproducto' type='hidden' id='idproducto' value='$idproducto' />\n";
            echo 
"<input name='fechaa' type='hidden' id='fechaa' value='$fechaa' />\n";
            echo 
"<input name='fechai' type='hidden' id='fechai' value='$hoy' />\n";
            echo 
"<input name='rubro' type='hidden' id='rubro' value='$rubro' />\n";
            echo 
"<input name='marca' type='hidden' id='marca' value='$marca' />\n";
            echo 
"<br />\n";
            echo 
"<br />\n";
    echo 
"</div></td>\n";
  echo 
"</tr>\n";
  echo 
"<tr>\n";
    echo 
"<td width='9%' height='20' bgcolor='#000000'><div align='center'>&iquest;En Stock? </div></td>\n";
    echo 
"<td width='19%' bgcolor='#000000'><div align='center'>\n";
      echo 
"<input name='mostrar' type='text' id='mostrar' value='$mostrar' size='5' />\n";
    echo 
"</div></td>\n";
    echo 
"<td height='20' bgcolor='#000000'><div align='center'>\n";
      echo 
"<input name='garantia' type='text' id='garantia' value='$garantia' size='20' />\n";
    echo 
"</div></td>\n";
  echo 
"</tr>\n";
  echo 
"<tr>\n";
    echo 
"<td height='20' bgcolor='#000000'><div align='center'>&iquest;Es novedad? </div></td>\n";
    echo 
"<td height='20' bgcolor='#000000'><div align='center'>\n";
      echo 
"<input name='novedad' type='text' id='novedad' value='$novedad' size='5' />\n";
    echo 
"</div></td>\n";
    echo 
"<td height='20' bgcolor='#000000'><div align='center'>Imagen</div></td>\n";
  echo 
"</tr>\n";
  echo 
"<tr>\n";
    echo 
"<td height='20' bgcolor='#000000'><div align='center'>&iquest;Es oferta? </div></td>\n";
    echo 
"<td height='20' bgcolor='#000000'><div align='center'>\n";
      echo 
"<input name='oferta' type='text' id='oferta' value='$oferta' size='5' />\n";
    echo 
"</div></td>\n";
    echo 
"<td height='20' bgcolor='#000000'><div align='center'>\n";
      echo 
"<input name='img' type='text' id='img' value='$img' size='20' />\n";
    echo 
"</div></td>\n";
  echo 
"</tr>\n";
echo 
"</table>\n";
echo 
"<br>\n";
}
echo (
"Cant. de productos: $numeroRegistros");

echo 
"</p>\n";
  echo 
"<p align='center'>\n";
    echo 
"<input name='Submit' type='submit' class='verde' value='GUARDAR LOS CAMBIOS' />\n";
echo 
"</p>\n";
echo 
"</form>\n";
?>
Esta imprime un form con todos los datos de cada registro
y esta otra:
Código PHP:
<?PHP
include ("../conexion.php");

mysql_query ("UPDATE he_productos SET desc='$desc' , categ='$categ' , preciop='$preciop' , preciog='$preciog' , novedad='$novedad' , oferta='$oferta' , mostrar='$mostrar' , garantia='$garantia' , masinfo='$masinfo' , rubro='$rubro' , fechaa='$fechaa' , fechai='$fechai' , marca='$marca' , img='$img' WHERE idproducto='$idproducto'");

?>
Es la que guardaria los datos, pero no pasa nada!! no guarda ni todos ni ninguno!! Ya lo revise 50 veces y no le encuentro el error :(
Por favor!! estoy desesperado!!!
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:02.