Foros del Web » Programando para Internet » PHP »

Problema de examen insertando relaciones de tablas e otra tabla

Estas en el tema de Problema de examen insertando relaciones de tablas e otra tabla en el foro de PHP en Foros del Web. A ver este es un problema que no logro hacer funcionar. Se trata de un gestor de viajes. Tengo tabla clientes con dni(key),nombre,contraseña,telefono. Tabla viajes ...
  #1 (permalink)  
Antiguo 28/05/2008, 08:01
 
Fecha de Ingreso: mayo-2008
Mensajes: 228
Antigüedad: 11 años, 8 meses
Puntos: 2
Problema de examen insertando relaciones de tablas e otra tabla

A ver este es un problema que no logro hacer funcionar.
Se trata de un gestor de viajes.
Tengo tabla clientes con dni(key),nombre,contraseña,telefono.
Tabla viajes con campos id_viaje(key), fecha(date),precio, num_plazas
Tabla reservas que almacena una tupla por cada viaje que se hace, osea: idviaje(key),dni(key),plazas,pagado.

Me piden:

Logueo de la pagina.

Una vez logueado, que pida id_viaje, fecha, y no permita reservar un viaje que no tenga plazas, si lo esta debe decirlo. Si lo podemos reservar es que esta libre y almacenamos el nombre del mismo en la tabla reservas.

Cada vez que reservamos debe actualizar la columna num_plazas y restarle las plazas que se piden.
  #2 (permalink)  
Antiguo 28/05/2008, 10:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 8 meses
Puntos: 2135
Respuesta: Problema de examen insertando relaciones de tablas e otra tabla

Hola arts,

¿Cual es tu duda?

Saludos.
  #3 (permalink)  
Antiguo 28/05/2008, 11:35
 
Fecha de Ingreso: mayo-2008
Mensajes: 228
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: Problema de examen insertando relaciones de tablas e otra tabla

A ver las tablas, en el mysql query

CREATE TABLE `agencia`.`clientes` (
`id_cliente` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`dni` INTEGER UNSIGNED NOT NULL,
`nombre` VARCHAR(45) NOT NULL,
`clave` VARCHAR(45) NOT NULL,
`telefono` INTEGER UNSIGNED NOT NULL,
PRIMARY KEY (`id_cliente`)
)

CREATE TABLE `agencia`.`viajes` (
`idviaje` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`fecha` DATETIME NOT NULL,
`precio` INTEGER UNSIGNED NOT NULL,
`num_plazas` INTEGER UNSIGNED NOT NULL,
PRIMARY KEY (`idviaje`)
)

CREATE TABLE `agencia`.`reserva` (
`id_viaje` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`dni` VARCHAR(45) NOT NULL,
`plazas` INTEGER UNSIGNED NOT NULL,
`pagado` INTEGER UNSIGNED NOT NULL,
PRIMARY KEY (`id_viaje`)
)

Ahora mis paginas:

Empiezo registrando en un formulario los clientes:
FORM_VIAJES.PHP
<html>


</head>

<body>
<p> Registro de <font size="2" color="#000033">Usuario</font>: </p>
<form action="regviajes.php" method="post">
<p><font size="2" color="#000033">DNI</font>:
<input type="text" name="dni" value="">
<br>
<br/>
<font size="2" color="#000033">Clave</font>:
<input type="text" name="clave" />
<br>
<br/>
Nombre<font size="2" color="#000033"> </font>:
<input type="text" name="nombre" />
</p>
<p>Telefono: <input type="text" name="telefono" /><br>
<br>
<input type="submit" name="enviar" value="Enviar datos" />
</p>
</form>

</body>



REGVIAJES.PHP

<?php
$conexion = mysql_connect ("localhost", "root", "root")
or die ("No se puede conectar con el servidor");

mysql_select_db ("agencia")
or die ("No se puede seleccionar la base de datos");
$instruccion = "insert into clientes (dni, clave, nombre, telefono) values('".$_POST['dni']."','".$_POST['clave']."','".$_POST['nombre']."','".$_POST['telefono']."');";
$consulta = mysql_query ($instruccion, $conexion)
or die ("Fallo en la consulta, $instruccion");
echo "Ya has sido registrado"

?>


<html>
<body>

<a href="1.php" style="color:red">Pulse aqui para loguearse con su cuenta puesto que ya se ha creado </a>
</body>

</html>



1.PHP

<?php
if (isset($_GET['malo']))
$mensaje = "usuario no valido";
$_SESSION['usuario_valido'] = $usuario;
$dni = "clave";
$_SESSION['clave'] = $dni;
$conexion = mysql_connect ("localhost", "root", "root") //localhost(de base de datos), (root,root usuario, contraseña) de MySql
or die ("No se puede conectar con el servidor");
mysql_select_db ("agencia")
or die ("No se puede seleccionar la base de datos");
?>

<html>

<body>
<form action="2.php" method="post">
<p>Logu&eacute;ate aqu&iacute;: <br>
<? echo $dni; ?><font face="Verdana, Arial, Helvetica, sans-serif"> <br>
Usuario:<br/>
<input type="text" name="dni" size="8" maxlength="12">
<br/>
Contrasena:<br/>
<input name="clave" type="password" size="8" />
<input type="submit" name="enviar" value="Aceptar" />
</font> </p>
</form>


</body>
</html>


2.PHP

<?php
$conexion = mysql_connect ("localhost", "root", "root") //localhost(de base de datos), (root,root usuario, contraseña) de MySql
or die ("No se puede conectar con el servidor");
mysql_select_db ("agencia")
or die ("No se puede seleccionar la base de datos");
session_start();
//$usuario = $_POST['usuario']; //recuperas con post
//$_SESSION ['usuario'] = $usuario; //guardas nombre en una variable de sesion
$instruccion = "select dni,nombre from clientes where dni = '{$_POST['dni']}' and clave = '{$_POST['clave']}'";
$consulta = mysql_query ($instruccion, $conexion)
or die ("Fallo en la consulta::".$instruccion);

$nfilas = mysql_num_rows ($consulta);
mysql_close ($conexion);
if ($nfilas > 0)
{
$dni = $_POST['dni'];
session_register ("usuario_valido");
$_SESSION['usuario_valido'] = $dni;
}
else
header('Location: index.php?malo');

?>

<html>
<body>
<?
echo "dni: $dni";

//BUSQUEDA
$conexion = mysql_connect ("localhost", "root", "root") //localhost(de base de datos), (root,root usuario, contraseña) de MySql
or die ("No se puede conectar con el servidor");
mysql_select_db ("agencia")
or die ("No se puede seleccionar la base de datos");
// Enviar consulta
$instruccion = "select * from viajes";
$consulta = mysql_query ($instruccion, $conexion)
or die ("Fallo en la consulta:: ".$instruccion);
// Mostrar resultados de la consulta
$nfilas = mysql_num_rows ($consulta);
if ($nfilas > 0)
{
print ("<TABLE BORDER=3 >\n");
print ("<tr BGCOLOR=#00FFFF>");
print ("<TH>accion</TH>\n");
print ("<TH>fecha</TH>\n");
print ("<TH>precio</TH>\n");
print ("<TH>numero de plazas</TH>\n");
print ("</TR>\n");

for ($i=0; $i<$nfilas; $i++)
{
$resultado = mysql_fetch_array ($consulta);
print ("<TR ALIGN=CENTER>\n");
print ("<TD><a href='reservar.php?idacomprar=" . $resultado['idviaje'] . "'>Reservar</a></TD>\n");
print ("<TD>" . $resultado['fecha'] . "</TD>\n");
print ("<TD>" . $resultado['precio'] . "</TD>\n");
print ("<TD>" . $resultado['num_plazas'] . "</TD>\n");
}

print ("</TABLE>\n");
}
else
print ("Error, intento de visualizacion de usuarios sin estar conectado ");

// Cerrar conexión
mysql_close ($conexion);
?>



</body>
</html>

AKI ME EMPIEZO A LIAR
RESERVAR.PHP

<?php
$conexion = mysql_connect ("localhost", "root", "root") //localhost(de base de datos), (root,root usuario, contraseña) de MySql
or die ("No se puede conectar con el servidor");
mysql_select_db ("agencia")
or die ("No se puede seleccionar la base de datos");
// Enviar consulta
$instruccion = "SELECT * FROM viajes where id_viaje = {$_GET['idacomprar']}";
$consulta = mysql_query ($instruccion, $conexion)
or die ("Fallo en la consulta:: ".$instruccion);
// Mostrar resultados de la consulta
$nfilas = mysql_num_rows ($consulta);
if ($nfilas > 0)
{
$resultado = mysql_fetch_array ($consulta);
}
?>
<html>
<body>
<form action="reservado.php" method="post">
<input type="hidden" name="idacomprar" value="<?php echo $_GET['idacomprar'] ?>"><br />
<input type="hidden" name="precio" value="<?php echo $resultado['Precio'] ?>">
cantidad<input type="text" name="cantidad"><br />
<input type="submit" name="dale" value="añadir al carrito">
</form>
</body>
</html>


RESERVADO.PHP
Aqui necesito saber como obtengo las variables DNI, precio de la tabla viajes que es lo mismo que pagado de la tabla reserva y restarle 1, -2 segun la cantidad de viajes disponibles. Finalmente se insertan en la tabla reservas.
Esto es justamente lo que no se.

Última edición por arts; 28/05/2008 a las 12:46
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 08:46.