Foros del Web » Programando para Internet » PHP »

Problema con update multiple

Estas en el tema de Problema con update multiple en el foro de PHP en Foros del Web. Saludos, Estoy empezando con php y tengo una duda con respecto a un trabajo que estoy realizando. Necesito editar el campo 'cantidad' y que se ...
  #1 (permalink)  
Antiguo 13/10/2010, 09:25
 
Fecha de Ingreso: octubre-2010
Mensajes: 18
Antigüedad: 14 años, 1 mes
Puntos: 0
Problema con update multiple

Saludos,

Estoy empezando con php y tengo una duda con respecto a un trabajo que estoy realizando. Necesito editar el campo 'cantidad' y que se actualice en todos los registros de la BD al pulsar el boton de actualizar. Necesito que por favor alguien me oriente, con respecto a esto,he buscado diferentes opciones en la red pero sigo confundido. aqui posteo el codigo y un screenshot.



detlistaorden.php

Código:
<?php
//conecta a la bd
$conexion=mysql_connect("localhost","root","");
if(!$conexion){
die("La conexion a la Base de datos fallo" . mysqlerror($conexion));
}
//selecciona la bd
$db_select=mysql_select_db("BD_bd",$conexion);
if (!$db_select){
die("La seleccion de la Base de datos fallo" . mysqlerror($db_select));
}
//query para cualquier verga

//toma variable de pagina anterior
$numero = $_GET['recordID'];
//echo "Has pasado: $numero";


$result=mysql_query("SELECT * FROM pedidos1 where numero='$numero'",$conexion);
if(!$result){
die("el query fallo" . mysqlerror());}
//usando data

while ($row = mysql_fetch_array($result)){
?>Pto Ctrl: <?php echo $row['PTOCTRL'];?> <?php
?>Documento: <?php echo $row['DOCUMENTO'];?><br/><?php
?>Fecha: <?php echo $row['FECHAEMISION'];?><br/><?php
?>Vendedor: <?php echo $row['IDPRV1VENDEDOR'];?><br/><?php
?>Observacion: <?php echo $row['OBSERVACION'];?><br/><?php
?>Cliente: <?php echo $row['IDCLI1'];?> <?php 
?>Atencion:<?php echo $row['ATENCION'];?><br/><?php 
?>Referencia:<?php echo $row['SUREFERENCIA'];?><br/><?php 
?><strong>Base:</strong><?php echo $row['MONTOBASE'];?><br/><?php 
?><strong>IVA:</strong><?php echo $row['MONTOIMPUESTO'];?><br/><?php 
?><strong>Total:</strong><?php //echo $row['SUREFERENCIA'];?><?php 

  }
  
$result1=mysql_query("SELECT * from pedidos2 INNER JOIN articul1 ON pedidos2.idart1=articul1.codigo where pedidos2.numero='$numero'",$conexion);
if(!$result1){
die("el query fallo" . mysqlerror($result1));}

$i = 0;
print "<form name='cantidad' method='post' action='update.php'>";


while ($row1 = mysql_fetch_array($result1)){
    
?>
<table border="1" align="center">
  <tr>
    <td>Item</td>
    <td>Codigo</td>
    <td>Cantidad</td>
    <td>Base</td>
    <td>IVA</td>
    <td>Sub-Total</td>
    <td>Descripcion</td>

  </tr>
  <?php do { 
      $cantidad=$row1['CANTIDAD']
      ?>
    <tr>
     
      <td><?php echo $row1['ITEM']; ?></td>
      <td><?php echo $row1['IDART1']; ?></td>
      <td><input type="text" value="<?php echo $cantidad['$i']; ?>"name="cantidad[$i]" size="2"id="textfield" /></td>
      <td><?php echo $row1['MONTOBASE']; ?></td>
      <td><?php echo $row1['MONTOIMPUESTO']; ?></td>
      <td><?php echo $row1['SUBTOTAL']; ?></td>
      <td><?php echo $row1['DESCRIPCION']; ?></td>
  
    
      
    </tr>
    <?php } while ($row1 = mysql_fetch_assoc($result1)); 
    ++$i;

    }
    ?>
