Foros del Web » Programando para Internet » PHP »

controlar que no se guarde 2 veces ...

Estas en el tema de controlar que no se guarde 2 veces ... en el foro de PHP en Foros del Web. Amigos: Tengo una página llamada Ingreso.php que contiene un fomulario de ingreso de usuarios y para realizar el insert correspondiente, se hace en el mismo ...
  #1 (permalink)  
Antiguo 07/11/2005, 21:27
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 12 años, 8 meses
Puntos: 1
controlar que no se guarde 2 veces ...

Amigos:

Tengo una página llamada Ingreso.php que contiene un fomulario de ingreso de usuarios y para realizar el insert correspondiente, se hace en el mismo script Ingreso.php todo resulta bien, pero cuando presiono el boton guardar o update se vuelve a guardar el registro repitiendo el dato en la BD.

Vi un código de Cluster: http://www.forosdelweb.com/showthrea...hreadid=112183 el cual coloco al final del insert pero me provoca un error...que me dicen...??
  #2 (permalink)  
Antiguo 08/11/2005, 05:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Vi un código de Cluster: http://www.forosdelweb.com/showthrea...hreadid=112183 el cual coloco al final del insert pero me provoca un error...que me dicen...??
Y que error concreto y textual te origina?, como usas ese código de ejemplo (pon el código que tu uses completo).

Un saludo,
  #3 (permalink)  
Antiguo 08/11/2005, 08:42
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 12 años, 8 meses
Puntos: 1
Okey aquí va, este código es uno sólo y lo dividi para que no fuera tan complicada su lectura, pero todo sigue un orden secuencial,okey ...


Código PHP:
require("../../autentificador/aut_verifica.adm.php");
$accion=$_get["accion"];
echo 
$accion;
$nivel_acceso=0;

if(
$nivel_acceso == $_SESSION['user_level']){
header("location : $rdir?error_login=5");
}

