Foros del Web » Programando para Internet » PHP »

CURIOSO Me duplica el añadir registros según el servidor que use.

Estas en el tema de CURIOSO Me duplica el añadir registros según el servidor que use. en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 14/08/2011, 08:35
 
Fecha de Ingreso: abril-2008
Mensajes: 11
Antigüedad: 11 años, 4 meses
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.
  #2 (permalink)  
Antiguo 14/08/2011, 10:14
 
Fecha de Ingreso: abril-2008
Mensajes: 11
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: CURIOSO Me duplica el añadir registros según el servidor que use.

Bueno, estoy intentando sacarlo de otra forma. Si uno no puede por un lado lo hago por otro aunque tenga más trabajo que hacer.

Probablemente sea una chorrada pero vaya... que le vamos hacer.

Un saludo.
  #3 (permalink)  
Antiguo 14/08/2011, 11:56
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 12 años, 2 meses
Puntos: 1567
Respuesta: CURIOSO Me duplica el añadir registros según el servidor que use.

Aparentemente el sistema está correcto, aunue no veo ningun $_GET para agc e id tu insert no está dentro de ningun bucle, la duplicación se produce evidentemente porque tu index.php se recarga con ?pag=agc&idprodag=xxx, y eso de que sea segun un servidor determinado, es raro.
probá de poner una script que haga window.location.href al index.php tras el mensaje, dale un setTimeout para que puedan visualizarlo

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
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 01:58.