Foros del Web » Programando para Internet » PHP »

evitar duplicados en un campo mysql

Estas en el tema de evitar duplicados en un campo mysql en el foro de PHP en Foros del Web. Hola. He creado esto para subir una imagen y a la vez rellenar los campos en una base de datos: <?php //conexion a la base ...
  #1 (permalink)  
Antiguo 17/06/2013, 16:32
Avatar de rulises  
Fecha de Ingreso: enero-2008
Mensajes: 54
Antigüedad: 16 años, 3 meses
Puntos: 0
evitar duplicados en un campo mysql

Hola.
He creado esto para subir una imagen y a la vez rellenar los campos en una base de datos:
<?php
//conexion a la base de datos
mysql_connect("localhost", "root", "") or die(mysql_error()) ;
mysql_select_db("cetech") or die(mysql_error()) ;

//comprobamos si ha ocurrido un error.
if ($_FILES["Imagen"]["error"] > 0){
echo "ha ocurrido un error";
} else {
//ahora vamos a verificar si el tipo de archivo es un tipo de imagen permitido.
//y que el tamano del archivo no exceda los 100kb
$permitidos = array("image/jpg", "image/jpeg", "image/gif", "image/png", "image/bmp");
$limite_kb = 1800;

if (in_array($_FILES['Imagen']['type'], $permitidos) && $_FILES['Imagen']['size'] <= $limite_kb * 2048){
//esta es la ruta donde copiaremos la imagen
$ruta = "../imagenes/subidas/" . $_FILES['Imagen']['name'];
//comprobamos si este archivo existe para no volverlo a copiar.
if (!file_exists($ruta)){
//aqui movemos el archivo desde la ruta temporal a nuestra ruta
//usamos la variable $resultado para almacenar el resultado del proceso de mover el archivo
//almacenara true o false
$resultado = @move_uploaded_file($_FILES['Imagen']['tmp_name'], $ruta);
$cod =$_POST['Codigo_Producto'];
$nomprod =$_POST['Nombre_Producto'];
$desc =$_POST['Descripcion_Producto'];
$prize =$_POST['Precio_Producto'];
$cat =$_POST['Categoria_Producto'];
$secc =$_POST['Seccion_Web'];
$est =$_POST['Estado_Producto'];
$fec =$_POST['Fecha_Fin'];
$_SESSION =$_POST['Nombre_Usuario'];
if ($resultado){
$nombre = "imagenes/subidas/".$_FILES['Imagen']['name'];$_cod;$nomprod;$desc;$prize;$cat;$secc;$est;$fec; $_SESSION;
@mysql_query("INSERT INTO productos (Imagen,Codigo_Producto,Nombre_Producto,Descripcio n_Producto,Precio_Producto,Categoria_Producto,Secc ion_Web,Estado_Producto,Fecha_Fin,Nombre_Usuario) VALUES ('$nombre','$cod','$nomprod','$desc','$prize','$ca t','$secc','$est','$fec','$_SESSION')") ;
echo "La entrada ha sido creada correctamente";
} else {
echo "ocurrio un error al crear la entrada. Compruebe todos los campos.";
}
} else {
echo $_FILES['Imagen']['name'] . ", Este archivo existe.
No se ha podido crear la entrada en la galería.";

}
} else {
echo "archivo no permitido, es tipo de archivo prohibido o excede el tamano de $limite_kb Kilobytes";
}
}

?>

Si la imagen existe no permite subirla de nuevo, pero quiero añadir la función que si ya existe un Nombre_Producto, no se pueda subir y tampoco suba la imagen.
He probado varios metodos pero no lo consigo y en algunos no se crea en la base de datos pero si sube la imagen.
No he puesto los que he probado para no liar más el código.
Gracias por vuestra colaboración.
  #2 (permalink)  
Antiguo 17/06/2013, 17:35
Avatar de alvidales  
Fecha de Ingreso: febrero-2012
Mensajes: 108
Antigüedad: 12 años, 2 meses
Puntos: 11
Respuesta: evitar duplicados en un campo mysql

puedes utilizar que los campos en mysql sean unique keys y validarlo con el error que te arroja mysql que es el no. 1062

Cita:
1062 SQLSTATE: 23000 (ER_DUP_ENTRY) Duplicate entry '%s' for key %d
  #3 (permalink)  
Antiguo 18/06/2013, 05:20
Avatar de rulises  
Fecha de Ingreso: enero-2008
Mensajes: 54
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: evitar duplicados en un campo mysql

Alvidales.
Los campos ya son unique key en mysql.
Lo extraño es que sube la imagen y no lanza ningún error de valor duplicado en el nombre.
No crea el registro en la tabla y si sube la imagen.
Gracias.
  #4 (permalink)  
Antiguo 20/06/2013, 04:11
Avatar de rulises  
Fecha de Ingreso: enero-2008
Mensajes: 54
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: evitar duplicados en un campo mysql

Por favor alguien que me eche una mano, he seguido probando cambios y no lo consigo.
Muchas gracias.
  #5 (permalink)  
Antiguo 20/06/2013, 12:46
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: evitar duplicados en un campo mysql

Una cosa es subir una imagen y la otra insertar un registro en la base de datos, en todo caso deberías comprobar la respuesta de mysql, si este ah insertado el registro quiere decir que dicho archivo no existe, por el contrario, si se produce un error eliminas el archivo subido ya que forzosamente primero se sube el archivo y luego se ejecuta el archivo PHP en el servidor...
__________________
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 =)

Etiquetas: campo, duplicados, mysql, select, sql
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 18:37.