if (isset(
$HTTP_SERVER_VARS['msg'])){ 
echo 
"El estado del proceso fué: ".$HTTP_SERVER_VARS['msg']; 



if(
$_SESSION['username']!="" and $acción="crear")

Código HTML:
echo <<< HTML
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ingreso Adminitrador</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="$PHP_SELF?accion=guardar">
<br />
  <table align="center">
    <tr valign="baseline">
      <td colspan="2" align="right" nowrap="nowrap"><div align="center"><font size="+1" face="Verdana, Arial, Helvetica, sans-serif">Ingreso de Administrador-New</font><br />
        <hr />
      </div></td>
    </tr>
    
    <tr valign="baseline">
      <td align="right" nowrap="nowrap"><div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>RUT USUARIO: </strong></font></div></td>
      <td><label>
        <input name="rut" type="text" id="rut" size="15" maxlength="8" />
        <strong><font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif"> (*) </font></strong></label></td>
    </tr>
    <tr valign="baseline">
      <td width="103" align="right" nowrap="nowrap"><div align="left"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">USERNAME:</font></strong></div></td>
      <td width="352"><strong><font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">
        <input name="username" type="text" id="username" value="" size="15" maxlength="15" />
        (*) </font></strong></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><div align="left"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">PASSWORD:</font></strong></div></td>
      <td><strong><font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">
        <input name="password" type="password" id="password" value="" size="15" maxlength="10" />
        (*)</font></strong></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><div align="left"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">NOMBRE:</font></strong></div></td>
      <td><label>
        <input name="nombre" type="text" id="nombre" size="20" maxlength="15" />
        <strong><font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">(*)</font></strong></label></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><div align="left"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">A. 
        PATERNO:</font></strong></div></td>
      <td><input name="paterno" type="text" id="paterno" size="20" maxlength="20" />
          <strong><font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">(*)</font></strong></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><div align="left"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">A. 
        MATERNO:</font></strong></div></td>
      <td><input name="materno" type="text" id="materno" size="20" maxlength="20" />
          <strong><font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">(*)</font></strong></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><div align="left"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">DIRECCI&Oacute;N:</font></strong></div></td>
      <td><label>
        <input name="direccion" type="text" id="direccion" size="30" maxlength="50" />
        <strong><font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">(*)</font></strong></label></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><div align="left"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">CIUDAD:</font></strong></div></td>
      <td><label>
        <input name="ciudad" type="text" id="ciudad" maxlength="20" />
      </label></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><div align="left"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">TEL&Eacute;FONO:</font></strong></div></td>
      <td><label>
        <input name="telefono" type="text" id="telefono" maxlength="20" />
      </label></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><div align="left"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">CELULAR:</font></strong></div></td>
      <td><input name="celular" type="text" id="celular" maxlength="20" />
          <strong><font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">(*)</font></strong></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><div align="left"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">ACCESO:</font></strong></div></td>
      <td><label>
        <select name="cbo_acceso" id="cbo_acceso" disabled="disabled">
          <option>0</option>
        </select>
        <strong><font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">(*)</font></strong></label></td>
    </tr>
    <tr valign="baseline">
      <td colspan="2" align="right" nowrap="nowrap"><input type="button" name="Button" value="Salir" onClick="salir();" />
          <label>
          <input type="submit" name="Submit" value="Insertar Registro" />
        </label></td>
    </tr>
    <tr valign="baseline">
      <td colspan="2" align="right" nowrap="nowrap"><font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">(*) 
        Datos Obligatorios</font></td>
    </tr>
  </table>
</form>
HTML;
}
Código PHP:
require("../../autentificador/aut_config.inc.php");
if(
$_SESSION['username'] != "" and $accion="guardar")
{
    
//Inicializar variables...
        
$rut=''$user=''$pass=''$nombre=''$paterno=''$materno=''$direccion=''$ciudad='';
        
$telefono=''$celular=''$acceso=''$sql='';
    
//Capture Variable
    
$rut=trim($_POST['rut']);
    
$user=strtolower(trim($_POST['username']));
    
$pass=strtolower(trim($_POST['password']));
    
$nombre=strtolower(trim($_POST['nombre']));
    
$paterno=strtolower(trim($_POST['paterno']));
    
$materno=strtolower(trim($_POST['materno']));
    
$direccion=strtolower(trim($_POST['direccion']));
    
$ciudad=strtolower(trim($_POST['ciudad']));
    
$telefono=strtolower(trim($_POST['telefono']));
    
$celular=strtolower(trim($_POST['celular']));
    
$acceso=strtolower(trim($_POST['acceso']));
    
// Query
    
$db_conexionmysql_connect("$sql_host""$sql_usuario""$sql_pass") or die(header ("Location:  $redir?error_login=0"));
    
mysql_select_db("$sql_db");

    
$sql=mysql_query("insert into ADMINISTRADOR     (ID_adm,rut_adm,user_adm,pass_adm,nombre_adm,apaterno_adm,amaterno_adm,direccion_adm,ciudad,telefono_adm,celular_adm,estado_adm,adm_access)VALUES('','$rut','$user','$pass','$nombre','$paterno','$materno','$direccion','$ciudad','$telefono','$celular','$acceso','0')") or die ("Error al ingresar usuario, Inténtelo más tarde")or die (mysql_error());
}
***** 
ESTAS ÚLTIMAS 2 LINEAS PROVOCAN EL ERROR ******
header("location: $HTTP_SERVER_VARS['HTTP_REFERER']?msg=Registro Exitoso"); 
exit; 
?>
</body>
</html> 
ERROR:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
  #4 (permalink)  
Antiguo 08/11/2005, 08:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Complicado ver donde te habrás dejado una ; o un ) sin cerrar ..

A simple vista lo que ya veo es:

Código PHP:
header("location: $HTTP_SERVER_VARS['HTTP_REFERER']?msg=Registro Exitoso"); 
exit; 
ese "msg" no lo veras completo donde lo leas (sólo veras hasta el primer espacio).. debes aplicar:

urlencode() ó rawurlencode()
Código PHP:
header("location: $HTTP_SERVER_VARS['HTTP_REFERER']?msg=".urlencode("Registro Exitoso")); 
exit; 
Un saludo,
  #5 (permalink)  
