Código PHP:
Ver original$preguntas = new Cuestionario("America");
$preguntas->addPregunta("Cuando los europeos descubrieron oficialmente de America ?",array(1942,1542,1492),3,"historia"); $preguntas->addPregunta("Quien era Atahuala?",array("un espanol conquistador","un jeque americano"),2,"historia"); $preguntas->addPregunta("De que nacionalidad era Cristobal Colon ?",array("No se sabe con certeza","italiano","portugues","ingles"),1,"historia");
echo $preguntas;
RESULTADO:
Código HTML:
Ver originalCuestionario: America
Cuando los europeos descubrieron oficialmente de America ?
( ) 1942
( ) 1542
( ) 1492
Quien era Atahuala?
( ) un espanol conquistador
( ) un jeque americano
De que nacionalidad era Cristobal Colon ?
( ) No se sabe con certeza
( ) italiano
( ) portugues
( ) ingles
CODIGO:
Código PHP:
Ver original<?php
/*
@author: Pablo Bozzolo (italico76)
usando notepad :)
*/
Class Cuestionario implements Countable, Iterator
{
private $_nombre = NULL; // del cuestionario
private $_preguntas= array(); private $_mode = NULL;
/*
@param nombre del cuestionario
@param modo ('OBJECT' o 'ASSOCIATIVE')
@return void
*/
public function __construct($nombre,$mode='OBJECT')
{
if (($mode != 'OBJECT') and ($mode != 'ASSOCIATIVE') )
throw new Exception ("Modo incorrecto: $mode");
$this->_nombre=$nombre;
$this->_mode = $mode;
}
public function getNombre()
{
return $this->_nombre;
}
public function addPregunta($cadena, $opciones=null, $respuesta=null, $categoria=null)
{
$preguntas = array ('pregunta'=>$cadena,'opciones'=>$opciones,'respuesta'=>$opciones[$respuesta-1],'categoria'=>$categoria);
if ($this->_mode == 'OBJECT')
$this->_preguntas[]= (object) $preguntas;
else
$this->_preguntas[]= $preguntas;
return $this;
}
reset($this->_preguntas
); }
{
}
{
return key($this->_preguntas
); }
{
}
function valid()
{
return isset($this->_preguntas
[$this->key()]); }
// contable
{
return count($this->_preguntas
); }
function __toString()
{
$out = "<h3>Cuestionario: {$this->_nombre}</h3><br/>";
foreach ($this->_preguntas as $pregunta)
{
$out .= "<span>{$pregunta->pregunta}</span><p/>";
foreach ($pregunta->opciones as $option)
$out .= "<input type=\"radio\" name=\"{$this->_nombre}[]\" value=\"\"/>{$option}</option><p/>";
$out .= "<br/>";
}
return $out;
}
}
$preguntas = new Cuestionario("America",'OBJECT');
$preguntas->addPregunta("Cuando los europeos descubrieron oficialmente de America ?",array(1942,1542,1492),3,"historia"); $preguntas->addPregunta("Quien era Atahuala?",array("un espanol conquistador","un jeque americano"),2,"historia"); $preguntas->addPregunta("De que nacionalidad era Cristobal Colon ?",array("No se sabe con certeza","italiano","portugues","ingles"),1,"historia");
echo $preguntas;
OTRA FORMA... mas manual:
Código PHP:
Ver original// en vez de hacer un "echo" ... dandote la posibilidad de personalizar el HTML generado
$nombre = $preguntas->getNombre();
foreach ($preguntas as $pregunta)
{
echo "<span>{$pregunta->pregunta}</span><p/>";
foreach ($pregunta->opciones as $option)
echo "<input type=\"radio\" name=\"{$nombre}[]\" value=\"\"/>{$option}</option><p/>";
echo "<br/>";
}
COMO RECUPERAR LAS RESPUESTAS "CORRECTAS" para COMPARAR:
Código PHP:
Ver originalforeach ($preguntas as $key => $pregunta)
echo "Respuesta correcta a la pregunta #$key : {$pregunta->respuesta}<br/>";
Si te fijas... no me enredé manteniendo un indice interno ($this->_indice) sino que agrupe todo para manejar todo junto ***
RESULTADO: Cita: Respuesta correcta a la pregunta #0 : 1492
Respuesta correcta a la pregunta #1 : un jeque americano
Respuesta correcta a la pregunta #2 : No se sabe con certeza