</table>
<br />

<?php
print "<input type='submit' value='actualizar' />";
print "</form>";


//cerrar conexion
mysql_close($conexion);


?>
Update.php

Código:
<?php
//conecta a la bd
$conexion=mysql_connect("localhost","root","");
if(!$conexion){
die("La conexion a la Base de datos fallo" . mysqlerror($conexion));
}
//selecciona la bd
$db_select=mysql_select_db("BD_bd",$conexion);
if (!$db_select){
die("La seleccion de la Base de datos fallo" . mysqlerror($db_select));
}
$tamaño = count($_POST['cantidad']);
//echo $tamaño;

$i = 0;
while ($i < $tamaño) {

$bookinfo= $_POST['cantidad'][$i];
$query = "UPDATE pedidos2 SET CANTIDAD = '$cantidad' WHERE ITEM = '$i'";
$mysql_query($query) or die ("el query fallo" .  mysqlerror($query));");

++$i;
}



//cerrar conexion
mysql_close($conexion);

?>
gracias de antemano
  #2 (permalink)  
Antiguo 13/10/2010, 09:43
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Problema con update multiple

Esta es la idea, a ver si puedes adaptarlo:

Código PHP:
<?php

error_reporting
(E_ALL);
ini_set("display_errors"1);

if(isset(
$_POST['Submit'])){
    echo 
"Procesando<br/>";
    
$i 0;
    foreach(
$_POST as $key => $value){
    
    if(!
strstr($key"valor")) continue;
        echo 
"UPDATE tabla set campo = $value where id = $i<br/>";
        
$i++;
    }
}
else{ 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
  <table width="19%" border="0">
    <tr>
      <td width="36%">Elemento 1 </td>
      <td width="64%"><label>
        <input name="valor_1" type="text" value="1" />
        </label>
      </td>
    </tr>
    <tr>
      <td>Elemento 2 </td>
      <td><input name="valor_2" type="text" value="3" /></td>
    </tr>
    <tr>
      <td>Elemento 3 </td>
      <td><input name="valor_3" type="text" value="4" /></td>
    </tr>
    <tr>
      <td colspan="2"><label>
        <div align="center">
          <input type="submit" name="Submit" value="Enviar" />
        </div>
        </label></td>
    </tr>
  </table>
</form>
</body>
</html>
<?php ?>
1 saludo
  #3 (permalink)  
Antiguo 13/10/2010, 09:44
Avatar de egepe  
Fecha de Ingreso: diciembre-2009
Mensajes: 310
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: Problema con update multiple

Tienes un par de errores:

en el input de cantidad el nombre no puede ser name="cantidad[$i]" ya que estas mezclando html con php y no se hace de esa forma.

Hay dos opciones

1) sería más larga de esta forma

$name = "cantidad". $i ( utilizo el indice $i que tienes ahí definido)
luego en el input colocas algo así name = "<?php echo $name ?>", te creará por cada fila un valor cantidad1, cantidad2, cantidad3... cantidadn.

2) segunda opción sería colocar name="cantidad[]" entonces por cada unput el te hara algo así cantidad[1], cantida[2], cantidad[3]... cantidad[n]

y en el POST el segundo error sería para el caso 1:
$_POST['cantidad1'], $_POST['cantidad2']... $_POST['cantidadn']

y para el segundo sería $_POST['cantidad'][1]... $_POST['cantidad'][n]

NOta:
tienes de todas formas que validad tu logico no evalue si la condicion where de tu update sería la correcta

Saludos
  #4 (permalink)  
Antiguo 13/10/2010, 14:33
 
Fecha de Ingreso: octubre-2010
Mensajes: 18
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problema con update multiple

muchas gracias, ahora puedo almacenar cada uno de los registros en la variable cantidad1, cantidad2, etc. voy a ver como me las ingenio aca para solucionar mi problema y posteare la solucion. Muchas gracias

Etiquetas: update
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 14:46.