Ver Mensaje Individual
  #5 (permalink)  
Antiguo 01/10/2007, 08:22
aviana
 
Fecha de Ingreso: enero-2002
Ubicación: Graná
Mensajes: 646
Antigüedad: 22 años, 4 meses
Puntos: 0
Re: Problema con sesiones

En este otro fichero, llamado cambiar_datos_personales.php, (El anterior es colegiados.php), al darle a buscar clínicas, la variable de sesión num_colegiado cambia de valor:

<?php
include_once ('config.php');
include_once ('config_bbdd.php');
include_once ('funciones.php');

echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Coleg&iacute;o Profesional de Pod&oacute;logos de Andaluc&iacute;a</title>
<link href="estilos.css" rel="stylesheet" type="text/css" />
</head>
<body>';

if ((!isset ($_SESSION['num_colegiado'])) || (!isset($_SESSION['usuario'])))
echo '<table><tr><td align="center" class="texto_destacado">Lo sentimos, pero esta sección sólo es para colegiados</td></tr></table>';
else{

echo $_SESSION['num_colegiado'];

//Si el colegiado ha pinchado en guardar cambios...
if (isset($_POST['guardar_cambios'])){
//comprobación de si ha rellenado los campos de cambio de clave
if (@$_POST['nueva_clave']!=@$_POST['clave_repetida'])
echo '<table width="617" border="0">
<tr><td class="texto_destacado">Error, las claves no coinciden</td></tr></table>';
else
if (@$_POST['usuario']=="")
echo '<table width="617" border="0">
<tr><td class="texto_destacado">Error, el usuario no puede estar vacío</td></tr></table>';
else{
$consulta="update colegiado set usuario='".$_POST['usuario']."', clave='".$_POST['nueva_clave']."', nombre='".$_POST['nombre']."', apellidos='".$_POST['apellidos']."', población='".$_POST['población']."', provincia='".$_POST['provincia']."', teléfono1='".$_POST['teléfono1']."', correoe='".$_POST['correoe']."', estado='".$_POST['estado']."' where colegiado='".$_SESSION['num_colegiado']."'";
mysql_query ($consulta) or vuelca_error ($fichero_registro, 'Error en '.$_SERVER['PHP_SELF'].' al hacer la consulta: '.$consulta.'. El error fue: '.mysql_error().'<br>');
$consulta="insert into ejerce values ('".$_SESSION['num_colegiado']."', '".$_POST['clínica']."')";
mysql_query ($consulta) or vuelca_error ($fichero_registro, 'Error en '.$_SERVER['PHP_SELF'].' al hacer la consulta: '.$consulta.'. El error fue: '.mysql_error().'<br>');
echo '<table width="617" border="0">
<tr><td class="texto_destacado">Datos modificados correctamente</td></tr></table>';
}
}

echo '<div align="left">
<form name="guardar_cambios_personales" action="'.$_SERVER['PHP_SELF'].'" method="post">
<table width="617" height="330" border="0">
<!--DWLayoutTable-->
<tr>
<td width="611">
<div align="left">
<table width="609" height="324" border="0">
<tr>
<td height="21" bgcolor="#FFFFFF"><img src="img/titulo-el-colegio.jpg" alt="El colegio" width="605" height="42" /></td>
</tr>
<tr>
<td height="73" bgcolor="#FFFFFF"><table width="590" height="124" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="590" class="Estilo6"><div align="justify" class="Estilo8">Colegiados/Modificar datos personales </div></td>
</tr>
<tr>
<td height="5" class="Estilo6"><div align="justify" class="Estilo9">En esta secci&oacute;n los colegiados pueden cambiar sus datos personales : </div></td>
</tr>
<tr>
<td class="Estilo6"><table width="590" border="0">
<tr>
<td colspan="2" bgcolor="#EBEBEB" class="textos">Datos personales: </td>
<td colspan="4" bgcolor="#EBEBEB" class="textos">&nbsp;</td>
</tr>';

//parte de datos personales del colegiado
//la idea es que cada campo que esté en la bbdd, aparezca relleno
//formo la matriz de argumentos y hago la búsqueda
$argumentos=array('colegiado'=>$_SESSION['num_colegiado']);
$detalle=@busqueda ($argumentos, $tabla_colegiados, $campos_busqueda_colegiados_detalle, 1);
//como sólo hay un resultado, no hace falta un bucle while
list ($num_colegiado, $colegiado)=each($detalle);

print_r ($colegiado);

for ($i=1; $i<(count($colegiado)/2)-1; $i++){
echo '<tr>';
for ($j=0; $j<2; $j++){
list ($llave, $valor)=each ($colegiado);
echo '<td class="Estilo10">'.$llave.'</td>';
//si el usuario ha rellenado los campos y hay recarga de página, que no los pierda
if (isset ($_POST[$llave]))
echo '<td class="textos"><input name="'.$llave.'" type="text" value="'.$_POST[$llave].'" id="'.$llave.'" size="30" /></td>';
else
echo '<td class="textos"><input name="'.$llave.'" type="text" value="'.$valor.'" id="'.$llave.'" size="30" /></td>';
}
echo '</tr>';
}
//los 2 últimos valores no se pueden listar dentro del bucle porque el último es un campo de selección
list ($llave, $valor)=each ($colegiado);
echo '<td class="Estilo10">'.$llave.'</td>';
//si el usuario ha rellenado los campos y hay recarga de página, que no los pierda
if (isset ($_POST[$llave]))
echo '<td class="textos"><input name="'.$llave.'" type="text" value="'.$_POST[$llave].'" id="'.$llave.'" size="30" /></td>';
else
echo '<td class="textos"><input name="'.$llave.'" type="text" value="'.$valor.'" id="'.$llave.'" size="30" /></td>';

//campo de selección "Estado"
list ($llave, $valor)=each ($colegiado);
echo '<td class="Estilo10">'.$llave.'</td>
<td class="textos"><select name="'.$llave.'" id="'.$llave.'" />';

//el siguiente switch es para que aparezca seleccionado el estado del colegiado
switch ($_POST['estado']){
case 'de baja':
echo '<option value="NULL">Elija uno</option>
<option value="de baja" selected>De baja</option>
<option value="ejerciente">Ejerciente</opton>
<option value="inactivo">Inactivo</option>
<option value="jubilado">Jubilado</option>
</select>
</td>';
break;
case 'ejerciente':
echo '<option value="NULL">Elija uno</option>
<option value="de baja">De baja</option>
<option value="ejerciente" selected>Ejerciente</opton>
<option value="inactivo">Inactivo</option>
<option value="jubilado">Jubilado</option>
</select>';
break;
case 'inactivo':
echo '<option value="NULL">Elija uno</option>
<option value="de baja" selected>De baja</option>
<option value="ejerciente">Ejerciente</opton>
<option value="inactivo" selected>Inactivo</option>
<option value="jubilado">Jubilado</option>
</select>';
break;
case 'jubilado':
echo '<option value="NULL">Elija uno</option>
<option value="de baja" selected>De baja</option>
<option value="ejerciente">Ejerciente</opton>
<option value="inactivo">Inactivo</option>
<option value="jubilado" selected>Jubilado</option>
</select>';
break;
default:
echo '<option value="NULL" selected>Elija uno</option>
<option value="de baja">De baja</option>
<option value="ejerciente">Ejerciente</opton>
<option value="inactivo">Inactivo</option>
<option value="jubilado">Jubilado</option>
</select>';
break;
}
echo '<tr>
<td class="Estilo10">Nueva clave</td>
<td class="textos"><input name="nueva_clave" type="password" id="nueva_clave" size="30" /></td>
<td class="Estilo10">Repita la clave nueva</td>
<td class="textos"><input name="clave_repetida" type="password" id="clave_repetida" size="30" /></td>
</tr>
<tr>
<td colspan="6" bgcolor="#EBEBEB" class="Estilo10"><span class="textos">Datos de las cl&iacute;nicas donde ha ejercido</span></td>
</tr>';

/*parte donde se muestran las clínicas donde ha trabajado. No se puede usar la función busqueda porque ésta sólo realiza
búsquedas simples y en este caso, hay que buscar en dos tablas*/
$consulta="select id_clínica, dirección, cp, localidad, provincia, teléfono from clinica where id_clínica in (select id_clínica from ejerce where num_colegiado='".$_SESSION['num_colegiado']."')";
$aux=mysql_query($consulta) or vuelca_error ($fichero_registro, 'Error en '.$_SERVER['PHP_SELF'].' al hacer la consulta: '.$consulta.'. El error fue: '.mysql_error().'<br>');
$k=0;
//recorro cada consulta
while ($resultado=mysql_fetch_assoc($aux)){
echo '<tr><td colspan="4" bgcolor="#EBEBEB" class="Estilo10">Clínica '.++$k.'</td></tr>';
//para sacar los resultados en varias filas y 2 columnas
for ($i=0; $i<(count($resultado)/2); $i++){
echo '<tr>';
for ($j=0; $j<2; $j++){
//obtengo la clave y el valor de cada campo de cada clínica
list ($llave, $valor)=each ($resultado);
echo '<td class="Estilo10">'.$llave.'</td>
<td class="textos"><input name="'.$llave.'_clínica" type="text" value="'.$valor.'" id="'.$llave.'_clínica" readonly size="30" /></td>';
}
}
}
echo '</td></tr>
<tr>
<td colspan="6" bgcolor="#EBEBEB" class="Estilo10"><span class="textos">Registrar un nuevo trabajo en una Cl&iacute;nica</span></td>
</tr>
<tr>
<td class="Estilo10">Provincia</td>
<td class="textos"><select name="provincia_nueva_clínica" id="select">';
//lo siguiente es para que al darle a buscar, ponga en el campo de selección la última provincia seleccionada