Foros del Web » Programando para Internet » PHP »

Como puedo evitar que al actualizar se grabe otro registro

Estas en el tema de Como puedo evitar que al actualizar se grabe otro registro en el foro de PHP en Foros del Web. el problema es que tengo una ppagina de carrito de compras... y en esta al momento de aumentar o disminuir la cantidad del articulo se ...
  #1 (permalink)  
Antiguo 09/11/2012, 16:26
 
Fecha de Ingreso: septiembre-2012
Ubicación: Barreiro
Mensajes: 48
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta Como puedo evitar que al actualizar se grabe otro registro

el problema es que tengo una ppagina de carrito de compras... y en esta al momento de aumentar o disminuir la cantidad del articulo se me guarda 2, 3, 4, 5 veces y si sigo haciendo lo mismo me sigue guardando en la base de datos repetidos,,, por fa ayuda con esto.... agradecido de antemano...

les dejo mi codigo....
Código PHP:
<html>
<title>Sistema de Inventario</title>
<meta http-equiv="Content-Language" content="English" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="wrap">
<div id="header">
<h1><center>SISTEMA DE CONTROL Y SEGUIMIENTO <br /><br /><br /> DE SUMINISTROS DE OFICINA</h1></center>
</div>  <br />
 <div id="top"> </div>
<div id="content">
<script language="javascript">
function fAgrega()
{
document.getElementById("Text2").value = document.getElementById("Text1").value;
}
</script>

<?php
session_start
();
                include(
"conexion/conexion.php");    
                
$usuario=  $_SESSION["user"];
                
    
?>

<center>
RESPONSABLE:<input type="hidden" name="nombres" >
<option > <?php echo "$usuario"  ;?></option>    



    <div id="derecha">
        <h1></h1>
    
        <div class='text-border'>
        <?php
                
                    
                    
            
if (isset($_GET['id']))
                
$id $_GET['id'];
            else
                
$id 1;
            
            if (isset(
$_GET['action']))
                
$action $_GET['action'];
            else
                
$action "empty";
    
    
            switch(
$action){
            
                case 
"add":
                    if(isset(
$_SESSION['carro'][$id]))
                        
$_SESSION['carro'][$id]++;
                    else
                        
$_SESSION['carro'][$id]=1;
                break;
                
                case 
"remove":
                    if(isset(
$_SESSION['carro'][$id]))
                    {
                        
$_SESSION['carro'][$id]--;
                        if(
$_SESSION['carro'][$id]==0)
                            unset(
$_SESSION['carro'][$id]);
                    }
                    
                break;
                case 
"removeProd":
                    if(isset(
$_SESSION['carro'][$id])){
                        unset(
$_SESSION['carro'][$id]);
                    }
                break;
                
                case 
"mostrar":
                    if(isset(
$_SESSION['carro'][$id])){
                        continue;
                    }
                break;
                
                case 
"empty":
                    unset(
$_SESSION['carro']);
                
                break;
                        
                
            }

            if(isset(
$_SESSION['carro'])){
             echo 
" <table border=0 cellspacing=5 cellpadding=5 width='700'>";
                
                
//Inicializamos el contador de productos seleccionados.
                
                
                
echo "<tr>";
                    echo 
"<td><b>cod. Producto</td>";
                    echo 
"<td><b>Productos</td>";
                    echo 
"<td><b>Cantidad</td>";
                    echo 
"<td><b>Accion</td>";
                    echo 
"<td colspan=2><b>Stock</td>";
                echo 
"</tr>";
                echo 
"<tr><td colspan=5><hr></td></tr>";
                
                    foreach(
$_SESSION['carro'] as $id => $x){
                    
                    
$resultado mysql_query("select idsuministros , nomsuministros, unidades, departamento FROM suministros, users WHERE idsuministros='$id'");
                    
$mifila mysql_fetch_array($resultado);
                    
$cod $mifila['idsuministros'];
                    
$producto $mifila['nomsuministros'];
                    
//acortamos el nombre del producto a 40 caracteres
                    
$producto substr($producto,0,40);
                    
$precio $mifila['unidades'];
                    
//Coste por art�culo seg�n la cantidad elegida
                    
$coste $precio $x;
                    
//Coste total del carro
                    
$fecha=date("y-m-d");
                    
$canti="cantidad";
                    
$estado="I";
                     
                    
//Contador del total de productos a�adidos al carro
                //    $Total = $Total + $x;

                    
?>
                    <tr>
                    <form action ="carro.php"  method="post" name="carro" id="carro">
                        
                    <td><input type="hidden" name="cod" size="1" >
                    <option > <?php echo "$cod" ;?> </option>
                        
                    <td><input type="hidden" name="produ" size="1" >
                    <option > <?php echo "$producto" ;?> </option>
                    
                    <td><input type="hidden" name="cantidad" id="cantidad" size="1"/>
                    <option > <?php echo "$x" ;?> </option>
                     
                    <td><input type="hidden" name="depar" >
                    <option > <?php echo "$depar"  ;?></option>
                    
                    <input type="hidden" name="estado" value=" <?php echo "$estado"  ;?>" >
                    
                    </form>
                    <td >
                                    
                    <?php
                 
                     
                    
echo"<a href='carro.php?id="$id ."&action=add'><img src='images/carrito/aumentar.png' stle='padding:0 0px 0 5px;' alt='Aumentar cantidad' /></a>";
                    if (
$x 0)
                        echo 
"<a href='carro.php?id="$id ."&action=remove'><img src='images/carrito/restar.png' alt='Reducir cantidad' ></a>";
                    else
                        echo 
"<a href='carro.php?id="$id ."&action=removeProd'><img src='images/carrito/eliminar.png' alt='Reducir cantidad' /></a></td>";
                    
                    echo 
"<td align='right'>  </td>";
                    echo 
"<td  style='margin-left:10px'>$coste Cant.";
                    echo 
"</tr>";
                    echo 
"";
                    }
                    

                
?>
<tr></tr>                

</table>
            
                <?php
            $xx
=mysql_query("insert into detallepedido  VALUES ('$id_pedido', '$fecha','$cod', '$producto','$x','$usuario', '$estado')",$con);        
                                            
                    
$xxx="update detallepedido set producto='$producto', cantidad='$x' where id_pedido= '$id_pedido'" ;
                    
$ac=mysql_query($xxx,$con);
                    
$resp=mysql_query($xx,$con);
                    
$state true;    
                                                                    
                                    
                }
                                
        
