Retroceder   Foros del Web > Programación para sitios web > PHP
Crea un nuevo usuario o inicia sesión utilizando tu cuenta de Facebook
Connect with Facebook

Avisos

Respuesta
 
Herramientas Desplegado
Antiguo 27-jun-2008, 10:56   #1 (permalink)
Colaborador
rogertm merece que le prestes tu consolarogertm merece que le prestes tu consolarogertm merece que le prestes tu consolarogertm merece que le prestes tu consolarogertm merece que le prestes tu consola
 
Avatar de rogertm
 
Fecha de Ingreso: julio-2005
Ubicación: 23.133355, -82.353773
Mensajes: 1.517
rogertm está desconectado
que cero "0" no sea un valor vacio

Hola a todos, no tenia na que hacer y me puse a disparar algo de código , pero me tropecé con un pequeño obstáculo que no se resolver.
El caso es que me puse a hacer una especie de examen, un formulario con varias preguntas y posibles respuestas, de ellas una es la correcta las demás no, para cuando se envíe el form, evaluar al examinado y darle el promedio de su nota, en base a 5 puntos como máximo:
Código PHP:
<?php
if(isset($_POST['examinar']) && $_POST['examinar'] == 'Examinar'){

    if(!empty(
$_POST['respuesta_1']) && !empty($_POST['respuesta_2']) && !empty($_POST['respuesta_3'])){

        
$respuesta_1 $_POST['respuesta_1'];
        
$respuesta_2 $_POST['respuesta_2'];
        
$respuesta_3 $_POST['respuesta_3'];

        
$promedio = ($respuesta_1 $respuesta_2 $respuesta_3) / 3;
        
// este tres es la cantidad de preguntas del form, 
        // debe variar dependiendo de las mismas

    
}else{
        echo 
"debe responder todas las preguntas";
    }
}
?>
<form name="examen" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
    <p>Pregunta 1</p>
    <input type="radio" value="0" name="respuesta_1" /> mal<br />
    <input type="radio" value="5" name="respuesta_1" /> bien<br />
    <input type="radio" value="0" name="respuesta_1" /> mal<br />
    <!-- así hasta 3 preguntas -->
    <p><input type="submit" name="examinar" value="Examinar" /></p>
</form>
el punto es, que si se envia una de las respuestas mal (value="0"), entonces me enviara el aviso de responder todas las preguntas...
Que puedo hacer???

Gracias mil de antemano
__________________
mi twitter @roger213tm
Kilómetro Cero
Bloggers Cuba
  Responder Citando
Antiguo 27-jun-2008, 11:15   #2 (permalink)
pateketrueke merece que le prestes tu consolapateketrueke merece que le prestes tu consolapateketrueke merece que le prestes tu consolapateketrueke merece que le prestes tu consolapateketrueke merece que le prestes tu consola
 
Avatar de pateketrueke
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 5.309
Enviar un mensaje por MSN a pateketrueke
pateketrueke está desconectado
Respuesta: que cero "0" no sea un valor vacio

digamos que tienes 5 preguntas...

Código PHP:
$err=array()

for (
$i=0$i<=5; ++$i)
{
  if (!isset(
$_POST['pregunta_'.$i]))
  {
    
$err[] = 'Falta la numero '.$i;
  }
  else
  {
    
// aca vas sumando los resultados
  
}
}

