Foros del Web » Programando para Internet » PHP »

como puedo hacer este while

Estas en el tema de como puedo hacer este while en el foro de PHP en Foros del Web. hola amigos tengo una duda respecto a un sistema para anular las facturas de mi aplicacion en php, yo tengo un stock y quiero que ...
  #1 (permalink)  
Antiguo 07/06/2010, 21:09
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
como puedo hacer este while

hola amigos
tengo una duda respecto a un sistema para anular las facturas de mi aplicacion en php, yo tengo un stock y quiero que cuando se anule la factura esta devuelva la cantidad de unidades al stock, espero que me entiendan ej

tengo una factura donde tengo dos articulos en ella uno tiene dos unidades el otro articulo tiene 1, por medio de un update he podido hacer que se sume el valor y asi incrementar el stock al anular la factura, pero la cosa es q cuando son varios articulos este solo me incrementa el primer articulo los demas no :( miren la update

Código PHP:
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "formcliente")) {
   
$updateSQL sprintf("UPDATE articulos SET stock=stock +%d WHERE codarticulo='%s'",
                        
GetSQLValueString($_POST['stock'], "int"),
                        
GetSQLValueString($_POST['codarticulo'], "int")); 
                      
  
mysql_select_db($database_fstore$fstore);
  
$Result1 mysql_query($updateSQL$fstore) or die(mysql_error()); 
esto lo trabajo con ayuda de dreamweaver,

entonces me disen que esta bien esto pero que debo utilizar es un ciclo while entonces hay es donde recurro a ustedes, para que me indique como puedo acoplar a el update para que este haga el ciclo y valla incrementado a todos los articulo de mi factura al anularla.

espero me colaboren muchas gracias
__________________
sitios
www.avisoya.com
www.yavendi.com
  #2 (permalink)  
Antiguo 07/06/2010, 21:58
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: como puedo hacer este while

Asi es... pero debes fijarte en el formulario antes de llegar a esta parte, puesto que en el formulario puede que tengas establecido que los campos a enviar se llamen stock, stock1, stock2 y codarticulo, codarticulo1, codarticulo2 o se llamen de otra manera.

Muestranos el codigo de tu formulario y veremos como ayudarte desde ahi.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 08/06/2010, 06:46
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: como puedo hacer este while

hola marvin ps aca te muestro mi form

Código PHP:
<form action="<?php echo $editFormAction?>" method="POST"  name="formcliente" id="formcliente">
    <div id="caja-form">
      <div class="contenedor1">
        <div class="n-factura">Factura Venta N°<?php echo $row_obtener_factura['codfactura']; ?></div>
        <div class="cuadro-gris">
          <div class="cuadro-pn">Fecha:</div>
          <span class="h2"><?php echo $row_obtener_totalfactura['fecha']; ?></span> </div>
        <div class="cuadro-blanco">
          <div class="cuadro-pn">Nombre:</div>
          <span class="h2"><?php echo $row_obtener_cliente_factura['nombre']; ?></span></div>
        <div class="cuadro-gris">
          <div class="cuadro-pn">Nit - CC:</div>
          <span class="h2"><?php echo $row_obtener_cliente_factura['nit']; ?></span></div>
        <div class="cuadro-blanco">
          <div class="cuadro-pn">Direccion:</div>
          <span class="h2"><?php echo $row_obtener_cliente_factura['direccion']; ?></span></div>
        <div class="cuadro-gris">
          <div class="cuadro-pn">Ciudad:</div>
          <span class="h2"><?php echo $row_obtener_cliente_factura['ciudad']; ?></span></div>
        <div class="cuadro-blanco">
          <div class="cuadro-pn">Tels:</div>
          <span class="h2"><?php echo $row_obtener_cliente_factura['telefono']; ?></span> - <span class="h2"><?php echo $row_obtener_cliente_factura['movil']; ?></span></div>
        <div class="cuadro-gris">
          <div class="cuadro-pn">Email:</div>
          <span class="h2"><?php echo $row_obtener_cliente_factura['email']; ?></span></div>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <div class="campo">
          <div class="unref">Item</div>
          <div class="uncantidad">Cantidad</div>
          <div class="undescripcion">Referencia</div>
          <div class="unvunit">Valor Unidad</div>
          <div class="unvtotal">Valor Total</div>
          <?php do { ?>
          <div class="campo-2">
            <div class="campo-ref"><?php echo $row_obtener_factura['numlinea']; ?></div>
            <div class="campo-cantidad"><?php echo $row_obtener_factura['cantidad']; ?>
              <input name="stock" type="hidden" id="stock" value="<?php echo $row_obtener_factura['cantidad']; ?>" />
            </div>
            <div class="campo-descripcion">
              <input name="codarticulo" type="hidden" id="codarticulo" value="<?php echo $row_obtener_factura['codarticulo']; ?>" />
              <?php echo $row_obtener_factura['referencia']; ?></div>
            <div class="campo-vunit"><?php echo $row_obtener_factura['precio_cliente']; ?></div>
            <div class="campo-vtotal"><?php echo $row_obtener_factura['importe']; ?></div>
          </div>
<?php } while ($row_obtener_factura mysql_fetch_assoc($obtener_factura)); ?>
        </div>
        <div class="campo-3">
          <div class="unvtotal-campo3-gris"><?php echo $row_obtener_totalfactura['totalfactura']; ?></div>
          <div class="unvtotal-campo3">Total</div>
        </div>
        <p>&nbsp;</p>
        <p>
          <label>Nota 
            <textarea name="nota" id="nota" cols="60" rows="5"></textarea>
          </label>
          <input name="borrado" type="hidden" id="borrado" value="1" />
          <input name="codfactura" type="hidden" id="codfactura" value="<?php echo $row_obtener_totalfactura['codfactura']; ?>" />
        </p>
</div>
    </div>
    <div id="botonBusqueda">
      <label>
        
      Deseas  Anular la factura
        <input name="aceptar" type="image" id="aceptar" onclick="return pregunta();" value="aceptar" src="../img/botonaceptar.jpg" alt="Anular Factura" />
      </label>
      <img src="../img/botoncancelar.jpg" alt="Cancelar" width="85" height="22" border="0" onclick="cancelar()" onmouseover="style.cursor=cursor" /></div>
<div id="barra-buscar"></div>
<input type="hidden" name="MM_update" value="formcliente" />
  </form>
espero tu colaboracion gracias
__________________
sitios
www.avisoya.com
www.yavendi.com
  #4 (permalink)  
Antiguo 08/06/2010, 08:38
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: como puedo hacer este while

Ok, como primera cosa, lo que tienes dentro de tu do{}while() debes redefinirlo como un arreglo. Porque ¿?, porque imaginate que tienes 2 valores... y presionas el boton aceptar.

El formulario va a enviar un campo llamado stock y uno llamado codarticulo pero como los 2 tienen el mismo nombre, solo te tomara el ultimo definido.

A esos campos que tienes ahi agregales llaves cerradas para dejarlas como arreglos:
Código PHP:
<input name="stock[]" 
[...]
<
input name="codarticulo[]" 
De esta manera puedes preguntar en tu php algo como esto:
Código PHP:
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "formcliente")){
    
$stocks $_POST['stock'];
    
$codArt $_POST['codarticulo'];
    
$max count($stocks);
    
$i 0;
    while(
$i $n){
        
$updateSQL sprintf("UPDATE articulos SET stock=stock +%d WHERE codarticulo='%s'",
                        
GetSQLValueString($stocks[$i], "int"),
                        
GetSQLValueString($codArt[$i], "int"));
        
mysql_select_db($database_fstore$fstore);
        
$Result1 mysql_query($updateSQL$fstore) or die(mysql_error());
        
$i++;
    } 
Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 08/06/2010, 10:40
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: como puedo hacer este while

amigo en donde pongo el q no me da
Código PHP:
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "formcliente")){
    
$stocks $_POST['stock'];
    
$codArt $_POST['codarticulo'];
    
$max count($stocks);
    
$i 0;
    while(
$i $n){
        
$updateSQL sprintf("UPDATE articulos SET stock=stock +%d WHERE codarticulo='%s'",
                        
GetSQLValueString($stocks[$i], "int"),
                        
GetSQLValueString($codArt[$i], "int"));
        
mysql_select_db($database_fstore$fstore);
        
$Result1 mysql_query($updateSQL$fstore) or die(mysql_error());
        
$i++;
    } 
__________________
sitios
www.avisoya.com
www.yavendi.com
  #6 (permalink)  
Antiguo 08/06/2010, 10:51
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: como puedo hacer este while

Emm... podria repetirme la pregunta?...
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #7 (permalink)  
Antiguo 08/06/2010, 11:02
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
amigo checa es link aca esta el codigo completo

http://supesur.servidigitalcsa.com/codigo%20anular.txt

marvin mira que no me da pongo el codigo como tu dises y nace nada que puede ser??? espero tu colaboracion
__________________
sitios
www.avisoya.com
www.yavendi.com

Última edición por GatorV; 09/06/2010 a las 15:58
  #8 (permalink)  
Antiguo 12/06/2010, 18:00
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: como puedo hacer este while

Marvin dice que cuando pone eso no le da nada, ha añadido los [] y nada...
  #9 (permalink)  
Antiguo 13/06/2010, 10:38
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: como puedo hacer este while

si most nada pero voy a volver a probar el codigo haber si depronto me equivoque
__________________
sitios
www.avisoya.com
www.yavendi.com
  #10 (permalink)  
Antiguo 13/06/2010, 11:21
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: como puedo hacer este while

ok, mejor va a ser...
  #11 (permalink)  
Antiguo 14/06/2010, 00:49
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: como puedo hacer este while

Ok... en el codigo que te envie el while esta mal hecho...

Cambialo por esto:
Código PHP:
while($i $max){ 
Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #12 (permalink)  
Antiguo 14/06/2010, 08:23
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: como puedo hacer este while

OK marvin voy a hacer la corrección y le aviso gracias
__________________
sitios
www.avisoya.com
www.yavendi.com
  #13 (permalink)  
Antiguo 14/06/2010, 10:08
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: como puedo hacer este while

marvin si corrigiendo ese dato ya me das bien el while gracias amigo por la colaboración
__________________
sitios
www.avisoya.com
www.yavendi.com

Etiquetas: ciclos
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 03:34.