Jump to content

Duda: cargar clave foranea en formulario?


Recommended Posts

Hace poco tuve un examen y no me fue bien por dos cosas:

La primera, tengo un formulario para crear un curso.

xofuk7.jpg

Y quiero que las llaves foráneas se carguen en listas desplegables.
Tengo que hacer la conexión en el código de este formulario para después seleccionar esos datos? tengo que usar JOIN?
Presiento que no debe ser muy difícil, pero lamentablemente no me da la cabeza para resolverlo :/

Espero alguien pueda ayudarme u_u
Gracias de antemano.

 

PD: Mejor creare otro tema con la otra duda =P

Link to comment
Share on other sites

Perdoon, creé este tema muy rápido y se me fue (andaba un poco desesperada en saber esto xD).

En fin, lo estoy haciendo con lenguaje php.

 

Aquí están las tablas:

eagils.jpg

 

Formulario:

<?
session_start();

if(!isset($_SESSION['username']))
{
	header("Location: login_coor.php");
	exit;	
}

?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sin título</title>
</head>

<body><center>
<h1>Crear curso:</h1>
<form action="crearcursodb.php" method="post"><table width="293" border="0">
  <tbody>
      <tr>
      <td>Codigo:</td>
      <td><input type="text" name="codigo"></td>
    </tr>
    <tr>
      <td width="133">Nombre curso:</td>
      <td width="144"><input type="text" name="nombre"></td>
    </tr>
    <tr>
      <td>Curso obligatorio:</td>
      <td><select name="obligatorio">
      <option>s</option>
      <option>n</option>
      </select></td>
    </tr>
    <tr>
      <td>Rut profesor asignado:</td>
      <td><input type="text" name="rut_docente"></td>
    </tr>
    <tr>
      <td>Rut coordinador</td>
      <td><input type="text" name="rut_coordinador"></td>
    </tr>
    <tr>
      <td> </td>
      <td><input type="submit" name="crear" value="Crear"></td>
    </tr>
  </tbody>
</table>
</form>
</center><br>
<a href="opciones.php">Volver</a>
</body>
</html>

"crearcursobd.php"

<?
session_start();

if(!isset($_SESSION['username']))
{
	header("Location: login_coor.php");
	exit;	
}
?>
<?
include "conexion.php";

if(isset($_POST['codigo']) && !empty($_POST['codigo']) && 
isset($_POST['nombre']) && !empty($_POST['nombre']) && 
isset($_POST['obligatorio']) && !empty($_POST['obligatorio']) && 
isset($_POST['rut_docente']) && !empty($_POST['rut_docente']) && 
isset($_POST['coordinador_rut']) && !empty($_POST['coordinador_rut']))
{
	$con=mysql_connect($host,$user,$pw) or die("Problemas al conectar al servidor.");
	
	mysql_select_db($db,$con) or die("Problemas al conectar a la bd.");
	
	mysql_query("INSERT INTO curso (codigo, nombre, obligatorio, rut_docente, coordinador_rut) VALUES ('$_POST[codigo]','$_POST[nombre]','$_POST[obligatorio]','$_POST[rut_docente]','$_POST[coordinador_rut]'",$con) or die("Problemas en la consulta".mysql_error());
	
		echo "Datos insertados.";
}


else
{
	echo "No se puede crear el curso.";	
}

?>

Eso es lo que intente hacer con las claves foráneas sin ser una lista desplegable. Cosa que tampoco funcionó, y todavía no se por qué, ya que escribirlas a mano los datos deberían insertarse igualmente.

 

Muchas gracias de antemano u.u

Link to comment
Share on other sites

:mmm: En el formulario, el campo de texto se llama rut_coordinador, pero en el archivo crearcursodb.php estás tratando de acceder a coordinador_rut.

 

No sé qué será lo que te complica para llenar la lista, por lo que entiendo, sólo tendrías que hacer un SELECT que te devuelva todas las filas de la tabla docente :nose: .

 

Sobre la forma en que usas el campo obligatorio:

  • No me parece buena idea usar una lista desplegable para seleccionar si un curso es obligatorio o no. Me parece más lógico usar una casilla de verificación (también conocida como checkbox).

    <label><input type="checkbox" name="obligatorio" />Esto es obligatorio</label>
  • Deberías usar textos descriptivos en la interfaz de usuario, "s" y "n" no los encuentro muy claros. Me da la impresión que trataste de que los valores mostrados en la interfaz de usuario calzaran con los que usas internamente en tu base de datos (ya que el campo obligatorio es de tipo CHAR y toma valores "s" y "n") y así lograr que el INSERT te saliera más fácil ;) . Creo que mejor declaras este campo como BOOL, lo encuentro más lógico.
:huasonto:
Link to comment
Share on other sites

Lo puse así, y solo me sale el primer rut de cada campo (después cambiaré lo del campo obligatorio =P).

<?
include "conexion.php";
//session_start();

//if(!isset($_SESSION['username']))
//{
	//header("Location: login_coor.php");
	//exit;	
//}

$con=mysql_connect($host,$user,$pw) or die("Problemas al conectar al servidor");

mysql_select_db($db,$con) or die("Problemas al conectar a la BD");

$consulta=mysql_query("SELECT rut FROM docente") or die("Problemas al hacer la consulta.");

$row=mysql_fetch_array($consulta);

$consulta2=mysql_query("SELECT rut FROM coordinador");

$row2=mysql_fetch_array($consulta2);
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sin título</title>
</head>

<body><center>
<h1>Crear curso:</h1>
<form action="crearcursodb.php" method="post"><table width="293" border="0">
  <tbody>
      <tr>
      <td>Codigo:</td>
      <td><input type="text" name="codigo"></td>
    </tr>
    <tr>
      <td width="133">Nombre curso:</td>
      <td width="144"><input type="text" name="nombre"></td>
    </tr>
    <tr>
      <td>Curso obligatorio:</td>
      <td><select name="obligatorio">
      <option>s</option>
      <option>n</option>
      </select></td>
    </tr>
    <tr>
      <td>Rut profesor asignado:</td>
      <td> <select name="rut_docente">
      <option><? echo $row['rut'] ?></option>
      </select></td>
    </tr>
    <tr>
      <td>Rut coordinador</td>
      <td><select name="rut_docente">
      <option><? echo $row2['rut'] ?></option>
      </select></td>
    </tr>
    <tr>
      <td> </td>
      <td><input type="submit" name="crear" value="Crear"></td>
    </tr>
  </tbody>
</table>
</form>
</center><br>
<a href="opciones.php">Volver</a>
</body>
</html>

Como puedo arreglarlo para que se carguen los demás campos?

Link to comment
Share on other sites

Y como las recorro? xD
Perdón por lo noob, la verdad empecé a aprender este lenguaje hace poco, solo por el examen, y solo aprendí lo necesario para conectarme, hacer consultas, etc.

Y si no es por el lenguaje, simplemente no me da cabeza para codificar en general xd (see, elegí mal la carrera).
En fiin, espero puedas ayudarme y me tengas paciencia xD

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...