if (!empty(
$err))
{
  echo 
'Errores: <br /><br />';
  echo 
join('<br />'$err);

es la forma en que se me ocurrió... suerte!
__________________
== Tiempo por Energía es Igual a Arte ==
  Responder Citando
Antiguo 27-jun-2008, 13:37   #3 (permalink)
Colaborador
rogertm merece que le prestes tu consolarogertm merece que le prestes tu consolarogertm merece que le prestes tu consolarogertm merece que le prestes tu consolarogertm merece que le prestes tu consola
 
Avatar de rogertm
 
Fecha de Ingreso: julio-2005
Ubicación: 23.133355, -82.353773
Mensajes: 1.517
rogertm está desconectado
Respuesta: que cero "0" no sea un valor vacio

creo que no me entendiste o no me supe explicar bien, el problema es que cuando se envia una respuesta errada (value="0"), el procesamiento del script me devuelve el aviso que tengo que contestar todas las preguntas, pues el valor en el campo que esta mal es CERO y lo entiende como vacio, me entiendes ahora???
__________________
mi twitter @roger213tm
Kilómetro Cero
Bloggers Cuba
  Responder Citando
Antiguo 27-jun-2008, 13:57   #4 (permalink)
david_M_G se está ganando tu confianza
 
Avatar de david_M_G
 
Fecha de Ingreso: febrero-2005
Mensajes: 905
david_M_G está desconectado
Respuesta: que cero "0" no sea un valor vacio

Entonces te sugiero una función (la estaba pensando mientras entraba al post, habiendo leído el título que lo explica muy bien )

Me la acabo de inventar..
Código PHP:
function vacio($string)
   {
      if (
is_numeric($string) && $string == 0)
      {
         return 
FALSE;
      }
      else if (
$string == "")
        {
         return 
TRUE;
        } else {
         return 
FALSE;
        }

Y en vez de empty() usas vacio(). Así:
Código PHP:
<?php

function vacio($string)
   {
      if (
is_numeric($string) && $string == 0)
      {
         return 
FALSE;
      }
      else if (
$string == "")
        {
         return 
TRUE;
        } else {
         return 
FALSE;
        }
}

if(isset(
$_POST['examinar']) && $_POST['examinar'] == 'Examinar'){

    if(
vacio($_POST['respuesta_1']) == FALSE && vacio($_POST['respuesta_2'])==FALSE && vacio($_POST['respuesta_3'])==FALSE){

        
$respuesta_1 $_POST['respuesta_1'];
        
$respuesta_2 $_POST['respuesta_2'];
        
$respuesta_3 $_POST['respuesta_3'];

        
$promedio = ($respuesta_1 $respuesta_2 $respuesta_3) / 3;
        
// este tres es la cantidad de preguntas del form, 
        // debe variar dependiendo de las mismas

    
}else{
        echo 
"debe responder todas las preguntas";
    }
}
?>
Espero que te sirva! Suerte
  Responder Citando
Antiguo 28-jun-2008, 11:44   #5 (permalink)
import fdw.mod.py
AlvaroG es mas bueno que la perra LassieAlvaroG es mas bueno que la perra LassieAlvaroG es mas bueno que la perra LassieAlvaroG es mas bueno que la perra LassieAlvaroG es mas bueno que la perra LassieAlvaroG es mas bueno que la perra LassieAlvaroG es mas bueno que la perra LassieAlvaroG es mas bueno que la perra LassieAlvaroG es mas bueno que la perra Lassie
 
Avatar de AlvaroG
 
Fecha de Ingreso: julio-2005
Ubicación: Canelones, Uruguay
Mensajes: 4.997
Enviar un mensaje por MSN a AlvaroG Enviar un mensaje por Yahoo  a AlvaroG Enviar un mensaje por Skype™ a AlvaroG
AlvaroG está desconectado
Respuesta: que cero "0" no sea un valor vacio

rogertm, entiendo que lo hicieras medio rápido y sin una necesidad real, pero la forma más recomendable no es poner las notas en el código html

es mejor que los "option" tengan valores del 1 al 3, y luego al procesar tengas una tabla de respuestas correctas para cada opción.

ejemplo:
Código:
<input type="radio" value="1" name="respuesta_1" /> mal<br />
<input type="radio" value="2" name="respuesta_1" /> bien<br />
<input type="radio" value="3" name="respuesta_1" /> mal<br />
Entonces en tu programa podés tener un vector de esta forma:

Código PHP:
$correctas = array(=> 2...); 
y luego preguntar

Código PHP:
if ( ${'respuesta_'.$correctas[0]} == 2) {
    
$puntaje += 5;


Espero haberme explicado bien.
Saludos.
__________________
Cada vez que usás Internet Explorer 6, dios mata a un gatito

El Codiguero
  Responder Citando
Antiguo 28-jun-2008, 12:53   #6 (permalink)
Colaborador
rogertm merece que le prestes tu consolarogertm merece que le prestes tu consolarogertm merece que le prestes tu consolarogertm merece que le prestes tu consolarogertm merece que le prestes tu consola
 
Avatar de rogertm
 
Fecha de Ingreso: julio-2005
Ubicación: 23.133355, -82.353773
Mensajes: 1.517
rogertm está desconectado
Respuesta: que cero "0" no sea un valor vacio

OK @alvlin, capte la idea, pero como tengo mas de una pregunta, tal vez tenga que inventarme un buclito foreach ahi

thnx eniwei

saludos y suerte
__________________
mi twitter @roger213tm
Kilómetro Cero
Bloggers Cuba
  Responder Citando
Antiguo 01-jul-2008, 11:24   #7 (permalink)
Colaborador
rogertm merece que le prestes tu consolarogertm merece que le prestes tu consolarogertm merece que le prestes tu consolarogertm merece que le prestes tu consolarogertm merece que le prestes tu consola
 
Avatar de rogertm
 
Fecha de Ingreso: julio-2005
Ubicación: 23.133355, -82.353773
Mensajes: 1.517
rogertm está desconectado
Respuesta: que cero "0" no sea un valor vacio

BUAGJ...! a veces las cosas son tan claras y sencillas que no las vemos . Lo resolvi haciendolo como al inicio, pero en lugar de dar valor cero "0" a las respuestas incorrectas, les puse uno "1", ya despues con str_replace lo arregle, asi no llegarian nuca vacias las respuestas erradas:
Código PHP:
<?php
if(isset($_POST['examinar']) && $_POST['examinar'] == 'Examinar') {
    if(!empty(
$_POST['respuesta_1']) && !empty($_POST['respuesta_2']) && !empty($_POST['respuesta_3'])){

        
$respuesta_1 str_replace(10$_POST['respuesta_1']);
        
$respuesta_2 str_replace(10$_POST['respuesta_2']);
        
$respuesta_3 str_replace(10$_POST['respuesta_3']);

        
$promedio round(($respuesta_1 $respuesta_2 $respuesta_3) / 3);

        switch (
$promedio){
            case 
5:
                
$nota "Usted tiene $promedio puntos, Excelente...!";
                break;
            case 
4:
                
$nota "Usted tiene $promedio puntos, Bien...!";
                break;
            case 
3:
                
$nota "Usted tiene $promedio puntos, Por los pelos...!";
                break;
            case 
2:
                
$nota "Usted tiene $promedio puntos, Suspenso, lo esperamos el proximo curso...!";
                break;
            case 
1:
            case 
0:
                
$nota "Definitvamente, este curso no es para usted...!";
                break;
        }

        echo 
$nota;

    }else{
        echo 
"Debe responder todas las preguntas";
    }
}
?>
<form name="examen" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
    <p>Pregunta 1</p>
    <input type="radio" value="1" name="respuesta_1" /> mal<br />
    <input type="radio" value="5" name="respuesta_1" /> bien<br />
    <input type="radio" value="1" name="respuesta_1" /> mal<br />
    <p>Pregunta 2</p>
    <input type="radio" value="1" name="respuesta_2" /> mal<br />
    <input type="radio" value="5" name="respuesta_2" /> bien<br />
    <input type="radio" value="1" name="respuesta_2" /> mal<br />
    <p>Pregunta 3</p>
    <input type="radio" value="1" name="respuesta_3" /> mal<br />
    <input type="radio" value="5" name="respuesta_3" /> bien<br />
    <input type="radio" value="1" name="respuesta_3" /> mal<br />
    <p><input type="submit" name="examinar" value="Examinar" /></p>
</form>
Puse todo el codigo, incluido el brillito que le di al final , pa que el que este aburrido y no tenga na que hacer, se entretenga con alguillo

saludos y suerte
__________________
mi twitter @roger213tm
Kilómetro Cero
Bloggers Cuba
  Responder Citando
Respuesta
No hay votos aún.
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.

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code está Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado
Trackbacks está Desactivado
Pingbacks está Desactivado
Refbacks está Desactivado



La zona horaria es GMT -6. Ahora son las 22:20.
Políticas de Uso de Foros del Web


Message Board Statistics

SEO by vBSEO 3.3.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100