Foros del Web » Programando para Internet » PHP »

Evitar duplicidad de registros en un código dado

Estas en el tema de Evitar duplicidad de registros en un código dado en el foro de PHP en Foros del Web. Hola, a ver si me puede ayudar alguien. Estoy adaptando un código php que, aunque funciona, necesita algunas mejoras operativas. Una de las mejoras es ...
  #1 (permalink)  
Antiguo 18/04/2009, 09:39
 
Fecha de Ingreso: marzo-2009
Mensajes: 17
Antigüedad: 15 años, 8 meses
Puntos: 0
Evitar duplicidad de registros en un código dado

Hola, a ver si me puede ayudar alguien. Estoy adaptando un código php que, aunque funciona, necesita algunas mejoras operativas.

Una de las mejoras es evitar que se dupliquen usuarios, así que necesito modificar el código de manera que si un usuario que quiero dar de alta, ya existe, no lo gabe y me muestre un mensaje diciendo que ya existe.

esta es la parte de código en cuestión:
Cita:
$tabla_grupo="alumnos";
// Campos que apareceran en el formulario
$a_campos_tabla = array('usuario', 'clave', 'nombre_completo', 'nif_cif', 'domicilio');
$campos_tabla = implode(",", $a_campos_tabla); // transforma array en texto separado por comas



<?editar_grupos($tabla_grupo, $pagina); ?>

<?if ($_GET["accion"]=="borrar")// Si está confirmado el borrado
{
$item=$_GET['id'];
// Borrado de la BD
$sql_borrado= "DELETE FROM $tabla_grupo WHERE id=$item";
abrers($sql_borrado);
$mensaje='<p class="mensaje correcto">Borrado OK</p>';
}
if (isset($_POST["id"]))
{
$id=$_POST["id"];
if ($_POST["accion"]=="grabar")
{
foreach ($a_campos_tabla as $valor){ $a_campos_insert[] = "\"".$_POST[$valor]."\"";}
$campos_insertar = implode(",", $a_campos_insert); // transforma array en texto separado por comas
$sql="INSERT INTO $tabla_grupo($campos_tabla) VALUES ($campos_insertar)";
abrers($sql);
$mensaje='<p class="mensaje correcto">Acción OK</p>';
}
if ($_POST["accion"]=="editar")
{
foreach ($a_campos_tabla as $valor){ $a_campos_insert[] = $valor."=\"".$_POST[$valor]."\"";}
$campos_update = implode(",", $a_campos_insert); // transforma array en texto separado por comas
$sql="UPDATE $tabla_grupo SET $campos_update WHERE id=$id";
abrers($sql);
$mensaje='<p class="mensaje correcto">Actualización OK</p>';
}
}
?>
<div id="edicionitems">
<?
if (isset($_GET["id"]) && $_GET["accion"]!="borrar"){
$accion="editar";
$id=$_GET["id"];
$sql="SELECT id, $campos_tabla FROM $tabla_grupo WHERE id=$id";
$categoria=abrers($sql);
if ($fila=mysql_fetch_array($categoria))
{
foreach ($a_campos_tabla as $valor){ $$valor=$fila[$valor]; }
}
}else{
$accion="grabar";
$id=0;
foreach ($a_campos_tabla as $valor){ $$valor=""; }
}
?>
<form class="edicionitems" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset class="campos">
<legend>Gestor: Nuevo / Editar</legend>
<? foreach ($a_campos_tabla as $valor){ ?>
<label for="l_<?=$valor?>"><?=str_replace("_"," ",$valor)?>:</label>
<? switch($valor){
case "alumno": echo '<select id="l_'.$valor.'" name="alumno">';
muestraComboSql("alumnos", $alumno, "id", "titular");
echo '</select>';
break;
default: echo '<input type="text" id="l_'.$valor.'" name="'.$valor.'" value="'.$$valor.'" />';
}
} ?>
Aún estoy aprendiendo php así que agradecería ayuda tipo "parbulario" por favor.

Adelanto gracias
  #2 (permalink)  
Antiguo 18/04/2009, 19:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Evitar duplicidad de registros en un código dado

Tu problema no es de Bases de Datos, sino de programación. Para eso está el Foro de PHP. Eso es Bases de datos (Función de la Sección Base de Datos). Allá te van a ayudar mejor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 19/04/2009, 21:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Evitar duplicidad de registros en un código dado

Tema trasladado desde MySQL
  #4 (permalink)  
Antiguo 19/04/2009, 22:54
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Evitar duplicidad de registros en un código dado

Hay muchas cosas que no entiendo de tu codigo amigo como en hacer array los campos de tu tabla se hace mas complicado manejar los nombres, en mi opinion aclaro aparte que en ninguna parte vi que hicieras una consulta a la basae de datos (estoy ciego? xD), pero supongo que es una funcion que hace consultas que has llamado abrers (raro nombre XD), pero si queres evitar que se dupliquen usuarios, agrega esto en esta parte de tu codigo:

Código PHP:

if ($_POST["accion"]=="grabar")
{
foreach (
$a_campos_tabla as $valor){ $a_campos_insert[] = "\"".$_POST[$valor]."\"";}
$campos_insertar implode(","$a_campos_insert); // transforma array en texto separado por comas
    
$VerificarExistencia mysql_query("SELECT * FROM $tabla_grupo WHERE $campos_tabla='$campos_insert'")
    if(empty(
$VerificarExistencia)) {
        
$sql="INSERT INTO $tabla_grupo($campos_tabla) VALUES ($campos_insertar)";
         
abrers($sql);
         
$mensaje='<p class="mensaje correcto">Acción OK</p>';
    }
    else {
         
$mensaje='<p class="mensaje correcto">Acción KO</p>';
    }



No se si es lo que quieres
  #5 (permalink)  
Antiguo 20/04/2009, 05:48
 
Fecha de Ingreso: marzo-2009
Mensajes: 17
Antigüedad: 15 años, 8 meses
Puntos: 0
Gracias por la ayuda rudy69,

el código no lo hice yo; yo estoy aprendiendo todavía php, pero sí que es cierto que este código lo encuentro bastante embarullado, aunque no estoy cualificada para criticarlo porque no tengo conocimientos para ello.

Gracias por la ayuda; voy a probarla ahora mismo.

Bueno, he probado el código de rudy69, pero no me funciona: sigue dejándome repetir usuarios. Pero es que, viendo el código, ¿lo que hace no es comprobar si está vacío en lugar de comprobar si existe???. Igual me equivoco, ya digo que soy simplemente una aprendiz de php

Última edición por GatorV; 20/04/2009 a las 08:19
  #6 (permalink)  
Antiguo 20/04/2009, 09:43
 
Fecha de Ingreso: marzo-2009
Mensajes: 17
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Evitar duplicidad de registros en un código dado

Rectifico: creo que ya he entendido el código de rudy69: lo que hace es comparar los datos de la bd ($campos_tabla) con los del forumlario de la intranet ($campos_insert) y si son iguales, no deja grabar ¿correcto?.

El caso es que con ese código, me ha dejado grabar igualmente; además, necesitaría sólo compobar que no se duplique el usuario, ya que si meto el mismo usuario, pero con distintas direcciones, ese código me permitiría el registro, cuando no debería ser así.

Agradecería ayuda urgente por favor.

Os estaria muy agradecida
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 12:17.