Foros del Web » Programando para Internet » PHP »

Ayuda a depurar el codigo PHP

Estas en el tema de Ayuda a depurar el codigo PHP en el foro de PHP en Foros del Web. Hola, tengo este codigo y quisiera que me ayudaran a depurarlo: Código PHP: if ( $accion == "modificar" ) {      $id_orden_compra = $_POST [ "id_orden_compra" ]; ...
  #1 (permalink)  
Antiguo 22/07/2010, 17:30
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 14 años, 4 meses
Puntos: 0
De acuerdo Ayuda a depurar el codigo PHP

Hola, tengo este codigo y quisiera que me ayudaran a depurarlo:

Código PHP:
if ($accion=="modificar") {
    
$id_orden_compra=$_POST["id_orden_compra"];
    
$act_orden_compra="UPDATE orden_compra SET fecha='$fecha', iva='$iva' WHERE id_orden_compra='$id_orden_compra' AND id_proveedor='$id_proveedor'";
    
$rs_orden_compra=mysql_query($act_orden_compra);
    
$sel_lineas "SELECT id_producto,cantidad FROM oclinea WHERE id_orden_compra='$id_orden_compra' AND id_proveedor='$id_proveedor' order by numlinea";
    
$rs_lineas mysql_query($sel_lineas);
    
$contador=0;
    while (
$contador mysql_num_rows($rs_lineas)) {
        
$codigo=mysql_result($rs_lineas,$contador,"id_producto");
        
$cantidad=mysql_result($rs_lineas,$contador,"cantidad");
        
$sel_actualizar="UPDATE `productos` SET cantidad=(cantidad='$cantidad') WHERE id_producto='$id_producto'";
        
$rs_actualizar mysql_query($sel_actualizar);
        
$contador++;
    }
    
$sel_borrar "DELETE FROM oclinea WHERE id_orden_compra='$id_orden_compra' AND id_proveedor='$id_proveedor'";
    
$rs_borrar mysql_query($sel_borrar);
    
$sel_lineastmp "SELECT * FROM oclineatmp WHERE id_orden_compra='$idoctmp' ORDER BY numlinea";
    
$rs_lineastmp mysql_query($sel_lineastmp);
    
$contador=0;
    
$sub_total=0;
    while (
$contador mysql_num_rows($rs_lineastmp)) {
        
$numlinea=mysql_result($rs_lineastmp,$contador,"numlinea");
        
$id_producto=mysql_result($rs_lineastmp,$contador,"id_producto");
        
$cantidad=mysql_result($rs_lineastmp,$contador,"cantidad");
        
$precio_unitario=mysql_result($rs_lineastmp,$contador,"precio_unitario");
        
$total_cantidad=mysql_result($rs_lineastmp,$contador,"total_cantidad");
        
$sub_total=$sub_total+$total_cantidad;
    
        
$sel_insert "INSERT INTO oclinea (id_orden_compra,id_proveedor,numlinea,id_producto,cantidad,precio_unitario,total_cantidad) 
        VALUES ('$id_orden_compra','$id_proveedor','','$id_producto','$cantidad','$precio_unitario','$total_cantidad')"
;
        
$rs_insert mysql_query($sel_insert);
        
        
$sel_actualiza="UPDATE productos SET cantidad=(cantidad='$cantidad') WHERE id_producto='$id_producto'";
        
$rs_actualiza mysql_query($sel_actualiza);
        
$contador++;
    }
    
$impuestos=$sub_total*($iva/100);
    
$precio_total=$sub_total+$impuestos;
    
//$precio_total=number_format($precio_total,2);    
    
$sel_oc="UPDATE orden_compra SET totaloc='$precio_total' WHERE id_orden_compra='$id_orden_compra'";
    
$rs_oc=mysql_query($sel_oc);
    
$impuestos=0;
    
$precio_total=0;
    
$sub_total=0;
    if (
$rs_query) { $mensaje="La Orden de Compra ha sido actualizada exitosamente"; }
    
$cabecera1="Inicio >> Compras >> Modificar Orden de Compra ";
    
$cabecera2="Modificar Orden de Compra ";


asi funciona bien, en lo que cabe, el problema es que aqui:
Código PHP:
$sel_actualiza="UPDATE productos SET cantidad=(cantidad='$cantidad') 
anteriormente era:
Código PHP:
$sel_actualiza="UPDATE productos SET existencia=(existencia+'$cantidad') 
Pero lo cambie a cantidad=cantidad, porque mi jefe dijo que no queria que estuviera existencia en el programa... Entonces, funciona y lo hace bien... pero es una solucion "sucia" y quisiera saber si alguien me podria ayudar a modificarlo de la manera correcta.

de ante mano gracias
  #2 (permalink)  
Antiguo 23/07/2010, 00:59
 
Fecha de Ingreso: junio-2004
Mensajes: 37
Antigüedad: 20 años, 5 meses
Puntos: 1
Respuesta: Ayuda a depurar el codigo PHP

Buenas dumpmail,

Vendría bien que pusieras la tabla productos...de todas formas tengo una duda y es si estas guardando a posta la cadena "cantidad='", es decir, en tu tabla quieres que guarde algo así cantidad='15'. Por lo que veo el problema es que lo que quieres es guardar una variable numerica y estás introduciendo tambíen texto...quizás lo que necesitas sería algo asi:

$sel_actualiza="UPDATE productos SET cantidad='$cantidad';

Un saludo
  #3 (permalink)  
Antiguo 23/07/2010, 09:21
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Ayuda a depurar el codigo PHP

Hola tempus,

Muy amable de tu parte, te lo agradezco por contestar.

Venga, te muestro la tabla productos:
Código:
-- 
-- Estructura de tabla para la tabla `productos`
-- 

CREATE TABLE `productos` (
  `id_producto` int(4) NOT NULL auto_increment,
  `nombre_producto` varchar(255) NOT NULL,
  `unidad_medida` varchar(50) NOT NULL,
  `precio_unitario` float(10,2) NOT NULL,
  `descripcion` varchar(255) NOT NULL,
  `borrado` varchar(1) NOT NULL default '0',
  PRIMARY KEY  (`id_producto`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COMMENT='productos' AUTO_INCREMENT=89 ;

-- 
-- Volcar la base de datos para la tabla `productos`
--
Voy a probar como dices:
$sel_actualiza="UPDATE productos SET cantidad='$cantidad';

Te dejo la tabla de todas maneras, si funciona bien te comento, y sino tambien y tal vez me puedas seguir ayudando, vale

Muchas gracias
  #4 (permalink)  
Antiguo 23/07/2010, 11:31
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Ayuda a depurar el codigo PHP

Hola amigo, he probado como me has dicho anteriormente con la linea:
$sel_actualiza="UPDATE productos SET cantidad='$cantidad';

y la otra quedo:
$sel_actualizar="UPDATE `productos` SET cantidad='$cantidad' WHERE id_producto='$id_producto'";


Y el resultado es el mismo que las anteriores, es decir, funciona normal y todo... Pero, si te fijas

Me tiene que regresar este resultado:
if ($rs_query) { $mensaje="La Orden de Compra ha sido actualizada exitosamente"; }

El cual, no me regresa, hace todo lo que necesito, segun veo y he comprobado, no le noto que distorsione o deje de hacer algo -hasta donde he visto-

Pero, no me muestra el mensaje de que ha sido actualizada, eso quiere decir que hay un punto donde no va, no anda... Y es por eso que creo que la linea de actualizar, esta mal, o la debo cambiar, antes debia ser: stock=(cantidad+stock), pero en la tabla, ahora ya no usamos la existencia -stock-, entonces decidi eliminarlo, y como solucion rapida y sucia, hice eso, de cantidad=cantidad no se si me explico?

Entonces, queria ver como cambiar eso, o solucionarlo de una mejor manera, y asi muestre el mensaje, ya que no se si despues me podria dar alguna clase de error.


De ante mano, gracias
  #5 (permalink)  
Antiguo 23/07/2010, 11:54
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 6 meses
Puntos: 50
Respuesta: Ayuda a depurar el codigo PHP

YO lo que veo es que usted para mostrar el mensaje esta preguntando si existe $rs_query pero esa variable nuncaexiste en us codigo por eso no entra. Creo que deberia preguntar por $rs_oc.

Saludos
  #6 (permalink)  
Antiguo 23/07/2010, 16:45
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Ayuda a depurar el codigo PHP

Hola helacer, jajaja tan simple como eso era, tenias toda la razon, no se como no pude notarlo, te agradezco infinitamente, haberte dado cuenta.

Una cosa mas, seria posible reemplazar la linea:
$sel_actualizar="UPDATE `productos` SET cantidad='$cantidad' WHERE id_producto='$id_producto'";

O quiza eliminarla, porque la verdad, siento que esta demas, no necesito actualizar nada, ya que no tengo stock para que se le sume o reste segun la cantidad.

De nuevo, gracias a los dos por la ayuda.
  #7 (permalink)  
Antiguo 26/07/2010, 11:47
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 6 meses
Puntos: 50
Respuesta: Ayuda a depurar el codigo PHP

Jaja suele suceder que todo el mundo se de cuenta de esos simples errores menos uno... puessi quiere quitar esa linea de codigo claro que puede "tendira que quitar esa y la siguiente que es la que ejecuta el query". Auqnue debería asegurarseporque si esta hay debe ser por algo.

Saludos

Etiquetas: depurar
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 12:59.