Foros del Web » Programando para Internet » PHP »

Que no inserte si ya existe en la tabla

Estas en el tema de Que no inserte si ya existe en la tabla en el foro de PHP en Foros del Web. Hola, tengo este codigo Código PHP: <div id="mgonewpus"> <?php          //CONEXION DE LA BBDD EN LOCALHOST//SI QUITO ESTO NO SE MUESTRA LA CONSULTA EN LA PAGINA          $conexion = mysql_connect ( 'localhost' , 'root' , '' );          mysql_select_db ( 'u151950844_lacor' ...
  #1 (permalink)  
Antiguo 10/05/2012, 18:23
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 19 años, 2 meses
Puntos: 5
Que no inserte si ya existe en la tabla

Hola, tengo este codigo

Código PHP:
<div id="mgonewpus">
<?php

        
//CONEXION DE LA BBDD EN LOCALHOST//SI QUITO ESTO NO SE MUESTRA LA CONSULTA EN LA PAGINA
        
$conexion=mysql_connect('localhost','root','');
        
mysql_select_db('u151950844_lacor',$conexion);
        
mysql_query("SET NAMES 'utf8'");
        
/////////////////////////////// NO QUITAR  //////////////////////////////////////
$trabajo=$_POST["fldWork"];
$pieza=$_POST["fldPartNumber"];
$duns=$_POST["fldDUNS"];
$pus=$_POST["fldPUS"];
$fecha=$_POST["fldDate"];     
$hora=$_POST["fldHour"];    
$cantidad=$_POST["fldAmount"];
$monitor="1";//Aquí no sé si tengo que poner TRUE, o 1//

//compruebo que ha recogido bien los datos.
echo "compruebo que ha recogido bien los datos.<br/><br/>";
echo 
$trabajo."... el trabajo.<br/>";
echo 
$pieza."... la pieza.<br/>";
echo 
$duns."... el DUNS<br/>";
echo 
$pus."... el PUS<br/>";
echo 
$fecha."... la Fecha<br/>";
echo 
$hora."....la Hora<br/>";
echo 
$monitor."...el Monitor, que no sé si hay que ponerlo o no.<br/><br/>"

//Entiendo que hay que INSERTAR los datos en la tabla tblpus pero con la condición de que si la pieza ya existe no haga la inserción.
//Tendré que generar una consulta
$sql="SELECT * FROM tblpus";
    
//Ejecuto la consulta
    
$consulta=mysql_query($sql,$conexion);
    
    
    

    
    
    
//EXTRAIGO RESULTADOS DE LA CONSULTA
    
while($reg=mysql_fetch_array($consulta)){
    
$trabajo2=$reg["fldWork"];
    
$pieza2=$reg['fldPartNumber'];
    
$duns2=$reg['fldDUNS'];
    
$pus2=$reg['fldPUS'];
    
$fecha2=$reg['fldDate'];
    
$hora2=$reg['fldHour'];
    
$cantidad=$reg['fldAmount'];
    
$monitor2=$reg['fldMonitor'];
    echo 
"PIEZA2  ".$pieza2."<BR/>";
    echo 
"PIEZA   ".$pieza."<BR/>";

if(
$pieza2!=$pieza){
//Establezco la consulta
$sql="INSERT INTO tblpus (fldWork, fldPartNumber, fldDUNS, fldPUS, fldDate, fldHour, fldAmount, fldMonitor)VALUES('".$trabajo."','".$pieza."','".$duns."','".$pus."','".$fecha."','".$hora."','".$cantidad."','".$monitor."')";
//Ejecuto la consulta
    
$consulta=mysql_query($sql,$conexion);
    echo 
"sqlxx  ".$sql;

}else{
print 
"Esta nº de Pieza y este albarán de entrada de piezas' PUS' ya existen en la base de datos";


    }
    }
    
/*
    echo "<b>Todos los Registros se han insertado con éxito.<br/></b>";

    //Compruebo la consulta
    echo "<br/>Compruebo la consulta que he hecho. <br/>";
    echo $sql;
    /////////////////////////
    if(($i%1)==0){
    
        }
        
        $i++;
    }
}    
    */
?>
</div>

Y lo unico que quiero es la manera de que esta condicion se cumpla ($pieza2!=$pieza), es decir que si pieza2 no coincida con pieza se pueda insertar una pieza y si no coincide que muestre un mensaje, llevo ya 6 horas con esto y en la tabla se puede insertar absolutamente de todo le da igual que existan iguales o no.

¿me podeis ayudar?

Gracias
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333
  #2 (permalink)  
Antiguo 10/05/2012, 19:36
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Que no inserte si ya existe en la tabla

fíjate que estás recorriendo toda la tabla, y por eso te entra en If.
No seria mejor que lo solucionases al hacer la consulta?

Código PHP:

$sql
="SELECT * FROM tblpus where fldPartNumber='$pieza'"
$consulta=mysql_query($sql,$conexion); 
if(
mysql_num_rows($consulta)==0){     
   
$sql="INSERT INTO tblpus (fldWork, fldPartNumber, fldDUNS, fldPUS, fldDate, fldHour, fldAmount, fldMonitor)VALUES('".$trabajo."','".$pieza."','".$duns."','".$pus."','".$fecha."','".$hora."','".$cantidad."','".$monitor."')"
    
$consulta=mysql_query($sql,$conexion); 
    echo 
"sqlxx  ".$sql
}else{ 
   print 
"Esta nº de Pieza y este albarán de entrada de piezas' PUS' ya existen en la base de datos"

Saludos!
  #3 (permalink)  
Antiguo 11/05/2012, 04:04
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 19 años, 2 meses
Puntos: 5
Respuesta: Que no inserte si ya existe en la tabla

Agradezco tu respuesta, pero no te comprendo muy bien, ¿no es necesario recorrer toda la tabla para poder ver si esta o no insertada "$pieza"?

Claro, tu forma es otra forma de hacerlo, de hecho bastante mejor que la mia, pero ayer despues de tanto tiempo ni me podia imaginar tu forma, pero recorriendo toda la tabla¿no deberia funcionar también?
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333
  #4 (permalink)  
Antiguo 11/05/2012, 04:43
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Que no inserte si ya existe en la tabla

Cita:
pero recorriendo toda la tabla¿no deberia funcionar también?
hombre, podria hacerse funcionar, pero no seria demasiado óptimo..

Piensa que estas hacendo la comparación para todos y cada uno de los registros que tienes: habrá que coincidan, y otros no.
Es decir, si hay 100 registros en la db y ya existe la pieza en 1 registro, 99 veces se va a cumplir ($pieza2!=$pieza)' y 1 no, con lo que te va ha hacer 99 inserts.

Resumiendo: tu problema és: si no existe la pieza, inserta. Si no, no hagas nada. Y eso hace el código que te dejé.

Espero haberme explicado.

Salud!
  #5 (permalink)  
Antiguo 26/05/2012, 06:12
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 19 años, 2 meses
Puntos: 5
Respuesta: Que no inserte si ya existe en la tabla

Perdona el tiempo que ha pasado Oscar, no he podido conectarme hasta ahora, bueno nada, simplemente era para agradecerte tu ayuda por que gracias a ti este codigo funciona, pues eso, solo queria agradecertelo, tarde pero bueno.
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333
  #6 (permalink)  
Antiguo 26/05/2012, 06:18
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Que no inserte si ya existe en la tabla

un placer ayudarte. Saludos.

Etiquetas: mysql, registro, sql, tabla
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:59.