Foros del Web » Programando para Internet » PHP »

Ayuda con el manejo de sesiones y un test con preguntas aleatorias

Estas en el tema de Ayuda con el manejo de sesiones y un test con preguntas aleatorias en el foro de PHP en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 01/02/2006, 17:39
Avatar de ALUCARD81  
Fecha de Ingreso: abril-2005
Mensajes: 62
Antigüedad: 19 años
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
  #2 (permalink)  
Antiguo 01/02/2006, 21:41
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
session_start necesita enviar cabeceras http, y no se puede enviar ninguna cabecera http después de enviar texto de la página.

Ese es el error que te muestra.

Deberías poner <?php en la primera línea del archivo, en la primer columna y hacer el procesamiento ANTES de enviar nada.

Luego, si seguís teniendo problemas, pos te volvés por acá

Saludos.
  #3 (permalink)  
Antiguo 03/02/2006, 07:29
Avatar de ALUCARD81  
Fecha de Ingreso: abril-2005
Mensajes: 62
Antigüedad: 19 años
Puntos: 0
De acuerdo Gracias!!!! el consejo fue muy efectivo

Bueno, hice lo que me dijiste estimado alvlin, pues el problema era ese, ahora funciona como se supone que funcione, ahora tengo que trabajar en los ultimos detalles, hubiera respondido antes, pero no tengo Internet en casa, ahora a preparar todo para defender mi proyecto

Gracias!!! Muchas Gracias!!! un abrazo, hasta otra oportunidad
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 00:43.