Comunidad de diseño web y desarrollo en internet online

Concurso en php problemas con recarga de formularios

Citar            
MensajeEscrito el 13 Ene 2012 08:29 pm
Hola a todos, ayudme por favor. Estoy intentando hacer un concurso en mi web y necesito de los capos de cristalab.
El concurso se basa en lo siguiente.

• Al usuario se le harán 5 preguntas, cada pregunta vale 10 Pts. Por lo que al completarlo el mismo habrá acumulado 50 pts.
• Se debe tomar el tiempo en que lo hace mediante un cronometro, ya que dependiendo del tiempo el usuario accederá a puntos extras. Si lo hace en menos de 2 minutos bono 50 pts, si lo hace en mas de 2 minutos pero menos de 3 el bono es de 30 pts y si lo hace en mas de 3 minutos su bono es de 15 pts. Estos bonos deben ser sumados al puntaje inicial de 50 puntos.
• Después de completar las 5 preguntas el usuario deberá llenar un formulario con sus datos personales, esto se agregara en una bd donde se almacene sus datos + su puntaje + su tiempo, esto para luego hacer una tabla de posiciones donde el que tenga el mayor puntaje será el 1 y así sucesivamente.

El primer punto ya lo resolví tengo mi php que muestra los formularios y hace las preguntas aleatorias y también valida si estas son correctas o no.

Ahora mi problema es como controlo el tiempo en que el usuario contesta las 5 preguntas, encontré un cronometro en js que me sirve ahora lo que quiero resolver es como hago para recargar los formularios sin recargar toda la web, asi mi cronometro sigue avanzando y al finalizar tomare su tiempo.
Esa es mi idea si alguien tiene una sugerencia bienvenida, pero mi consulta especifica es como recargo los formularios sin recargar toda la web. He visto algunas cosas de php y Ajax pero la verdad nada claro, si alguien me puede dar algún ejemplo o referencia clara le quedare agradecido.

Gracias por el tiempo y espero cualquier sugerencia.

Por ansisweb

78 de clabLevel



 

chrome
Citar            
MensajeEscrito el 13 Ene 2012 08:39 pm
Ajax efectivamente, es la única manera de lograr lo que quieres, existen tutoriales de ajax en cristalab que pueden ayudarte a entender como funciona, y de preferencia te recomendaría que utilices Jquery para mayor facilidad.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 13 Ene 2012 10:21 pm
Gracias por la pronta respuesta voy a revisarlos, si hay alguna otra sugerencia plis

Por ansisweb

78 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Ene 2012 06:41 pm
tengo un script que hace algo asi pero ejej tendrias que revisar que hace por que lo hice hace tiempo,

Código PHP :

<?php
/**
 * Ejemplo de uso de Persistencia, para usuarios Iniciantes
 * @next persistencia_and_template
 * @author tuadmin
 * @version 1.0
 */
class encuesta
{
   public $pregunta_respuesta = array();
   public $id = 0;
   public $tiempo_completado = 0;
   public $tiempo_inicio = 0;
   public $tiempo_fin = 0;
   public function __construct()
   {
      $this->tiempo_inicio = time();
   }
}
class encuestas
{
   public $encuestas = array();
   static public function newInstance()
   {
      if(file_exists(dirname(__FILE__).'/encuestas.txt')){
         return unserialize (file_get_contents(dirname(__FILE__).'/encuestas.txt')); 
      }
      else
      {
         return new self();
      }
   }
   public function add(encuesta $encuesta)
   {
      if(!isset($this->encuestas[$encuesta->id]))
      {
         $this->encuestas[$encuesta->id] = $encuesta;
      }
   }
   public function update(encuesta $encuesta)
   {
      if(isset($this->encuestas[$encuesta->id]))
      {
         $this->encuestas[$encuesta->id] = $encuesta;
      }
   }
   public function & encuesta($id)
   {
      if(isset($this->encuestas[$id]))
      {
         return $this->encuestas[$id];
      }
   }
   public function __construct()
   {
      
   }
   public function __destruct()
   {
      file_put_contents(dirname(__FILE__).'/encuestas.txt', serialize($this));
   }
}
function armar_pregunta($id,$nombre,$opcion)
{
   echo "<hr />";
   echo "<label >$nombre></label>";
   if(is_array($opcion))
   {
      foreach($opcion as $chck)
      {
         echo <<<HTML
            <label> $chck<input value="$chck" type="radio" name="pregunta[$nombre]" /></label>
HTML
;
      }
   }
   echo "";

}
?>
<h1>preguntas</h1>
<?php
   //array("pregunta"=>"respuesta");
   $preg_resp = array(
      array("nombre" => "Le gusta la Comida" ,"opt" => array("si","no")),
      array("nombre" => "tiene tendencias Homosexuales" , "opt" => array("si","no","a veces"))
   )
?>

<?php
$encuestas = encuestas::newInstance();
if(!isset($_POST["iniciar"]))
{

echo <<<INI_FORM
<form action="" method="POST">
   <label><input type="text" value="pepe" name="d[usuario]"/>Nombre del encuestado</label>
   <button type="submit" name="iniciar" value="yes">Iniciar Encuesta</button>
</form>
INI_FORM
;}
else
{
$encuesta = new encuesta();
$encuesta->id = $_POST["d"]["usuario"];
$encuestas->add($encuesta);
?>
<form action="" method="POST">
   <strong><?php echo $_POST["d"]["usuario"]?></strong>
   <input type="hidden" name="d[usuario]" value="<?php echo $_POST["d"]["usuario"]?>"/>
<?php
foreach($preg_resp as $id => $value):
      armar_pregunta($id,$value["nombre"],$value["opt"]);
endforeach;?>
   <button type="submit" name="terminar" value="yes">Terminar Encuesta</button>
</form>
<?php }?>
<table width="100%">
   <tr>
      <th>Nombre</th>
      <th>Tiempo de Respuesta segundos</th>
      <th>Respuestas de encuesta</th>
   </tr>

<?php
   if(isset($_POST["terminar"]))
   {
      $enc = & $encuestas->encuesta($_POST["d"]["usuario"]);
      echo $enc->id;
      $enc->tiempo_fin = time();
      $enc->pregunta_respuesta = $_POST["pregunta"];
      $enc->tiempo_completado = $enc->tiempo_fin  - $enc->tiempo_inicio;
   }
   foreach($encuestas->encuestas as $encuesta):
?>
<tr style="outline: 1px solid red;">
   <td>
   <?php echo $encuesta->id;?>
   </td>
   <td>
   <?php echo $encuesta->tiempo_completado;?>
   </td>
   <td>
   <dl style="font-size:10px;font-family:verdana">
   <?php foreach($encuesta->pregunta_respuesta as $pregunta => $respuesta)
   {
      echo "<dt>$pregunta</dt><dd><b>$respuesta</b></dd>";
   }?>
   </dl>
   </td>
</tr>
<?php
   endforeach;
?>
</table>

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.