Ver Mensaje Individual
  #6 (permalink)  
Antiguo 13/06/2014, 16:39
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Consulta imprimir Datos

Código PHP:
Ver original
  1. $preguntas = new Cuestionario("America");
  2. $preguntas->addPregunta("Cuando los europeos descubrieron oficialmente de America ?",array(1942,1542,1492),3,"historia");
  3. $preguntas->addPregunta("Quien era Atahuala?",array("un espanol conquistador","un jeque americano"),2,"historia");
  4. $preguntas->addPregunta("De que nacionalidad era Cristobal Colon ?",array("No se sabe con certeza","italiano","portugues","ingles"),1,"historia");
  5.  
  6. echo $preguntas;

RESULTADO:

Código HTML:
Ver original
  1. Cuestionario: America
  2.  
  3.  
  4. Cuando los europeos descubrieron oficialmente de America ?
  5.  
  6. ( ) 1942
  7.  
  8. ( ) 1542
  9.  
  10. ( ) 1492
  11.  
  12.  
  13. Quien era Atahuala?
  14.  
  15. ( ) un espanol conquistador
  16.  
  17. ( ) un jeque americano
  18.  
  19.  
  20. De que nacionalidad era Cristobal Colon ?
  21.  
  22. ( ) No se sabe con certeza
  23.  
  24. ( ) italiano
  25.  
  26. ( ) portugues
  27.  
  28. ( ) ingles

CODIGO:

Código PHP:
Ver original
  1. <?php
  2.  
  3. /*
  4.     @author: Pablo Bozzolo (italico76)
  5.     usando notepad :)
  6. */
  7. Class Cuestionario implements Countable, Iterator
  8. {
  9.     private $_nombre = NULL;  // del cuestionario
  10.     private $_preguntas= array();
  11.     private $_mode = NULL;
  12.        
  13.     /*
  14.         @param nombre del cuestionario
  15.         @param modo ('OBJECT' o 'ASSOCIATIVE')
  16.         @return void   
  17.     */ 
  18.     public function __construct($nombre,$mode='OBJECT')
  19.     {
  20.         if (($mode != 'OBJECT') and ($mode != 'ASSOCIATIVE') )
  21.             throw new Exception ("Modo incorrecto: $mode");
  22.            
  23.         $this->_nombre=$nombre;
  24.         $this->_mode = $mode;      
  25.     }
  26.    
  27.     public function getNombre()
  28.     {
  29.         return $this->_nombre;
  30.     }
  31.  
  32.     public function addPregunta($cadena, $opciones=null, $respuesta=null, $categoria=null)
  33.     {  
  34.         $preguntas = array ('pregunta'=>$cadena,'opciones'=>$opciones,'respuesta'=>$opciones[$respuesta-1],'categoria'=>$categoria);
  35.        
  36.         if ($this->_mode == 'OBJECT')
  37.             $this->_preguntas[]= (object) $preguntas;
  38.         else
  39.             $this->_preguntas[]= $preguntas;
  40.        
  41.         return $this;
  42.     }
  43.  
  44.     function rewind() {        
  45.         reset($this->_preguntas);
  46.     }
  47.  
  48.     function current()
  49.     {
  50.         return current($this->_preguntas);
  51.     }
  52.  
  53.     function key()
  54.     {        
  55.         return key($this->_preguntas);
  56.     }
  57.  
  58.     function next()
  59.     {
  60.         next($this->_preguntas);        
  61.     }
  62.  
  63.     function valid()
  64.     {  
  65.         return isset($this->_preguntas[$this->key()]);
  66.     }
  67.    
  68.     // contable
  69.     function count()
  70.     {  
  71.         return count($this->_preguntas);
  72.     }
  73.    
  74.     function __toString()
  75.     {
  76.         $out = "<h3>Cuestionario: {$this->_nombre}</h3><br/>";
  77.        
  78.         foreach ($this->_preguntas as $pregunta)
  79.         {
  80.             $out .= "<span>{$pregunta->pregunta}</span><p/>";
  81.            
  82.             foreach ($pregunta->opciones as $option)   
  83.                 $out .= "<input  type=\"radio\" name=\"{$this->_nombre}[]\" value=\"\"/>{$option}</option><p/>";       
  84.             $out .= "<br/>";           
  85.         }
  86.        
  87.         return $out;   
  88.     }
  89.    
  90. }
  91.  
  92. $preguntas = new Cuestionario("America",'OBJECT');
  93. $preguntas->addPregunta("Cuando los europeos descubrieron oficialmente de America ?",array(1942,1542,1492),3,"historia");
  94. $preguntas->addPregunta("Quien era Atahuala?",array("un espanol conquistador","un jeque americano"),2,"historia");
  95. $preguntas->addPregunta("De que nacionalidad era Cristobal Colon ?",array("No se sabe con certeza","italiano","portugues","ingles"),1,"historia");
  96.  
  97. echo $preguntas;

OTRA FORMA... mas manual:

Código PHP:
Ver original
  1. // en vez de hacer un "echo" ...  dandote la posibilidad de personalizar el HTML generado
  2.  
  3. $nombre = $preguntas->getNombre();
  4.  
  5. foreach ($preguntas as $pregunta)
  6. {
  7.     echo "<span>{$pregunta->pregunta}</span><p/>";
  8.            
  9.     foreach ($pregunta->opciones as $option)   
  10.         echo "<input  type=\"radio\" name=\"{$nombre}[]\" value=\"\"/>{$option}</option><p/>";
  11.        
  12.     echo "<br/>";  
  13. }


COMO RECUPERAR LAS RESPUESTAS "CORRECTAS" para COMPARAR:

Código PHP:
Ver original
  1. foreach ($preguntas as $key => $pregunta)
  2.     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
__________________
Salu2!

Última edición por Italico76; 13/06/2014 a las 18:59