Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/02/2006, 17:39
Avatar de ALUCARD81
ALUCARD81
 
Fecha de Ingreso: abril-2005
Mensajes: 62
Antigüedad: 19 años, 1 mes
Puntos: 0
Pregunta Ayuda con el manejo de sesiones y un test con preguntas aleatorias

Compañeros un saludo, espero que puedan atudarme con este problema
bueno la situación es la siguiente, tengo que hacer unos test que cambien preguntas aleatoriamente, o sea que cada vez que entre alguien tenga otras preguntas y no las mismas (lo mismo al actualizar dohh).

Ahora vamos a los hechos, uso como servidor el IIS, es que soy novato en Apache y no se configurar alias y directorios virtuales, y como tengo que jalar varias cosas desde distintas partes no me puedo limitar a un solo directorio; resulta ya obvio que uso PHP se que es el 4, pero no se la version exacta bueno la verdad no recuerdo bien, es que lo hago en mi casa y n otengo internet ahi; base de datos mysql que tambien creo que es la version 5; el código lo obtuve de alguien , lo malo es que no recuerdo de donde y de quién, (asi que si el autore reconoce el código disculpas por no mencionar su nombre ), claro que hice las modificaciones básicas para que se adapte a lo que necesito; sobre la estetica aun conserva la original, es que primero quiero que funciones para poder arreglar esos detalles.

Bueno la BD contiene los siguientes campos
id=autonumerico
nivel=numero //1 o 2 o 3
verdadera=texto //repuesta verdadera
falsa1=texto //respuesta falsa1
falsa2=texto //respuesta falsa2
falsa3=texto //respuesta falsa3

El problema es que hasta la parte donde se generan las preguntas todo va bién, aunque me sale los siguiente:

<b>Warning</b>: session_start(): Cannot send session cookie - headers already sent by (output started at I:\Proyecto Final\eva_php\test.php:8) in <b>I:\Proyecto Final\eva_php\test.php</b> on line <b>9</b><br />
<br />
<b>Warning</b>: session_start(): Cannot send session cache limiter - headers already sent (output started at I:\Proyecto Final\eva_php\test.php:8) in <b>I:\Proyecto Final\eva_php\test.php</b> on line <b>9</b><br />

De el resultado ni hablar, mismo mensaje, pero sale en blanco con excepción del encabezado de la tabla y las celdas para explicar que significan los colores

Por si acaso este es el codigo, que originalmente le pertenece a un colega, se que lo minimo que podia hacer era recordar quien es, pero si lo supiera deberas se lo agradeceria

Código:
/************** bas_test.php *****************/
<HTML>

<HEAD>
  <TITLE></TITLE>
</HEAD>

<BODY>

<?php
session_start();
include("conn.php");
conexion();
?>
<STYLE>
* {font-size:12px}
</STYLE>
<BR/><BR/>
<FORM action="bas_resultado.php" method="post">
<?
$respuesta = '';
$trucado = 0; // 1 = trucado y 0 = no trucado
$num_preguntas = 5; //definir cantidad de preguntas
$sql = "SELECT * FROM bv_evaluaciones WHERE nivel = 1 ORDER BY RAND() LIMIT $num_preguntas";
if ($sql = mysql_query($sql))
{
 $a = 0;
 while($assoc = mysql_fetch_assoc($sql))
 {
  $pregunta[]=$assoc['pregunta'];
  $pregunta[$a][0]=$assoc['verdadera'];
  $pregunta[$a][1]=$assoc['falsa1'];
  $pregunta[$a][2]=$assoc['falsa2'];
  $pregunta[$a][3]=$assoc['falsa3'];
  $_SESSION['id_pregunta'][$a]=$assoc['id'];
  $a++;
 }
 mysql_free_result($sql);
 foreach($pregunta as $indice => $valor)
 {
  //Mezclar respuestas
  $arrayAleatorio = range(0,3);
  shuffle($arrayAleatorio);
  $nuevoIdCorrecta=array_search("0",$arrayAleatorio);
  $_SESSION['array'][$indice]=$arrayAleatorio;
  print "<B>$valor</B><BR/>\n";
  foreach($arrayAleatorio as $indice1 => $valor1)
   print "<INPUT type=\"radio\" name=\"Pregunta".$indice."\" value=\"".$valor1."\"/>"
   .$respuesta[$indice][$arrayAleatorio[$valor1]]
   .(($valor1 == $nuevoIdCorrecta && $trucado) ? " correcta" : "")
   ."<BR/>\n";
 }
}
?>
<INPUT type="submit" name="respuestas" value="Respuestas">
</FORM>
</BODY>
</HTML>

