> Faqs > Solucionar duplicados error Duplicate entry 'GTTR' for key 'PRIMARY'

Solucionar duplicados error Duplicate entry 'GTTR' for key 'PRIMARY'

Saludos a todos les escribe para que me oriente en un problema que tengo con PHP.

Tengo un sistema de registro con PHP y MySQL, nada del otro mundo y todo funciona muy bien, pero tengo el inconveniente no puedo hacer que me indique que existe datos duplicados en este caso la “Cedula Inmobiliaria” (cedula_inmueble) para que luego me arroje una alerta indicando que dicho dato ya se encuentra registrado.

No hago que funcione y siempre me indica en una página en blanco el mensaje "error Duplicate entry 'GTTR' for key 'PRIMARY'"

Espero me puedan asesorar.

<?php
session_start();


require_once "../../config/database.php";

if (empty($_SESSION['username']) && empty($_SESSION['password'])){
    echo "<meta http-equiv='refresh' content='0; url=index.php?alert=1'>";
}

else {
    if ($_GET['act']=='insert') {
        if (isset($_POST['Guardar'])) {
     
            $cedula_inmueble  = mysqli_real_escape_string($mysqli, trim($_POST['cedula_inmueble']));
            $numero_casa  = mysqli_real_escape_string($mysqli, trim($_POST['numero_casa']));
            $manzana  = mysqli_real_escape_string($mysqli, trim($_POST['manzana']));
            $calle_casa  = mysqli_real_escape_string($mysqli, trim($_POST['calle_casa']));
            $tipo_casa  = mysqli_real_escape_string($mysqli, trim($_POST['tipo_casa']));
            $estado_casa  = mysqli_real_escape_string($mysqli, trim($_POST['estado_casa']));

            $creado_user = $_SESSION['id_user'];

            $query = mysqli_query($mysqli, "INSERT INTO comunidad_casa (cedula_inmueble,numero_casa,manzana,calle_casa,tipo_casa,estado_casa,creado_user,modificado_user) 
            VALUES ('$cedula_inmueble','$numero_casa','$manzana','$calle_casa','$tipo_casa','$estado_casa','$creado_user', '$creado_user')")
            or die('error '.mysqli_error($mysqli));    
        
            if ($query) {
                header("location: ../../main.php?module=vivienda&alert=1");
            }   
        }

Respuestas

Hola. Esto es un tema de validación. Tienes que asegurarte de validar todos los campos antes de hacer el insert contra la base de datos.

En realidad, asegurarte que no se repita la cedula_inmueble es solamente una de las muchas validaciones que tendrías que realizar, ya que es importante validar que todos los campos existen, que las cadenas tienen sus longitudes correctas, que los valores numéricos son realmente números, etc.

En el caso de la cedula_inmueble, primero tendrías que hacer una consulta select contra la base de datos, para ver si existe previamente. Ejecutas el select y si recibes un registro con el mismo cedula_inmueble, entonces es que el registro ya está registrado, con lo que tendrías que mostrar el mensaje de error al usuario.

$cedula_inmueble  = mysqli_real_escape_string($mysqli, trim($_POST['cedula_inmueble']));
$ssql = 'select * from comunidad_casa where cedula_inmueble="'. $cedula_inmueble .'"';
$query = mysqli_query($mysqli, $ssql);
if (mysqli_num_rows($query) > 0) {
    echo 'Ya existe esa célula de inmueble';
}

Pero repito, te faltan absolutamente todas las validaciones, esta es solamente una de ellas. No puedes confiar en los datos que introducen los usuarios.

Julian
1100 46 84 45