Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/08/2011, 08:35
lorens77
 
Fecha de Ingreso: abril-2008
Mensajes: 11
Antigüedad: 16 años
Puntos: 0
Pregunta CURIOSO Me duplica el añadir registros según el servidor que use.

Buenas,

Me gustaría, si fuera posible, que alguien pudiera darme una explicación a un "curioso" (y jo..do) suceso que me ocurre con el siguiente código (que más sencillo no puede ser).

Lo único "raro" son las variables $sid = session_id(); y la $s_iduser que una me da el código de la sesión y la otra es una variable de sesión que guarda el código del cliente. La variable $pag es para el control de la ventana que se muestra.

Código PHP:
$sid session_id();

if (
$pag == "agc" and $idprodag <> "")
{

IF (
$s_iduser <> "")
{
$codcliente $s_iduser;
}else{
$codcliente 0;
}

$sql="select * from productos where idproducto = $idprodag";
$result=mysql_query($sql,$link);                 
while (
$row mysql_fetch_array($result))
{
$nombreprod $row["nombre"];
$pvp1 $row["pvp1"];
$pvp2 $row["pvp2"];
$pvp3 $row["pvp3"];
}

if (
$cant == "") {$cant 1;}
$precioventalinea $cant $precioventa;

$s=getdate(); 
$fechasesion mktime ($s["hours"],$s["minutes"],$s["seconds"], $s["mon"],$s["mday"],$s["year"]);

$sqlcarrito "INSERT INTO `articulosxsesion` ( `idsesion` , `idcliente` , `fechasesion` ,`nombre` , `cantidad` , `ivaproducto` , `pvp1`, `pvp2`, `pvp3` , `pvpunid` , `pvplinea` )
VALUES ( '$sid', '$codcliente', '$fechasesion', '$nombreprod', '$cant', '18', '$pvp1', '$pvp2', '$pvp3', '0', '0');"
;  

if (
mysql_query($sqlcarrito,$link))
{
$mensaje "<b>PRODUCTO AGREGADO CORRECTAMENTE</b>";
}else{
$descrerror=mysql_error($link);
$mensaje =  "<b><font color = 'red'>HUBO UN ERROR</b> $descrerror</font>"; }

$pag "ini" ;
$idprodag "";  

Bien lo curioso es que me DUPLICA los registros. O sea, me agrega el registro dos veces. Y para más inri solo sucede en determinados servidores, o sea, en el apache que tengo montado en mi casa para las pruebas me pasa pero en un servidor en internet de un cliente NO sucede y ahora he querido reutilizar este codigo en el de otro servidor para otro cliente y lo duplica.

El codigo del que lo llama a él es una función en javascrip desde un popup.

Código PHP:

<script language="JavaScript" type="text/javascript">

function carrito()
{
var id = '<? echo $id_articulo?>';
url = 'index.php?pag=agc&idprodag=' + id + '&cant=' + document.form1.cantidad.value;
parent.opener.parent.location=url;
window.self.close();
}

</script>
El enlace es de ese popup.

Cita:

<a class='pagprod' href=\"javascript:carrito();\">[ añadir al pedido ]</a> -
<a class="pagprod" href="javascript:window.self.close();">[ cancelar ]</a>
Para dar más información, (después de haber agregado el producto) la pagina muestra un resumen del carrito (una suma de los productos) y lo muestra bien (aunque lo veo a travez al phpmyadmin y no es cierto). Evidentemente cuando hago cualquier cosa con la pagina ya me aparece el duplicado.

Por cierto... también me pasa lo mismo SUMANDOLE uno (me suma 2) a la cantidad de los articulos en otra página. La función para sumarle uno es la siguiente

Código PHP:
if ($pag == "verc" and $acc == "mas")
{

$sql="select * FROM `articulosxsesion` where idlinea = '$idreg' LIMIT 1";
$result=mysql_query($sql,$link);                 
while (
$row mysql_fetch_array($result))
{
$idlinea $row["idlinea"];
$nombre strtoupper($row["nombre"]);
$cantidad $row["cantidad"];
$pvpunid $row["pvpunid"];
}

$cantidad $cantidad +1;
$pvplinea $pvpunid $cantidad;

$sql "UPDATE `articulosxsesion` SET `cantidad` = '$cantidad', `pvplinea` = '$pvplinea' WHERE idlinea = '$idreg' LIMIT 1;";
mysql_query($sql,$link);
$acc "";

Como veréis todas los if los acabo con $acc = ""; o con $pag = "ini" ; o $idprodag = ""; para impedir que si por un error de código volviera a entrar en ese archivo donde tengo todos los query no se podría ejecutar.

También deciros que otros querys lo hace perfectamente (dar de alta a los clientes, dar de alta a los productos, modificar los datos, etc...).

En fin, ya no sé más que hacerle. Espero vuestros consejos y comentarios.

Muchas gracias.