Foros del Web » Programando para Internet » PHP »

para no ingresar un dato que ya existe, ayuda por favor :D

Estas en el tema de para no ingresar un dato que ya existe, ayuda por favor :D en el foro de PHP en Foros del Web. hola :D bueno les cuento, tengo un sistema de registro de productos pero el problema es que puedo ingresar un producto todas las veces que ...
  #1 (permalink)  
Antiguo 09/07/2009, 07:55
 
Fecha de Ingreso: junio-2009
Mensajes: 33
Antigüedad: 14 años, 10 meses
Puntos: 0
para no ingresar un dato que ya existe, ayuda por favor :D

hola :D bueno les cuento, tengo un sistema de registro de productos pero el problema es que puedo ingresar un producto todas las veces que quiera con el mismo numero de inventario osea el num_inventario, lo que quiero es hacer una restriccion para que no pueda ingresar 2 productos que tengan el mimso numero de inventario, los demas datos si pueden ser los mismos pero el inventario no, nose si se pueda hacer para q al momento de apretar el boton registrar el sistema verifique si existe algun registro con el mismo numero de dato y si no existe que inserte el nuevo producto, pero si existiera me mandara un error diciendo "Este numero de inventario ya existe" disculpen lo novato que soy, me estoy iniciando en php :D saludos de ante mano muchas gracias
este es mi php donde se ingresa e inserta el registro nuevo

Código PHP:
<?php
require('functions.php');
if(isset(
$_POST['submit'])){
    require(
'clases/cliente.class.php');
    
    
$num_serie htmlspecialchars(trim($_POST['num_serie']));
    
$num_resolucion htmlspecialchars(trim($_POST['num_resolucion']));
    
$num_factura htmlspecialchars(trim($_POST['num_factura']));
    
$Marca htmlspecialchars(trim($_POST['Marca']));
    
$Modelo htmlspecialchars(trim($_POST['Modelo']));
    
$Proveedor htmlspecialchars(trim($_POST['Proveedor']));
    
$Servicio htmlspecialchars(trim($_POST['Servicio']));
    
$bodega_des htmlspecialchars(trim($_POST['bodega_des']));
    
$compra_fecha htmlspecialchars(trim($_POST['compra_fecha']));
    
$Valor htmlspecialchars(trim($_POST['Valor']));
    
$ingreso htmlspecialchars(trim($_POST['ingreso']));
    
$num_inventario htmlspecialchars(trim($_POST['num_inventario']));
    
$codificacion htmlspecialchars(trim($_POST['codificacion']));
    
$tipo htmlspecialchars(trim($_POST['tipo'])); 
    
    
$objCliente=new Cliente;
    if ( 
$objCliente->insertar(array($num_serie,$num_resolucion,$num_factura,$Marca,$Modelo,$Proveedor,$Servicio,$bodega_des,$compra_fecha,$Valor,$ingreso,$num_inventario,$codificacion,$tipo)) == true){
        echo 
'Datos guardados';
    }else{
        echo 
'Se produjo un error. Intente nuevamente';
    } 
}else{
?>
<form id="frmClienteNuevo" name="frmClienteNuevo" method="post" action="nuevo.php" onsubmit="GrabarDatos(); return false">
      <p>
    <label>Numero Serie<br />
    <input class="text" type="text" name="num_serie" id="num_serie"  />
    </p>
    <p>
    <label>Numero Resolucion<br />
    <input class="text" type="text" name="num_resolucion" id="num_resolucion"  />
    </p>
    <p>
    <label>Numero Factura<br />
    <input class="text" type="text" name="num_factura" id="num_factura"  />
      </p>
      <p>
    <label>Marca<br />
    <input class="text" type="text" name="Marca" id="Marca"  />
        </label>
      </p>
      <p>
    <label>Modelo<br />
    <input class="text" type="text" name="Modelo" id="Modelo" />
    </label>
  </p>
    <p>
    <label>Proveedor<br />
    <input class="text" type="text" name="Proveedor" id="Proveedor"  />
    </label>
  </p>
  <p>
    <label>Servicio<br />
    <input class="text" type="text" name="Servicio" id="Servicio" />
    </label>
  </p>
  <p>
    <label>Bodega destino<br />
    <input class="text" type="text" name="bodega_des" id="bodega_des"  />
    </label>
  </p>
  <p>
    <label>Fecha Compra <a onclick="show_calendar()" style="cursor: pointer;">
<small>(calendario)</small>
</a><br />
    <input readonly="readonly" class="text" type="text" name="compra_fecha" id="compra_fecha" />
        <div id="calendario" style="display:none;"><?php calendar_html() ?></div>
        </label>
      </p>
       <p>
    <label>Valor<br />
    <input class="text" type="text" name="Valor" id="Valor"  />
        </label>
      </p>
       <p>
    <label>Ingreso<br />
    <input class="text" type="text" name="ingreso" id="ingreso"  />
        </label>
      </p>
  <p>
        <p><label>Numero Inventario<br />
  <input class="text" type="text" name="num_inventario" id="num_inventario"  />
      </label>
      </p>
      <p>
    <label>Codificacion<br />
    <input class="text" type="text" name="codificacion" id="codificacion" />
    </label>
  </p>
      <p>
    <label>Tipo Especie<br />
    <input class="text" type="text" name="tipo" id="tipo"  />
        </label>
      </p>
    <input type="submit" name="submit" id="button" value="Enviar" />
    <label></label>
    <input type="button" class="cancelar" name="cancelar" id="cancelar" value="Cancelar" onclick="Cancelar()" />
  </p>
</form>
<?php
}
?>
  #2 (permalink)  