/************ bas_resultado.php ***************/
<html>
<head>
  <title>Resultados del cuestionario</title>
</head>
<body>
<?php
session_start();
include("conn.php");
conexion();
?>
<style>
* {font-size:12px}
.correcto
{
 border:3px ridge #336699;
 background: #EEEEFF;
 text-align: center
}
.incorrecto
{
 border:3px ridge #996633;
 background: #FFEEEE;
 text-align: center
}
.correctob
{
 background: #EEEEFF;
 text-align: center
}
.incorrectob
{
 background: #FFEEEE;
 text-align: center
}
.pregunta
{
 background: #EEFFEE;
 text-align: center
}
</style>
<TABLE border="1" align="center" width="100%">
<TR>
 <TH>Pregunta</TH>
 <TH>Correcta</TH>
 <TH>Incorrecta1</TH>
 <TH>Incorrecta2</TH>
 <TH>Incorrecta3</TH>
</TR>
<?
if (is_array($_SESSION['id_pregunta']))
foreach ($_SESSION['id_pregunta'] as $key => $value)
{
 $sql = "SELECT * FROM bv_evaluaciones WHERE id=".$value;
 if ($sql = mysql_fetch_assoc($sql))
 {
?>
<TR>
<?
  $assoc = mysql_fetch_assoc($sql);
  $envio = $_SESSION['array'][$key];
  $verdadera = array_search("0",$envio);
  $value1 = $_POST['Pregunta'.$key];
  print "<TD class=\"pregunta\"><B><TT>".assoc['pregunta']."</B></TT></TD>\n";
  print "<TD".((array_search("0",$envio) == $value1 && $value1!="")? " class=\"correcto\"" : " class=\"correctob\"")
  ."><TT>".$assoc['verdadera']."</TT></TD>\n";
  print "<TD".((array_search("1",$envio) == $value1 && $value1!="")? " class=\"incorrecto\"" : " class=\"incorrectob\"")
  ."><TT>".$assoc['falsa1']."</TT></TD>\n";
  print "<TD".((array_search("2",$envio) == $value1 && $value1!="")? " class=\"incorrecto\"" : " class=\"incorrectob\"")
  ."><TT>".$assoc['falsa2']."</TT></TD>\n";
  print "<TD".((array_search("3",$envio) == $value1 && $value1!="")? " class=\"incorrecto\"" : " class=\"incorrectob\"")
  ."><TT>".$assoc['falsa3']."</TT></TD>\n";
?>
</TR>
<?
 }
}
session_destroy();
?>
</TABLE>
<BR/><BR/>
<TABLE border="1" align="center" width="50%">
 <TR>
  <TD class="correcta">&nbsp;&nbsp;&nbsp;</TD><TD>Respuesta enviada y acertada</TD>
 </TR>
 <TR>
  <TD class="incorrecta">&nbsp;&nbsp;&nbsp;</TD><TD>Respuesta enviada y fallada</TD>
 </TR>
 <TR>
  <TD class="correctab">&nbsp;&nbsp;&nbsp;</TD><TD>Respuesta correcta</TD>
 </TR>
 <TR>
  <TD class="incorrectab">&nbsp;&nbsp;&nbsp;</TD><TD>Respuesta incorrecta</TD>
 </TR>
</TABLE>
</body>
</html>
Espero que puedan ayudarme con este predicamento, agradezco de antemano cualquier ayuda, gracias, un saludo