Foros del Web » Programando para Internet » PHP »

validación de campos en base de datos

Estas en el tema de validación de campos en base de datos en el foro de PHP en Foros del Web. Buen día. Estoy realizando un desarrollo en php y tengo un gran inconveniente, espero me puedan ayudar, se los agradecería mucho. Soy novato en el ...
  #1 (permalink)  
Antiguo 22/01/2012, 09:21
 
Fecha de Ingreso: octubre-2011
Mensajes: 11
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta validación de campos en base de datos

Buen día.

Estoy realizando un desarrollo en php y tengo un gran inconveniente, espero me puedan ayudar, se los agradecería mucho.

Soy novato en el tema, así que les planteo la situación....

Necesito realizar una validación de campos de una base de datos con los siguientes críterios.

Al intentar ingresar el registro a la base de datos, que esta regrese un mensaje de error cuando haya un número de telefono, nombre y dirección iguales, quiere decir que no permita registros duplicados... El problema viene con el crtíterio de que sólo sea aplicado en ese día.

Al otro día puede ser ingresado el registro del mismo número, la misma dirección y el mismo nombre....

Alguna idea que me puedan dar?....

Creo que con este código puedo validar los duplicados, ahora me faltaría que sea la validación por día.

Código PHP:
<?PHP
include("config2.php"); 
$check "select id from $table where numero = '".$_POST['numero']."';"
$qry mysql_query($check)
or die (
"Could not match data because ".mysql_error());
$num_rows mysql_num_rows($qry); 
if (
$num_rows != 0) { 
$check2 "select id from $table where nombre = '".$_POST['nombre']."';"
$qry mysql_query($check2)
or die (
"Could not match data because ".mysql_error());
$num_rows mysql_num_rows($qry); 
if (
$num_rows != 0) { 
$check3 "select id from $table where direccion = '".$_POST['direccion']."';"
$qry mysql_query($check3)
or die (
"Could not match data because ".mysql_error());
$num_rows mysql_num_rows($qry); 
if (
$num_rows != 0) { 
echo 
"Lo siento, el numero, nombre y domicilio ya existen en el sistema.<br>";
echo 
"<a href=validar.html>Intenta con otros datos</a>";
exit; 
} else
echo 
"<center><h1>!!SIN REGISTRO EN EL SISTEMA!!</h1></center>"
?>
Saludos y mil gracias!!
  #2 (permalink)  
Antiguo 22/01/2012, 10:32
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: validación de campos en base de datos

Lo ideal es añadir índices UNIQUE en la base de datos, los mismos que combinen dichos campos y el de la fecha actual
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 22/01/2012, 11:07
Avatar de Agusx1211  
Fecha de Ingreso: octubre-2009
Ubicación: Buenos Aires
Mensajes: 33
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: validación de campos en base de datos

Lo que se me ocurre es que primero agregues un campo a la base de datos con algun tipo de fecha, con php lees la base de datos y haces las comprobaciones con un If, si te da true escribis en la base de datos
  #4 (permalink)  
Antiguo 22/01/2012, 11:22
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: validación de campos en base de datos

pues haces un mysql_fetch_array por ejemplo y comparas los valores introducidos con los guardados en la bd esto se debe hacer con ifs

$row = mysql_fetch_array($qry);

if($_POST['nombre'] == $row['nombre']){

son iguales

}else{

no son iguales

}

Última edición por webankenovi; 22/01/2012 a las 11:30
  #5 (permalink)  
Antiguo 25/01/2012, 19:31
 
Fecha de Ingreso: octubre-2011
Mensajes: 11
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: validación de campos en base de datos

Muchas gracias a todos por sus respuestas...

Me quedaron una serie de dudas ya que como les comentaba soy novato en el tema...

Tomé la idea de Agusx1211 y le agregue un campo de fecha a la base.

Pero no tengo idea como implementar lo que me comentas webankenovi...

Estos son los dos códigos que tengo, aún sin validaciones..

Código PHP:
<html>
<head>
<title>CAPTURADOR</title>
</head>
<?PHP
getenv
("REMOTE_ADDR");
$texto=$_ENV['REMOTE_ADDR'];
date_default_timezone_set('America/Mexico_City');
$hora getdate(time());
$fecha_f=date("Y-m-d");
?>                
    <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
    <tr bgcolor="black">
    <td align="left" valign="middle"><font face="times new roman" size="3" color="white"><b><center>DATOS DEL USUARIO</center></font></td></tr></table>
    <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
    <td><center>AGENTE:&nbsp;&nbsp;&nbsp;<input type="text" name="username" value="<?PHP echo $username ?>" disabled></center></td>
    <td><center>FECHA:&nbsp;&nbsp;&nbsp;<input type="text" name="fecha" value="<?PHP echo $fecha_f ?>" disabled></center></td>
    <td><center>HORA:&nbsp;&nbsp;&nbsp;<input type="text" name="hora_inicio" value="<?PHP echo( $hora["hours"] . ":" $hora["minutes"] . ":" $hora["seconds"] ); ?>" disabled></center></td>
    <td><center>IP DE LA PC:&nbsp;&nbsp;&nbsp;<input type="text" name="ip" value="<?php echo $texto;?>" disabled></center></td>
    </tr></table> 
<form action="guardar_registro2.php" name="guardar_registro2" method="POST">
<input type="hidden" name="username" size="10" value="<?PHP echo $username;?>">
<input type="hidden" name="fecha" size="10" value="<?PHP echo $fecha_f;?>">
<input type="hidden" name="hora_inicio" size="10" value="<?PHP echo ( $hora["hours"] . ":" $hora["minutes"] . ":" $hora["seconds"] );?>"><br>
<input type="hidden" name="ip" size="10" value="<?PHP echo $texto;?>"><br>
<table width="100%" border="0" background="100%">
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
    <tr bgcolor="silver">    
        <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
        <tr bgcolor="silver">
        <td align="center" valign="middle"><font face="times new roman" size="3"><b>NOMBRE DEL AGENTE</font></td>
        <td align="center" valign="middle"><font face="times new roman" size="3"><b>FECHA DE NACIMIENTO</font></td>
        <td align="center" valign="middle"><font face="times new roman" size="3"><b>ZONA</font></td>
        <td align="center" valign="middle"><font face="times new roman" size="3"><b>FOLIO</font></td>
        </tr>
        
        <tr>
        <td><center><input type="text" name="nombre" size="50" onKeyPress="if (((event.keyCode < 65 || event.keyCode > 90) && event.keyCode != 209) && event.keyCode != 32) event.returnValue = false;" onChange="javascript:while(''+this.value.charAt(0)==' ')this.value=this.value.substring(1,this.value.length);"/></center></td>
        <td><center>
            <select name="year">
                <option selected value="">AÑO</option>
                <?php
                
for ($x="2011";$x<="2012";$x++)
                {
                    echo 
"<option value=".$x.">".$x."</option>";
                }
                
?>
            </select>
            <select name="month">
                <option selected value="">MES</option>
                <option value="01">ENERO</option>
                <option value="02">FEBRERO</option>
                <option value="03">MARZO</option>
                <option value="04">ABRIL</option>
                <option value="05">MAYO</option>
                <option value="06">JUNIO</option>
                <option value="07">JULIO</option>
                <option value="08">AGOSTO</option>
                <option value="09">SEPTIEMBRE</option>
                <option value="10">OCTUBRE</option>
                <option value="11">NOVIEMBRE</option>
                <option value="12">DICIEMBRE</option>
            </select>
            <select name="day">
                <option selected value="">DÍA</option>
                <option value="01">01</option>
                <option value="02">02</option>
                <option value="03">03</option>
                <option value="04">04</option>
                <option value="05">05</option>
                <option value="06">06</option>
                <option value="07">07</option>
                <option value="08">08</option>
                <option value="09">09</option>
                <?php
                
for ($y="10";$y<="31";$y++)
                {
                    echo 
"<option value=".$y.">".$y."</option>";
                }
                
?>
            </select>
            </font></td></select>
        <td><center><select name="zona">
            <option selected value="">ZONA</option>
            <option value="01">1</option>
            <option value="02">2</option>
            <option value="03">3</option>
            <option value="04">4</option>
            <option value="05">5</option>
            <option value="06">6</option>
            <option value="07">7</option>
            <option value="08">8</option>
        </select></center></td>
        <td><center><input type="text" name="folio" size="10" maxlength="5" onKeyPress="if (event.keyCode < 47 || event.keyCode > 57)event.returnValue = false;"/></center></td>
        </td></tr></table>        
    <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
    <tr bgcolor="silver">
        <td align="center" valign="middle"><font face="times new roman" size="3"><b>APELLIDOS</font></td>
        <td align="center" valign="middle"><font face="times new roman" size="3"><b>NOMBRE (S)</font></td>        
        <td align="center" valign="middle"><font face="times new roman" size="3"><b>RECIBÍ</font></td>
        <td align="center" valign="middle"><font face="times new roman" size="3"><b>TRABAJO</font></td>
    </tr>
    
    <tr>
        <td><center><input type="text" name="apellidos" size="40" maxlength="60" onKeyPress="if (((event.keyCode < 65 || event.keyCode > 90) && event.keyCode != 209) && event.keyCode != 32) event.returnValue = false;" onChange="javascript:while(''+this.value.charAt(0)==' ')this.value=this.value.substring(1,this.value.length);"/></center></td>
        <td><center><input type="text" name="nombres" size="40" maxlength="60" onKeyPress="if (((event.keyCode < 65 || event.keyCode > 90) && event.keyCode != 209) && event.keyCode != 32) event.returnValue = false;" onChange="javascript:while(''+this.value.charAt(0)==' ')this.value=this.value.substring(1,this.value.length);"/></center></td>
        <td><center><input type="text" name="recibi" size="15" maxlength="50" onKeyPress="if (((event.keyCode < 65 || event.keyCode > 90) && (event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 209) && event.keyCode != 32) event.returnValue = false;" onChange="javascript:while(''+this.value.charAt(0)==' ')this.value=this.value.substring(1,this.value.length);"/></center></td>
        <td><center><input type="text" name="empresa" size="30" maxlength="50" onKeyPress="if (((event.keyCode < 65 || event.keyCode > 90) && event.keyCode != 209) && event.keyCode != 32) event.returnValue = false;" onChange="javascript:while(''+this.value.charAt(0)==' ')this.value=this.value.substring(1,this.value.length);"/></center></td>
    </tr></table>
    <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
    <tr bgcolor="silver">
        <td align="center" valign="middle"><font face="times new roman"  size="3"><b>DOMICILIO</font></td>
        <td align="center" valign="middle"><font face="times new roman"  size="3"><b>COLONIA</font></td>
        <td align="center" valign="middle"><font face="times new roman"  size="3"><b>CRUCE1</font></td>
        <td align="center" valign="middle"><font face="times new roman"  size="3"><b>CRUCE2</font></td>
    </tr>
    
    <tr>
        <td><center><input type="text" name="domicilio" size="50" maxlength="50" onKeyPress="if (((event.keyCode < 65 || event.keyCode > 90) && (event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 209) && event.keyCode != 32) event.returnValue = false;" onChange="javascript:while(''+this.value.charAt(0)==' ')this.value=this.value.substring(1,this.value.length);"/></center></td>
        <td><center><input type="text" name="colonia" size="30" onKeyPress="if (((event.keyCode < 65 || event.keyCode > 90) && (event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 209) && event.keyCode != 32) event.returnValue = false;" onChange="javascript:while(''+this.value.charAt(0)==' ')this.value=this.value.substring(1,this.value.length);"/></center></td>
        <td><center><input type="text" name="cruce1" size="30" maxlength="50" onKeyPress="if (((event.keyCode < 65 || event.keyCode > 90) && (event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 209) && event.keyCode != 32) event.returnValue = false;" onChange="javascript:while(''+this.value.charAt(0)==' ')this.value=this.value.substring(1,this.value.length);"/></center></td>
        <td><center><input type="text" name="cruce2" size="30" maxlength="50" onKeyPress="if (((event.keyCode < 65 || event.keyCode > 90) && (event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 209) && event.keyCode != 32) event.returnValue = false;" onChange="javascript:while(''+this.value.charAt(0)==' ')this.value=this.value.substring(1,this.value.length);"/></center></td>
        </select></center></td>
    </tr></table>
    <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
    <tr bgcolor="silver">
        <td align="center" valign="middle"><font face="times new roman"  size="3"><b>CIUDAD</font></td>
        <td align="center" valign="middle"><font face="times new roman"  size="3"><b>TEL. CASA</font></td>
    </tr>
    
    <tr>
        <td><center><input type="text" name="ciudad" size="30" maxlength="50" onKeyPress="if (((event.keyCode < 65 || event.keyCode > 90) && event.keyCode != 209) && event.keyCode != 32) event.returnValue = false;" onChange="javascript:while(''+this.value.charAt(0)==' ')this.value=this.value.substring(1,this.value.length);"/></center></td>
        <td><center><input type="text" name="casa" size="20" maxlength="10" onKeyPress="if (event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;" onChange="javascript:while(''+this.value.charAt(0)==' ')this.value=this.value.substring(1,this.value.length);"/></center></td>
    </tr></table>

<br><br><center>
<input type="submit" value="G U A R D A R"></form></center>
<BR>
</body>
</html>
  #6 (permalink)  
Antiguo 25/01/2012, 19:32
 
Fecha de Ingreso: octubre-2011
Mensajes: 11
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: validación de campos en base de datos

Código PHP:
<html>
<head>
<title>CAPTURADOR</title>
</head>
<!-- TÍTULO DE LA PÁGINA --> 
</head>
<!-- AQUI TERMINA LA CABECERA DE LA PÁGINA-->
<?PHP
REQUIRE ('conexion.php');
?>
<!--SOLICITUD DEL ARCHIVO conexion.php QUE CONTIENE LA INFORMACIÓN PARA LA CONEXIÓN CON LA BASE DE DATOS -->
<?PHP
$username
=$_POST['username']; 
$fecha=$_POST['fecha'];
$hora_inicio=$_POST['hora_inicio'];
$ip=$_POST['ip'];
$nombre=$_POST['nombre'];
$year=$_POST['year'];
$month=$_POST['month'];
$day=$_POST['day'];
$fecha3=$year."-".$month."-".$day;
$zona=$_POST['zona'];
$folio=$_POST['folio'];
$apellidos=$_POST['apellidos'];
$nombres=$_POST['nombres'];
$recibi=$_POST['recibi'];
$empresa=$_POST['empresa'];
$domicilio=$_POST['domicilio'];
$colonia=$_POST['colonia'];
$cruce1=$_POST['cruce1'];
$cruce2=$_POST['cruce2'];
$ciudad=$_POST['ciudad'];
$referencia=$_POST['referencia'];
$sql="INSERT INTO tbl_historico2 (username,fecha,hora_inicio,ip,nombre,year,month,day,fecha3,zona,folio,apellidos,nombres,recibi,empresa,domicilio,colonia,cruce1,cruce2,ciudad,casa) VALUES ('".$username."','".$fecha."','".$hora_inicio."','".$ip."','".$nombre."','".$year."','".$month."','".$day."','".$fecha3."','".$zona."','".$folio."','".$apellidos."','".$nombres."','".$recibi."','".$empresa."','".$domicilio."','".$colonia."','".$cruce1."','".$cruce2."','".$ciudad."','".$casa."')";
$resultado=mysql_query($sql,$conexion);
if (
$resultado)
{
    echo 
"<center><h1>!!REGISTRO ALMACENADO DE MANERA EXITOSA!!</h1><BR><img border=0 width=200 height=200 src=Imagenes/OK.png></center>"// MENSAJE QUE INFORMA QUE EL REGISTRO SE ALMACENO DE MANERA EXITOSA
}
else
    echo 
"<center><h1><font color=red>FALLO AL GUARDAR REGISTRO</font></h1></center>";    // MENSAJE QUE INFORMA QUE HUBO FALLO AL GUARDAR EL REGISTRO
?>
<BR><BR>
<center><br><br><br><br><br>
    <div class="menu">
    <ul>
        </li>
    </ul>
    </div><!-- fin Menu -->        
<BR>
<BR><BR>
</form>
</body>
</html>
En cúal de los dos códigos le pondría la validación?

Los campos que no se pueden repetir el mismo día son: nombres, domicilio y casa

Saludos y mil gracias
  #7 (permalink)  
Antiguo 25/01/2012, 20:34
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 7 meses
Puntos: 22
Respuesta: validación de campos en base de datos

Hola,

Lo que deberías hacer es agregar un campo de fecha en la tabla y hacer las comprobaciones como en el código original, pero sumando la verificación de fecha.

Algo muy práctico es usar un campo integer y guardar timestamp, ejemplo:

Insertás un registro:
Código PHP:
mysql_query("insert into tabla(nombre,otro_campo,fecha) values('$nombre','$otro',".time().")"); 
Luego antes de hacer las verificaciones es cuestión de ver que no haya ningún duplicado con fecha mayor a ayer:

Si es durante las últimas 24 horas, podés usar:
Código PHP:
$fecha_limite=time()-24*60*60
Si es a partir del comienzo del día, es decir, a las 00 de hoy, ya puedo volver a cargar un registro duplicado aunque el anterior sea de las 23 de ayer:
Código PHP:
$fecha_limite=mktime(0,0,0); 
Luego, simplemente agregas en la condición de cada consulta que fecha<=$fecha_limite, ejemplo:
Código PHP:
$check "select id from $table where numero = '".$_POST['numero']."' and fecha<=$fecha_limite;"
Saludos.
  #8 (permalink)  
Antiguo 26/01/2012, 19:42
 
Fecha de Ingreso: octubre-2011
Mensajes: 11
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: validación de campos en base de datos

Cita:
Iniciado por geq Ver Mensaje
Hola,

Lo que deberías hacer es agregar un campo de fecha en la tabla y hacer las comprobaciones como en el código original, pero sumando la verificación de fecha.

Algo muy práctico es usar un campo integer y guardar timestamp, ejemplo:

Insertás un registro:
Código PHP:
mysql_query("insert into tabla(nombre,otro_campo,fecha) values('$nombre','$otro',".time().")"); 
Luego antes de hacer las verificaciones es cuestión de ver que no haya ningún duplicado con fecha mayor a ayer:

Si es durante las últimas 24 horas, podés usar:
Código PHP:
$fecha_limite=time()-24*60*60
Si es a partir del comienzo del día, es decir, a las 00 de hoy, ya puedo volver a cargar un registro duplicado aunque el anterior sea de las 23 de ayer:
Código PHP:
$fecha_limite=mktime(0,0,0); 
Luego, simplemente agregas en la condición de cada consulta que fecha<=$fecha_limite, ejemplo:
Código PHP:
$check "select id from $table where numero = '".$_POST['numero']."' and fecha<=$fecha_limite;"
Saludos.
Mi estimado muchas gracias por tu respuesta... He estado pensando como aplicarla y la verdad no tengo idea de como realizarla...

Me podrías auxiliar en que partes del codigo tengo que meter eso...

Ya le puse el campo fecha a la tabla...

Saludos y gracias
  #9 (permalink)  
Antiguo 26/01/2012, 19:56
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 7 meses
Puntos: 22
Respuesta: validación de campos en base de datos

El primer bloque es cuando se registra un usuario. Lo que tendrías que hacer sería agregar la fecha y su valor en la consulta que actualmente tenés para guardar el usuario en la db, como está en el ejemplo, todos tus campos y la fecha.

El segundo o el tercero lo tendrías que agregar antes de las comprobaciones, por ejemplo después del include('config2.php'). El que vas a usar depende de lo que quieras lograr exactamente, fijate que ahí te expliqué cada uno (si tienen que pasar 24hs o se puede a partir de las 00hs).

El último es la consulta, te hice el ejemplo con tu primer consulta, lo que tendrías que hacer es agregar
Código:
 and fecha<=$fecha_limite
en la condición (WHERE) de cada consulta que hacés (los $check1, 2, etc.)

Espero que se entienda, saludos.
  #10 (permalink)  
Antiguo 26/01/2012, 21:29
 
Fecha de Ingreso: octubre-2011
Mensajes: 11
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: validación de campos en base de datos

Cita:
Iniciado por geq Ver Mensaje
El primer bloque es cuando se registra un usuario. Lo que tendrías que hacer sería agregar la fecha y su valor en la consulta que actualmente tenés para guardar el usuario en la db, como está en el ejemplo, todos tus campos y la fecha.

El segundo o el tercero lo tendrías que agregar antes de las comprobaciones, por ejemplo después del include('config2.php'). El que vas a usar depende de lo que quieras lograr exactamente, fijate que ahí te expliqué cada uno (si tienen que pasar 24hs o se puede a partir de las 00hs).

El último es la consulta, te hice el ejemplo con tu primer consulta, lo que tendrías que hacer es agregar
Código:
 and fecha<=$fecha_limite
en la condición (WHERE) de cada consulta que hacés (los $check1, 2, etc.)

Espero que se entienda, saludos.
Gracias por tu respuesta Geg ya me quedo un poco más claro pero aún no logro concretar esto...

Mira sucede que si le agrego

Cita:
$fecha_limite=time()-24*60*60;
and fecha<=$fecha_limite;";
Me guarda los registros aunque esten duplicados...

Y si se lo quito no me deja guardar duplicados...

Te pongo el código haber que opinas...

Cita:
<?PHP
include("config2.php");
REQUIRE ('conexion.php');
$fecha_limite=time()-24*60*60;
// connect to the mysql server
$link = mysql_connect($server, $db_user, $db_pass)
or die ("Could not connect to mysql because ".mysql_error());

// select the database
mysql_select_db($database)
or die ("Could not select database because ".mysql_error());

// check if the folio is taken
$check = "select id from $table where folio = '".$_POST['folio']."' and fecha<=$fecha_limite;";
$check = "select id from $table where nombre = '".$_POST['nombre']."' and fecha<=$fecha_limite;";
$check = "select id from $table where domicilio = '".$_POST['domicilio']."' and fecha<=$fecha_limite;";
$qry = mysql_query($check)
or die ("Could not match data because ".mysql_error());
$num_rows = mysql_num_rows($qry);
if ($num_rows != 0) {
echo "Lo siento, el folio, nombre y dirección ya existen en el sistema.<br>";
echo "<a href=registro_folio.php>Intenta con otro</a>";
exit;
} else
$username=$_POST['username'];
$fecha=$_POST['fecha'];
$hora_inicio=$_POST['hora_inicio'];
$ip=$_POST['ip'];
$vendedora=$_POST['vendedora'];
$zona=$_POST['zona'];
$nombre=$_POST['nombre'];
$apellidos=$_POST['apellidos'];
$direccion=$_POST['direccion'];
$exterior=$_POST['exterior'];
$interior=$_POST['interior'];
$domicilio=$direccion." #".$exterior." ".$interior;
$colonia=$_POST['colonia'];
$ciudad=$_POST['ciudad'];
$calle1=$_POST['calle1'];
$calle2=$_POST['calle2'];
$particular=$_POST['particular'];
$cantidad=$_POST['cantidad'];
$forma=$_POST['forma'];
$folio=$_POST['folio'];
$empresa=$_POST['empresa'];
$sorteo=$_POST['sorteo'];
$fventa=$_POST['fventa'];
$fenbol=$_POST['fenbol'];
$hvisita=$_POST['hvisita'];
$bvendidos=$_POST['bvendidos'];
$observaciones=$_POST['observaciones'];
$sql="INSERT INTO tbl_historico (username,fecha,hora_inicio,ip,vendedora,zona,nomb re,apellidos,direccion,exterior,interior,domicilio ,colonia,ciudad,calle1,calle2,particular,cantidad, forma,folio,empresa,sorteo,fventa,fenbol,hvisita,b vendidos,observaciones) VALUES ('".$username."','".$fecha."','".$hora_inicio."',' ".$ip."','".$vendedora."','".$zona."','".$nombre." ','".$apellidos."','".$direccion."','".$exterior." ','".$interior."','".$domicilio."','".$colonia."', '".$ciudad."','".$calle1."','".$calle2."','".$part icular."','".$cantidad."','".$forma."','".$folio." ','".$empresa."','".$sorteo."','".$fventa."','".$f enbol."','".$hvisita."','".$bvendidos."','".$obser vaciones."')";
$resultado=mysql_query($sql,$conexion);
if ($resultado)
{
echo "<center><h1>!!REGISTRO ALMACENADO DE MANERA EXITOSA!!</h1><BR><img border=0 width=200 height=200 src=Imagenes/OK.png></center>"; // MENSAJE QUE INFORMA QUE EL REGISTRO SE ALMACENO DE MANERA EXITOSA
}
else
echo "<center><h1><font color=red>FALLO AL GUARDAR REGISTRO</font></h1></center>"; // MENSAJE QUE INFORMA QUE HUBO FALLO AL GUARDAR EL REGISTRO
?>
Saludos y mil gracias por tu apoyo
  #11 (permalink)  
Antiguo 26/01/2012, 21:35
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 7 meses
Puntos: 22
Respuesta: validación de campos en base de datos

Te está faltando guardar la fecha en los registros para que tenga con qué hacer la comparación. Tenés:

Código PHP:
$fecha=$_POST['fecha']; 
Pero la fecha debería ser automática, ya que es la fecha en que fue ingresado:

Código PHP:
$fecha=time(); 
Si ese $fecha era realmente un campo del formulario (que completa el usuario y es un dato que te sirve), usá otro campo para la fecha de comparación, por ejemplo fecha_insertado.

Saludos.
  #12 (permalink)  
Antiguo 26/01/2012, 22:06
 
Fecha de Ingreso: octubre-2011
Mensajes: 11
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: validación de campos en base de datos

Cita:
Iniciado por geq Ver Mensaje
Te está faltando guardar la fecha en los registros para que tenga con qué hacer la comparación. Tenés:

Código PHP:
$fecha=$_POST['fecha']; 
Pero la fecha debería ser automática, ya que es la fecha en que fue ingresado:

Código PHP:
$fecha=time(); 
Si ese $fecha era realmente un campo del formulario (que completa el usuario y es un dato que te sirve), usá otro campo para la fecha de comparación, por ejemplo fecha_insertado.

Saludos.
Corregido y acomodado mi estimado Geg... Ahora el detalle es que en la base de datos me almacena el registro como 0000-00-00 00:00:00 que hago??

Saludos!!
  #13 (permalink)  
Antiguo 26/01/2012, 22:09
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 7 meses
Puntos: 22
Respuesta: validación de campos en base de datos

Es por el tipo de campo. Te había sugerido usar un campo INTEGER, en lugar de datetime para que el cálculo de la fecha sea mucho más sencillo (fijate que usando time() es sólo cuestión de restar segundos), así que deberías cambiar ese campo a INT para poder guardar el timestamp.

Saludos.
  #14 (permalink)  
Antiguo 26/01/2012, 22:21
 
Fecha de Ingreso: octubre-2011
Mensajes: 11
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: validación de campos en base de datos

Cita:
Iniciado por geq Ver Mensaje
Es por el tipo de campo. Te había sugerido usar un campo INTEGER, en lugar de datetime para que el cálculo de la fecha sea mucho más sencillo (fijate que usando time() es sólo cuestión de restar segundos), así que deberías cambiar ese campo a INT para poder guardar el timestamp.

Saludos.
Sorry.... Ya cambie el tipo de campo a INT y el código quedo así:

Código PHP:
<?PHP
include("config2.php"); 
REQUIRE (
'conexion.php');
$fecha_limite=time()-24*60*60;
// connect to the mysql server
$link mysql_connect($server$db_user$db_pass)
or die (
"Could not connect to mysql because ".mysql_error());

// select the database
mysql_select_db($database)
or die (
"Could not select database because ".mysql_error());

// check if the folio is taken
$check "select id from $table where folio = '".$_POST['folio']."' and fecha<=$fecha_limite;"
$check "select id from $table where nombre = '".$_POST['nombre']."' and fecha<=$fecha_limite;";
$check "select id from $table where domicilio = '".$_POST['domicilio']."' and fecha<=$fecha_limite;";
$qry mysql_query($check)
or die (
"Could not match data because ".mysql_error());
$num_rows mysql_num_rows($qry); 
if (
$num_rows != 0) { 
echo 
"Lo siento, el folio, nombre y dirección ya existen en el sistema.<br>";
echo 
"<a href=registro_folio.php>Intenta con otro</a>";
exit; 
} else
$username=$_POST['username']; 
$fecha_insertado=$_POST['fecha_insertado'];
$hora_inicio=$_POST['hora_inicio'];
$ip=$_POST['ip'];
$vendedora=$_POST['vendedora'];
$zona=$_POST['zona'];
$nombre=$_POST['nombre'];
$apellidos=$_POST['apellidos'];
$direccion=$_POST['direccion'];
$exterior=$_POST['exterior'];
$interior=$_POST['interior'];
$domicilio=$direccion." #".$exterior." ".$interior;
$colonia=$_POST['colonia'];
$ciudad=$_POST['ciudad'];
$calle1=$_POST['calle1'];
$calle2=$_POST['calle2'];
$particular=$_POST['particular'];
$cantidad=$_POST['cantidad'];
$forma=$_POST['forma'];
$folio=$_POST['folio'];
$empresa=$_POST['empresa'];
$sorteo=$_POST['sorteo'];
$fventa=$_POST['fventa'];
$fenbol=$_POST['fenbol'];
$hvisita=$_POST['hvisita'];
$bvendidos=$_POST['bvendidos'];
$observaciones=$_POST['observaciones'];
$fecha=$_POST['fecha'];
$sql="INSERT INTO tbl_historico (username,fecha_insertado,hora_inicio,ip,vendedora,zona,nombre,apellidos,direccion,exterior,interior,domicilio,colonia,ciudad,calle1,calle2,particular,cantidad,forma,folio,empresa,sorteo,fventa,fenbol,hvisita,bvendidos,observaciones,fecha) VALUES ('".$username."','".$fecha."','".$hora_inicio."','".$ip."','".$vendedora."','".$zona."','".$nombre."','".$apellidos."','".$direccion."','".$exterior."','".$interior."','".$domicilio."','".$colonia."','".$ciudad."','".$calle1."','".$calle2."','".$particular."','".$cantidad."','".$forma."','".$folio."','".$empresa."','".$sorteo."','".$fventa."','".$fenbol."','".$hvisita."','".$bvendidos."','".$observaciones."',".time().")";
$resultado=mysql_query($sql,$conexion);
if (
$resultado)
{
    echo 
"<center><h1>!!REGISTRO ALMACENADO DE MANERA EXITOSA!!</h1><BR><img border=0 width=200 height=200 src=Imagenes/OK.png></center>"// MENSAJE QUE INFORMA QUE EL REGISTRO SE ALMACENO DE MANERA EXITOSA
}
else
    echo 
"<center><h1><font color=red>FALLO AL GUARDAR REGISTRO</font></h1></center>";    // MENSAJE QUE INFORMA QUE HUBO FALLO AL GUARDAR EL REGISTRO
?>
<!--SOLICITUD DEL ARCHIVO conexion.php QUE CONTIENE LA INFORMACIÓN PARA LA CONEXIÓN CON LA BASE DE DATOS -->
<!-- SE CAPTURAN LAS VARIABLES TRANSFERIDAS POR METODO POST Y SE INSERTAN EN LA BASE LLAMADA: CAC -->
<BR><BR>
<center><br><br><br><br><br>
    <div class="menu">
    <ul>
        <a href="menu.php" onclick="document.myForm.submit()"><img border=0 src="Imagenes/return.png"></a>
        </li>
    </ul>
    </div><!-- fin Menu -->        
<BR>
<BR><BR>
</form>
</body>
</html>
Guarda el dato fecha así: 1327637765

Pero aún permite duplicados...

Saludos y gracias!!

Etiquetas: campos, html, mysql, registro, validar
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 03:39.