Antiguo 09/07/2009, 08:28
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: para no ingresar un dato que ya existe, ayuda por favor :D

por lo que entiendo no quieres que en el campo num_inventario tenga el mismo valor?¿

creo que esto te puede servir:


Código PHP:
if($num_inventario != '') {
        
$consulta "SELECT * FROM Tabla_clientes WHERE num_inventario='$num_inventario'";
        
$result mysql_query($consulta);
        if(
$result) {
            if(
mysql_num_rows($result) > 0) {
                
$errmsg_arr[] = 'este producto ya esta registrado!';
                
$errflag true;
            }
            @
mysql_free_result($result);
        }
        else {
            die(
"error no se pudo realizar la consulta...");
        }
    } 

en el codigo he dejado la funcion $errmsg_arr[] que es la que uso para mostrar el error eso ya lo puedes modificar a tu gusto.


saludos
  #3 (permalink)  
Antiguo 09/07/2009, 08:36
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: para no ingresar un dato que ya existe, ayuda por favor :D

Hola amigo, antes de tu insert, tienes que hacer una consulta muy sencilla a la BD de la sig manera:

Código PHP:
<?php
require('functions.php');
if(isset(
$_POST['submit'])){
    require(
'clases/cliente.class.php');
    
    
$num_serie htmlspecialchars(trim($_POST['num_serie']));
    
$num_resolucion htmlspecialchars(trim($_POST['num_resolucion']));
    
$num_factura htmlspecialchars(trim($_POST['num_factura']));
    
$Marca htmlspecialchars(trim($_POST['Marca']));
    
$Modelo htmlspecialchars(trim($_POST['Modelo']));
    
$Proveedor htmlspecialchars(trim($_POST['Proveedor']));
    
$Servicio htmlspecialchars(trim($_POST['Servicio']));
    
$bodega_des htmlspecialchars(trim($_POST['bodega_des']));
    
$compra_fecha htmlspecialchars(trim($_POST['compra_fecha']));
    
$Valor htmlspecialchars(trim($_POST['Valor']));
    
$ingreso htmlspecialchars(trim($_POST['ingreso']));
    
$num_inventario htmlspecialchars(trim($_POST['num_inventario']));
    
$codificacion htmlspecialchars(trim($_POST['codificacion']));
    
$tipo htmlspecialchars(trim($_POST['tipo'])); 
    
    
$objCliente=new Cliente;

 
//realizas la consulta
   
$query="Select num_inventario from tabla_clientes where num_inventario='$num_inventario'";
   
$result mysql_query($consulta); 
//buscas si la consulta arrojó algun valor
   
$totalmysql_num_rows($result ); 
//Entonces ahora si haces la condición
if($total!=0){ //si hay algun valor

echo ' producto ya existente';

}else{ 
//si $total = 0, entonces no hay registros en la bd con ese num de inventario, por lo que ya realizas el insertar que te funcionaba

 
if ( $objCliente->insertar(array($num_serie,$num_resolucion,$num_factura,$Marca,$Modelo,$Proveedor,$Servicio,$bodega_des,$compra_fecha,$Valor,$ingreso,$num_inventario,$codificacion,$tipo)) == true){
        echo 
'Datos guardados';
    }else{
        echo 
'Se produjo un error. Intente nuevamente';
    } 

}
   
 
?>
  #4 (permalink)  
Antiguo 09/07/2009, 08:44
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 4 meses
Puntos: 1
te dejo explicado lo del array de errores.

aqui te dejo mejor explicado lo de mostrar el error.


el codigo de antes con el array de errores:


Código PHP:
//creamos un array para los errores
    <?php
    session_start
();
?>

$errmsg_arr = array();
    
    //le damos un valor predeterminado al flag
    $errflag = false;
    
//validacion de errores (te sirve para validar que los campos no esten vacios)
    if($username == '') {
        $errmsg_arr[] = 'introduzca su nombre de usuario';
        $errflag = true;
    }
    if($email == '') {
        $errmsg_arr[] = 'introduzca su dirrecion de correo';
        $errflag = true;
    }


if($num_inventario != '') {
        $consulta = "SELECT * FROM Tabla_clientes WHERE num_inventario='$num_inventario'";
        $result = mysql_query($consulta);
        if($result) {
            if(mysql_num_rows($result) > 0) {
                $errmsg_arr[] = 'este producto ya esta registrado!';
                $errflag = true;
            }
            @mysql_free_result($result);
        }
        else {
            die("error no se pudo realizar la consulta...");
        }
    }
    
//imprime en el archivo error.php los errores encontrados
    if($errflag) {
        $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
        session_write_close();
        header("location: error.php");
        exit();
}


//// aqui va el codigo para insertar los datos si todo es correcto.

error.php


Código PHP:
<?php
    session_start
();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
</div><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>tuweb- error encontrado</title>
</head>
<body>
<div id="error-div">

<?php
    
if( isset($_SESSION['ERRMSG_ARR']) && is_array($_SESSION['ERRMSG_ARR']) && count($_SESSION['ERRMSG_ARR']) >) {
        echo 
'<ul class="err">';
        foreach(
$_SESSION['ERRMSG_ARR'] as $msg) {
            echo 
'<li>',$msg,'</li>'
        }
        echo 
'</ul>';
        unset(
$_SESSION['ERRMSG_ARR']);
    }
?>

</div>

</body>
</html>
recuerda que tienes que poner al principio de cada pagina esto:
Código PHP:
    session_start(); 
para iniciar la sesion en php.

saludos
  #5 (permalink)  
Antiguo 09/07/2009, 08:48
 
Fecha de Ingreso: junio-2009
Mensajes: 33
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: para no ingresar un dato que ya existe, ayuda por favor :D

gracias me queda mas claro ,pero diculpando lo novato que soy pero lo e probado pero no me rasulta quizas lo pongo mal, io lo pude en el mismo php que postie debajo del require stara bien ahy? pero no me resulta despues lo pondo antes del objCliente pero hai me tira el error del die pero aunke ingrese in num_inventario que sea nuevo ,
  #6 (permalink)  
Antiguo 09/07/2009, 09:06
 
Fecha de Ingreso: junio-2009
Mensajes: 33
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: para no ingresar un dato que ya existe, ayuda por favor :D

eh probado las formas pero no entiendo porque por alguna razon me sigue insertando
u.u
no entiendo si sigo sus concejos
y cuando inserto un un registro me aparece dice lo siguiente
<br />
<b>Warning</b>: mysql_num_rows(): supplied argument is not a valid MySQL result resource in <b>C:\xampp\htdocs\inventario\ingreso\nuevo.php</b> on line <b>27</b><br />
Datos guardados
al insertar datos
  #7 (permalink)  
Antiguo 09/07/2009, 11:08
 
Fecha de Ingreso: febrero-2009
Mensajes: 188
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: para no ingresar un dato que ya existe, ayuda por favor :D

Bueno mira para eso yo primero realizo una búsqueda en la tabla y si los datos de la búsqueda con si den con los que quiero insertar doy un error en caso contrario inserto

Aquí te dejo el código para que lo estudies.Espero que te sea útil.

$NP= dato a insertar

Código PHP:
include("Funcion.php");Coneccion();
    
//Comprobacion de Datos.
$selec "
select*from nombre de la tabla WHERE nombre del compo LIKE '%$NP%'"
;

$result=mysql_query($selec) or die 
(
'Comunicarse con soporte tecnico Comprobasion');
$row=mysql_fetch_array($result);

 
// este es el if para comprobar.

if( $row['id'] == $ID ){echo "<script type='text/javascript'> alert('Ya existe un Usuario con el Nombre $NP. $AP $AS. en la lista de Contactos $SG');document.location=('http://127.0.0.1/Agenda%20Personal%20Corporatiba/Agenda.hta/Servidor/Insertar%20(2).php')</script>";
}else{ 
//aque colocas el insert } 
Que Dios te vendiga
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:01.