entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Como registro una fk con datos de otra tabla en una tabla

Buenas tardes

Necesito ayuda u orientación, el caso es: Tengo 2 tablas una se llama Departamentos (iddepartamento(PK-int), nombredepartamentos(varchar)) otra se llama ciudad (idciudad(PK-int), nombreciudad(varchar), iddepartamentos2(FK-int)). El formulario y registro de Departamentos no tiene problema se ejecuta normal y se registra en su respectiva tabla, pero en ciudad no me registra ningún dato a pesar que el phpmyadmin no registra error; creo que el problema radica en el iddepartamento2 el cual visualmente muestra el nombre del departamento pero no me inserta el dato tipo entero: copio el codigo para saber si algo me falta o que debo cambiar. o como puedo hacer para visualmente ante el usuario se vea el nombre del departamento pero intermanete a nivel de codigo el lo pase al tipo int.
codigo formulario (en php)

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8" http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8">
<title>Registro Ciudad</title>
</head>
<body bgcolor="#ffffff">
<font face="Arial" size="2">
<table border="0" align="center">
<?php
$conexion = mysql_connect("localhost","root","");
if(!$conexion){
  echo "Fall la Conexion con el servidor.".mysql_error();
  exit();
}
$db = mysql_select_db("estados",$conexion);
if(!$db){
  echo "Fallo la conexion con la bse de datos.".mysql_error();
  exit();
}
echo '<form method="post" action="registrociudad1.php">';
echo <td colspan = "7" align = "center" height = "115"><font size = "5" ><B>Registro de Ciudades Asignadas de Operación</B></font></th></tr>';
echo '<tr></tr>';
echo '<tr></tr>';
echo '<tr><td colspan = "8" align = "left" height = "30"><B>Registre la ciudad para Operaciones</B></td></tr>';
echo '<tr></tr>';
echo '<tr></tr>';
echo '<tr><td width = "160">Ciudad</td><td width = "160"><input type="text" name="nombreciudad"></td></tr>';
echo '<tr></tr>';
echo '<tr></tr>';
echo '<tr><td width = "160">Zona o Departamento</td>';
$consulta="select nombredepartamentos from departamentos Order by nombredepartamentos";
$resultado=mysql_query($consulta);
if(!$resultado){
  echo "Fallo la Conexion con el elemento.".mysql_error();
  exit();
}
//lista plegable
echo '<td><select name="iddepartamentos2">';
//llenar lista con bucle while
while($reg=mysql_fetch_array($resultado)){
  echo '<option>'.$reg["nombredepartamentos"];
}
echo '</select></td>';
mysql_free_result($resultado);
mysql_close($conexion);
echo '<tr><td></td><td></td><td><input type="submit" value="Registrar Ciudad"></td></tr>';
?>
<tr></tr>
<tr></tr>
</form>
</table>
</form>
</font>
</body>
</html>

codigo para ingresar registro:"registrociudad1.php"

<?php
$conexion = mysql_connect("localhost","root","");
if(!$conexion){
    echo "Fallo la Conexion con el Servidor.".mysql_error();
    exit();
}
$db = mysql_select_db("estado",$conexion);
if(!$db){
    echo "Fallo la Conexion con el Servidor.".mysql_error();
    exit();
}
$nombreciudad = $_POST['nombreciudad'];
$iddepartamentos2 = $_POST['iddepartamentos2'];

$consulta = "insert into ciudad (nombreciudad,iddepartamentos2) values ('$nombreciudad','$iddepartamentos2['iddepartamentos'])";
$resultado = mysql_query($consulta);
mysql_close($conexion);
?>

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola @gramirezpi,

lo que te está faltando es que el SELECT de los departamentos tengan el ID, para usar ese valor al hacer la query que agrega las ciudaddes.

Sería algo como:

...
//lista plegable
echo '<td><select name="iddepartamentos2">';
//llenar lista con bucle while
while($reg=mysql_fetch_array($resultado)){
  echo '<option value="'.$reg["iddepartamento"].'">'.$reg["nombredepartamentos"];
}
echo '</select></td>';
...

Es decir, usar la propiedad VALUE de los OPTION para poner ahí el ID, de forma tal que

$iddepartamentos2 = $_POST['iddepartamentos2'];

contenga el ID en vez del nombre, que es lo que contendrá ahora.

Saludos cordiales!

1voto

gramirezpi comentado

hola leonardo

voy a probar la recomendación y le comentaré, gracias por su valioso apoyo.

1voto

gramirezpi comentado

Leonardo mil gracias

funciona muy bien, intente buscarla por internet y solo me quedo encontrar ayuda por el blog, mil gracias, y espero seguir contando con su ayuda para otras dudas que puedan surgir. gracias nuevamente.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta