Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/06/2006, 03:24
leeann
 
Fecha de Ingreso: febrero-2006
Mensajes: 297
Antigüedad: 18 años, 1 mes
Puntos: 1
duda con consultas y sesiones

hola, ya he hecho esta pregunta antes pero ahora está mas completa.
Tengo el siguiente problema con mi página:
En cada página, llamo a la funcion header para que mire si existe una variable de sesion o no. Si no existe, se me cargará un menú donde saldrán las opciones de identificarse y registrarse. Si existe, dependiendo del usuario se cargarán unas opciones u otras:

Saludo.php:

Código:
<?php
include "../funciones/diseño/cabecera.php";
$dni=$_SESSION ['dni'];
$conexion= mysql_connect("localhost","root","") or die("error al conectar");
mysql_select_db("cybernanis",$conexion) or die("error al elegir base de datos");


	$mensajeinfo="INFORMACION";
	incluirCabecera($mensajeinfo);

$consulta="select nombre from clientes where dni = '$dni'";
$usuario = mysql_query($consulta,$conexion) or die("error al iniciar usuario");
$nombre= mysql_fetch_array($usuario);

$mensaje="Buenos dias ";
$mensaje .= $nombre['nombre'];
$mensaje .=", seleccione una de las opciones del menú.<br />
En caso de duda consulte la ayuda";
echo $mensaje;

incluirPie();
?>
cabecera.php:

Código:
<?php
function incluirCabecera($mensajeinfo)
{
	require_once 'header.php';//mira las sesiones
	require_once 'tabla1.php';//tables para el diseño
	
	echo "<H4>" . $mensajeinfo . "</H4>";

	require_once 'tabla2.php';
}

function incluirPie()
{
	require_once 'tabla3.php';
	require_once 'footer.php';
}
?>
header.php:

Código:
<?php
session_start();
/* Se crea todo el diseño de la página dependiendo del usuario*/

if (isset($_SESSION ['usuario'] )){
	if(($_SESSION ['usuario'] )!=""){
	include 'h2.php';
	}else{
	include 'h1.php';
	}

}
else {
include 'h1.php';
}

?>
h2.php: (menú de los identificados)

Código:
<?php
session_start();
/* Se crea todo el diseño de la página dependiendo del usuario*/
?>
<html>
<head>
<link rel="STYLESHEET"type="text/css" href="../css/estilocuerpo.css">
</head>
<body link="yellow" vlink="#ffffcc" alink="#black">
<?
//link para los enlaces normales
//vlink para los enlaces visitados
//alink para los enlaces activos
?>
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
	<table width="100%" cellspacing="2" cellpadding="2" border="0" bgcolor="white">
    		<tr align="left">
			<td width="20%"></td>
 			<td width="30%"><IMG height=40 alt="" src="logo.gif" width=120 border=0></td>
 			<td width="50%"><SPAN style="font-size:28pt;">
                    <b>pagina web</b>
                    </span>
            </td>
    		</tr>
	</table>
</tr>
<?php

/*
**************************************************************
Se crea el menú según el usuario que vaya a entrar
Dependiendo del usuario del que se trate se mostrará un
menu u otro
**************************************************************
*/

if (isset($_SESSION ['usuario'] )){

  //menu superior
?>
<tr>

<style type =text/css>
.blanco{font-size:16px; color:white;}
</style>

	<table width="100%" cellspacing="2" cellpadding="2" border="2" bordercolor="white" bgcolor="#1C85BD">
    		<tr align="center">
			<td width="80%" bgcolor="white"></td>
 			<td width="10%">mandar email</td>
 			<td width="10%"><a class="blanco" href="..funciones\salir.php" title="desconectar">salir</a></td>
    		</tr>
	</table>
</tr>
<?
}
?>
<tr>
	<table width="100%" cellspacing="4" heigh="100%" cellpadding="5" border="0">
    		<tr>
	           <td WIDTH="200" valign="top"><table border="1" cellpadding="5" bgcolor="#1C85BD" width="100%" >

<?php



    switch ($_SESSION ['usuario'])
    {
    case 'clientes':
   {
 ?>

menú cliente

<?php
    			

    			break;
}
    case 'administrador':
   {
    ?>
			
			menú administrador


<?php
			break;
}
    }

//final

 ?>			        </table>
    </td>

 	<td WIDTH="75%"><table border="0" width="100%">
			<tr>
            <td valign="top">

El problema es que en saludo.php (la primera pagina que sale tras identificarse) si intento mostrar el nombre del usuario, cuando accedo una vez al menú la siguiente página se me carga con el menú inicial de identificarse y registrarse en vez de con el de su propio usuario. En cambio si elimino las tres lineas que acceden a la base de datos $consulta="select nombre from clientes where dni = '$dni'";
$usuario = mysql_query($consulta,$conexion) or die("error al iniciar usuario");
$nombre= mysql_fetch_array($usuario);
Luego me va bien el menú, es decir si es el administrador, pinche en la opcion que pinche en la siguiente página se me muestra el menú del administrador.
He hecho pruebas, y la sesion sigue existiendo solo que se me queda $_SESSION[‘USUARIO’]=”” y no se porque.

Que tiene que ver la consulta con la sesion? Qué hago mal?