Foros del Web » Programando para Internet » PHP »

Como hacer que solo se inserte un campo llave

Estas en el tema de Como hacer que solo se inserte un campo llave en el foro de PHP en Foros del Web. Miren amigos lo que quiero es algo facilillo pero no se como Tengo un formulario que llena: Matricula Nombre Apellido en donde el campo matricula ...
  #1 (permalink)  
Antiguo 31/01/2005, 10:45
 
Fecha de Ingreso: diciembre-2003
Ubicación: Campehce, Mexico
Mensajes: 325
Antigüedad: 14 años
Puntos: 0
Como hacer que solo se inserte un campo llave

Miren amigos lo que quiero es algo facilillo pero no se como

Tengo un formulario que llena:

Matricula
Nombre
Apellido

en donde el campo matricula es el id y es campo primario.
Ahora resulta que si pongo la misma matricula me la da de alta, quisiera saber como hacerle para que si ponen la misma matricula al darlo de alta les diga que ya existe.

Un saludo
  #2 (permalink)  
Antiguo 31/01/2005, 11:24
 
Fecha de Ingreso: enero-2005
Ubicación: Valparaiso - Chile
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 0
cuando te rellenen el formulario con los datos, una vez hecho el submit, primero has una consulta a la base de datos (ie: select * from tabla where matricula=$campo_ingresado_en_el_formulario)

despues haces un if para ver si existe ya esa matricula y si existe le das al usuario un mensaje donde diga que ingrese los datos de nuevo, o lo que tu quieras.

$sql ="select * from tu_tabla where matricula=$matricula_ingresada";
$result = mysql_query($sql, $conexion);

if ( mysql_num_rows($result) !=0 )
{
codigo para cuando ya existe la matricula
}
else
{
codigo para dar de alta al usuairo
}
  #3 (permalink)  
Antiguo 31/01/2005, 11:39
 
Fecha de Ingreso: diciembre-2003
Ubicación: Campehce, Mexico
Mensajes: 325
Antigüedad: 14 años
Puntos: 0
Este es mi codigo:

<?

include("conexion.php");

$sql = "SELECT * FROM alumnos WHERE matricula=matricula";
$result = mysql_query($sql);

if (mysql_num_rows($result) !=0)
{
echo "<p align='center'><font face='Tahoma'><span style='font-size: 8pt'>La matricula
<b>$matricula</b> ya existe.</span></font></p>
<p align='center'><font face='Tahoma' style='font-size: 8pt'>
<a href='?ID=altas'>Ingresar de Nuevo</a></font></p>";
}
else
{
$consulta = "INSERT INTO alumnos (id,matricula,nombre,apellidos) VALUES ('','$matricula','nombre','$apellidos')";
mysql_query($consulta);

echo "<p align='center' style='margin-top: 0; margin-bottom: 0'>
<font face='Tahoma' style='font-size: 8pt'>Agregado a la base de datos el alumno
<b>$nombre $apellidos</b> con matricula <b>$matricula</b>.</font></p>
<p align='center' style='margin-top: 0; margin-bottom: 0'>&nbsp;</p>
<p align='center' style='margin-top: 0; margin-bottom: 0'>
<font face='Tahoma' style='font-size: 8pt'><a href='index.php'>Regresar al Index</a></font></p>";
}

?>

y cualquier alta que doy me dice que ya existe :(
  #4 (permalink)  
Antiguo 31/01/2005, 12:21
 
Fecha de Ingreso: enero-2005
Ubicación: Valparaiso - Chile
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 0
Un consejo, la proxima vez que empieces a probar cosas no hagas todo el codigo de una vez, pq uno se enreda en que es lo que no funciona. Con unos simple echo para ir probando es mejor (segun mi forma de verlo).

A mi em funciona perfectamente, asi que seguramente tu problema esta aqui:

Cita:
Iniciado por ThunderFx
Este es mi codigo:
<?
include("conexion.php");

$sql = "SELECT * FROM alumnos WHERE matricula=matricula";
$result = mysql_query($sql);
?>
Primero, no le estas pasando una variable a MATRICULA, sino que lo estas comparando con la palabra matricula, lo correcto seria


$sql = "SELECT * FROM alumnos WHERE matricula=$matricula";

Segundo, si el campo matricula es un varchar o char en la base de datos, entonces lo correcto es pasarle el valor enter ' ' , es decir:

$sql = "SELECT * FROM alumnos WHERE matricula='$matricula' ";

Con eso deberia funcionarte todo.
  #5 (permalink)  
Antiguo 31/01/2005, 12:33
 
Fecha de Ingreso: diciembre-2003
Ubicación: Campehce, Mexico
Mensajes: 325
Antigüedad: 14 años
Puntos: 0
Muchas gracias y sin sinceramente se me fue la $ es que apenas ando aprendiendo a programar y esas cosas.

Un saludo
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 20:52.