?>        
        
        <table width="200" border="0">
  <tr>
    <td> <a href="productos.php"><div class="regresar" title="Seguir con el Pedido"></td><font color='red'></font></div></div></td></div></a>
     <br>Seguir con el Pedido</br>
  </tr>
</table>
<script>
function abrir(URL){
window.open(URL,"",'width=800,height=800,left=320, top=200,toolbar=0,scrollbars=0,statusbar=0,menubar =0,resizable=0');
}
</script>

</BR>
        </div> <!-- Cierro text-border -->
    </div> <!-- Cierro derecha -->

<!------ para desactivar la tecla f5 en mozilla y ie. ----->
<head>
<script language="javascript">

document.onkeydown = function(){
if(window.event && window.event.keyCode == 116){
window.event.keyCode = 505;
}
if(window.event && window.event.keyCode == 505){
return false;
}
}
</script></head>   

<script language="javascript">
document.onkeydown = function(e)
{
if(e)
document.onkeypress = function(){return true;}

var evt = e?e:event;
if(evt.keyCode==116)
{
if(e)
document.onkeypress = function(){return false;}
else
{
evt.keyCode = 0;
evt.returnValue = false;
}
}

</script>

<div class="articles"></div>
</div>
<div id="bottom"> </div>
</div>
<div style="clear: both;"> </div>
</div>
<div id="footer"> Sistema de Control y Seguimiento de Sumunistros &copy; 

</div>
  #2 (permalink)  
Antiguo 09/11/2012, 19:35
Avatar de ciberconquer  
Fecha de Ingreso: noviembre-2012
Ubicación: colombia
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Como puedo evitar que al actualizar se grabe otro registro

no creo que sea nesesario ahcer nada simplemnte ahcer algo como

<?php

//el codigo que inserta el registro

?>
<html>
<head>
</head>
<body>
<form id="formID" name="formNAME" method="post" action="lamismapagina.php">
</form>
</body>
</html>
  #3 (permalink)  
Antiguo 09/11/2012, 19:58
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Como puedo evitar que al actualizar se grabe otro registro

Para comenzar tu código tiene tremendo error por lo cual dudo que funcione, debes poner session_start() al comienzo del script, en la primera linea de código, para tu pregunta debes hacer una redirección a otro archivo para borrar los datos enviados por POST...

Código PHP:
Ver original
  1. <?php
  2. //todo tu código para procesar el formulario...
  3. header('location: otrapagina.php');
  4. exit();
  5. ?>
  6. <html>
  7. <!-- demás código HTML -->
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #4 (permalink)  
Antiguo 09/11/2012, 20:06
 
Fecha de Ingreso: septiembre-2012
Ubicación: Barreiro
Mensajes: 48
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Como puedo evitar que al actualizar se grabe otro registro

listo puse session_start() al comienzo del codigo, me dicen que tengo que rediccionar a otra pagina pero.. aqui viene el pero.. como es un carrito de compras necesito quedarme en la misma pagina para poder agregar o aumentar la cantidad del producto.. e igual me actualiza y manda otro registro a la base de datos al momento de dar en el boton agregar o disminuir cantidad...... como podria solucionar eso ya que es lo unico que me molesta por que de ai funciona todo.... gracias de ante mano

Código PHP:

                    
echo"<a href='carro.php?id="$id ."&action=add'><img src='images/carrito/aumentar.png' stle='padding:0 0px 0 5px;' alt='Aumentar cantidad' /></a>";
                    if (
$x 0)
                        echo 
"<a href='carro.php?id="$id ."&action=remove'><img src='images/carrito/restar.png' alt='Reducir cantidad' ></a>";
                    else
                        echo 
"<a href='carro.php?id="$id ."&action=removeProd'><img src='images/carrito/eliminar.png' alt='Reducir cantidad' /></a></td>"
aqui es donde tengo el problema al pinchar en las imagenes que tengo como boton para disminuir o aumentar...
  #5 (permalink)  
Antiguo 09/11/2012, 20:16
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Como puedo evitar que al actualizar se grabe otro registro

Es lo mismo, solo redirecciona de nuevo a la misma página...

Código PHP:
Ver original
  1. header('location: lamismapagina.php');
  2. exit();
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #6 (permalink)  
Antiguo 09/11/2012, 20:26
 
Fecha de Ingreso: septiembre-2012
Ubicación: Barreiro
Mensajes: 48
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Como puedo evitar que al actualizar se grabe otro registro

lo hago tal cual me lo dices, pero al momento me redirecciona a la misma pagina pero no me muestra los registros agregado al carrito de compra.. y vuelvo a la pagina producto a agregar un producto no me lo muestra en la lista del carro.php...

que sera que tengo mal... o que estoy haciendo mal
  #7 (permalink)  
Antiguo 09/11/2012, 20:29
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Como puedo evitar que al actualizar se grabe otro registro

muestra lo que estas haciendo (donde y como agregaste el header())...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 09/11/2012, 20:32
 
Fecha de Ingreso: septiembre-2012
Ubicación: Barreiro
Mensajes: 48
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Como puedo evitar que al actualizar se grabe otro registro

esto es loq ue estoy haciendo... he puesto el heder en distintos lados de la pagina y me sale lo mismo...

Código PHP:
<?php
session_start
();
?>
<html>
<title>Sistema de Inventario</title>
<meta http-equiv="Content-Language" content="English" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="wrap">
<div id="header">
<h1><center>SISTEMA DE CONTROL Y SEGUIMIENTO <br /><br /><br /> DE SUMINISTROS DE OFICINA</h1></center>
</div>  <br />
 <div id="top"> </div>
<div id="content">
<script language="javascript">
function fAgrega()
{
document.getElementById("Text2").value = document.getElementById("Text1").value;
}
</script>

<?php
                
include("conexion/conexion.php");    
                
$usuario=  $_SESSION["user"];
                
    
?>

<center>
RESPONSABLE:<input type="hidden" name="nombres" >
<option > <?php echo "$usuario"  ;?></option>    



    <div id="derecha">
        <h1></h1>
    
        <div class='text-border'>
        <?php
                
                    
                    
            
if (isset($_GET['id']))
                
$id $_GET['id'];
            else
                
$id 1;
            
            if (isset(
$_GET['action']))
                
$action $_GET['action'];
            else
                
$action "empty";
    
    
            switch(
$action){
            
                case 
"add":
                    if(isset(
$_SESSION['carro'][$id]))
                        
$_SESSION['carro'][$id]++;
                    else
                        
$_SESSION['carro'][$id]=1;
                break;
                
                case 
"remove":
                    if(isset(
$_SESSION['carro'][$id]))
                    {
                        
$_SESSION['carro'][$id]--;
                        if(
$_SESSION['carro'][$id]==0)
                            unset(
$_SESSION['carro'][$id]);
                    }
                    
                break;
                case 
"removeProd":
                    if(isset(
$_SESSION['carro'][$id])){
                        unset(
$_SESSION['carro'][$id]);
                    }
                break;
                
                case 
"mostrar":
                    if(isset(
$_SESSION['carro'][$id])){
                        continue;
                    }
                break;
                
                case 
"empty":
                    unset(
$_SESSION['carro']);
                
                break;
                        
                
            }

            if(isset(
$_SESSION['carro'])){
             echo 
" <table border=0 cellspacing=5 cellpadding=5 width='700'>";
                
                
//Inicializamos el contador de productos seleccionados.
                
                
                
echo "<tr>";
                    echo 
"<td><b>cod. Producto</td>";
                    echo 
"<td><b>Productos</td>";
                    echo 
"<td><b>Cantidad</td>";
                    echo 
"<td><b>Accion</td>";
                    echo 
"<td colspan=2><b>Stock</td>";
                echo 
"</tr>";
                echo 
"<tr><td colspan=5><hr></td></tr>";
                
                    foreach(
$_SESSION['carro'] as $id => $x){
                    
                    
$resultado mysql_query("select idsuministros , nomsuministros, unidades, departamento FROM suministros, users WHERE idsuministros='$id'");
                    
$mifila mysql_fetch_array($resultado);
                    
$cod $mifila['idsuministros'];
                    
$producto $mifila['nomsuministros'];
                    
//acortamos el nombre del producto a 40 caracteres
                    
$producto substr($producto,0,40);
                    
$precio $mifila['unidades'];
                    
//Coste por art�culo seg�n la cantidad elegida
                    
$coste $precio $x;
                    
//Coste total del carro
                    
$fecha=date("y-m-d");
                    
$canti="cantidad";
                    
$estado="I";
                     
                    
//Contador del total de productos a�adidos al carro
                //    $Total = $Total + $x;

?>    
                    ?>
                    <tr>
                    <form action ="carro.php"  method="post" name="carro" id="carro" action="carro.php">
                        
                    <td><input type="hidden" name="cod" size="1" >
                    <option > <?php echo "$cod" ;?> </option>
                        
                    <td><input type="hidden" name="produ" size="1" >
                    <option > <?php echo "$producto" ;?> </option>
                    
                    <td><input type="hidden" name="cantidad" id="cantidad" size="1"/>
                    <option > <?php echo "$x" ;?> </option>
                     
                    <td><input type="hidden" name="depar" >
                    <option > <?php echo "$depar"  ;?></option>
                    
                    <input type="hidden" name="estado" value=" <?php echo "$estado"  ;?>" >
                    
                    </form>
                    <td >
                                    
                    <?php
                 
                    

                    
echo"<a href='carro.php?id="$id ."&action=add'><img src='images/carrito/aumentar.png' stle='padding:0 0px 0 5px;' alt='Aumentar cantidad' /></a>";
                    if (
$x 0)
                        echo 
"<a href='carro.php?id="$id ."&action=remove'><img src='images/carrito/restar.png' alt='Reducir cantidad' ></a>";
                    else
                        echo 
"<a href='carro.php?id="$id ."&action=removeProd'><img src='images/carrito/eliminar.png' alt='Eliminar cantidad' /></a></td>";
                    
                    echo 
"<td align='right'>  </td>";
                    echo 
"<td  style='margin-left:10px'>$coste Cant.";
                    echo 
"</tr>";
                    echo 
"";
                    }
                    

                
?>
<tr></tr>                

</table>
            
                <?php
                
            $xx
=mysql_query("insert into detallepedido  VALUES ('$id_pedido', '$fecha','$cod', '$producto','$x','$usuario', '$estado')",$con);        
                                            
                    
$xxx="update detallepedido set  cantidad='$x' where id_pedido= '$id_pedido'" ;
                    
$ac=mysql_query($xxx,$con);
                    
$resp=mysql_query($xx,$con);
                    
$state true;    
header('location: carro.php');
exit();                                                     
                                    
                }
                
                                            
        
?>
  #9 (permalink)  
Antiguo 09/11/2012, 20:38
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Como puedo evitar que al actualizar se grabe otro registro

header como session_start() NO pueden ir después de alguna salida al navegador (echo, print o cualquier caracter fuera de los tag PHP) porque no funcionará, debes colocar header antes, para que se entienda, tiene que ir despues de session_start() y antes del primer ?>
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #10 (permalink)  
Antiguo 09/11/2012, 20:50
 
Fecha de Ingreso: septiembre-2012
Ubicación: Barreiro
Mensajes: 48
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Como puedo evitar que al actualizar se grabe otro registro

Código PHP:
<?php
session_start
();
header('location: carro.php');
exit(); 
?>
aun me sale ahoara un problema al cargar pa pagina ahora ese es el error

Etiquetas: html, mysql, registro, sql, usuarios
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 10:42.