Antiguo 08/11/2005, 08:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Esto tampoco es correcto:
Código PHP:
 $sql=mysql_query("insert into ADMINISTRADOR     (ID_adm,rut_adm,user_adm,pass_adm,nombre_adm,apaterno_adm,amaterno_adm,direccion_adm,ciudad,telefono_adm,celular_adm,estado_adm,adm_access)VALUES('','$rut','$user','$pass','$nombre','$paterno','$materno','$direccion','$ciudad','$telefono','$celular','$acceso','0')") or die ("Error al ingresar usuario, Inténtelo más tarde")or die (mysql_error()); 

Sólo un "or" .. de echo ese "die()" hace lo mismo que un exit .. es decir . .para la ejecución del script en ese punto:

Código PHP:
 $sql=mysql_query("insert into ADMINISTRADOR     (ID_adm,rut_adm,user_adm,pass_adm,nombre_adm,apaterno_adm,amaterno_adm,direccion_adm,ciudad,telefono_adm,celular_adm,estado_adm,adm_access)VALUES('','$rut','$user','$pass','$nombre','$paterno','$materno','$direccion','$ciudad','$telefono','$celular','$acceso','0')") or die ("Error al ingresar usuario, Inténtelo más tarde"); 

Un saludo,
  #6 (permalink)  
Antiguo 08/11/2005, 08:55
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
Prueba así:
Código PHP:
header("location:".$_SERVER['HTTP_REFERER']."?msg=Registro Exitoso"); 
exit; 
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #7 (permalink)  
Antiguo 08/11/2005, 09:02
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 12 años, 8 meses
Puntos: 1
Cómo veo en tu mensaje es un error de ; ó ) más que el plantee al principio
  #8 (permalink)  
Antiguo 08/11/2005, 09:08
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 12 años, 8 meses
Puntos: 1
Acabo de probar la últimas 2 soluciones, pero puntualmente en la última de ellas posteadas por "living" me lanza un error de que las cabeceras ya fueron enviadas, por todo el código html que existe más arriba ....
"Cannot modify header information - headers already sent by "
  #9 (permalink)  
Antiguo 08/11/2005, 09:25
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 12 años, 8 meses
Puntos: 1
Cita:
Iniciado por under_ground
Acabo de probar la últimas 2 soluciones, pero puntualmente en la última de ellas posteadas por "living" me lanza un error de que las cabeceras ya fueron enviadas, por todo el código html que existe más arriba ....
"Cannot modify header information - headers already sent by "
solucionado este último percance y encontre un } que no habia cerrado, pero ahora cuando llamo a ingreso.php y quiero mostrar mi formulario no aparece
  #10 (permalink)  
Antiguo 08/11/2005, 09:34
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 12 años, 8 meses
Puntos: 1
De esta manera llamo a ingreso.php pasandole la acción "crear"

Código PHP:
<p><a href="Ingreso.php?accion=crear">Crear Nuevo Administrador</a
y cuando llega a ingreso me muestra la página en blanco e inserta un registro en blanco

¿Cuándo tengo código php y htm juntos como en este caso, para mostrar el htm se debe colocar siempre esta clausula: function cabeceraHTML(){echo <<< htm}?

Última edición por under_ground; 08/11/2005 a las 09:58
  #11 (permalink)  
Antiguo 08/11/2005, 13:15
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 12 años, 8 meses
Puntos: 1
He solucionado la gran parte de los problemas del comienzo, ahora sólo me queda un detalle.

Termine por separar lo que era código php y htm. ahora deseo validar una de las últimas cosas, cuando el insert es incorrecto(existe el usuario) deseo realizar un header:location con un mensaje de error, pero debido al código htm que existe más arriba no me lo permite, qué tipo de solución podría darse para conservar ese redireccionamiento?

Tema general SOLUCIONADO

Última edición por under_ground; 08/11/2005 a las 14:50
  #12 (permalink)  
Antiguo 09/11/2005, 07:28
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 13 años, 10 meses
Puntos: 5
Puedes dejarlo todo como estaba y agregas estas lineas al principio de tu script
Cita:
if($msg=="Registro Exitoso")
header("location: $HTTP_SERVER_VARS['HTTP_REFERER']);
exit;
Tambien debajo de esas linea puedes darles valores vacios a tus variables.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
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 09:41.