PHP - comparar una variable

   
Vista:
Imágen de perfil de diego

comparar una variable

Publicado por diego (6 intervenciones) el 31/07/2015 02:02:21
Buenos días.
Lo que pasa es que estoy creando un formulario para un examen y tengo un problema y es que no se como comparar el valor referencia con la respuesta así de esta manera:

$pregunta = Factores cuantitativos;
$valorReferencia = " >=20%";
$Respuesta ="60%";
$puntaje =10;

if($Respuesta = $valorReferencia){
$guardar = $puntaje;
}
else{
$guardar = 0
}

bueno amigos es una medio explicación de lo que necesito, que cuando compare la respuesta compare el valor referencia gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

comparar una variable

Publicado por xve (5515 intervenciones) el 31/07/2015 09:04:11
Hola Diego, para comparar tienes que utilizar dos iguales... un solo igual es asignación!!!

1
if($Respuesta == $valorReferencia){
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de diego

comparar una variable

Publicado por diego (6 intervenciones) el 31/07/2015 14:08:42
Hola amigo así lo tenia pero que es lo que pasa el resultado no siempre es igual al valor referencia mira te explico por que:

por ejemplo el valor referencia es = >=20% y la respuesta del usuario fue 60% y eso devuelve un true por que 60 es mayor o igual que 20%. en código seria algo así.

$respuesta = 60;
$valorReferencia = >=20%;

if( $respuesta == $valorReferencia){
}

entonces ese es mi problema que no se como comparar ese valor de respuesta con un >=20%.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

comparar una variable

Publicado por unoMasDelMonton (32 intervenciones) el 02/08/2015 02:59:43
si valor de referencia no va a cambiar entonces yo lo incluiria dentro del if directamente.

1
2
3
4
5
6
7
8
9
<?php
$pregunta="Factores cuantitativos"; //Pon comillas para los strings
$Respuesta=60; //quita los porcentajes, ya sabes que son porcentajes.
$puntaje =10;
$guardar=0; //Las asignaciónes de las variables vale mas hacerlas al principio.
 
if($Respuesta >=20){ //Compara porcentajes, no hace falta una variable string para hacerlo.
   $guardar = $puntaje;
}


Si necesitas algo distinto comentalo. Se pueden hacer apaños. algo más complejos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de diego

comparar una variable

Publicado por diego (6 intervenciones) el 02/08/2015 03:24:28
Amigo gracias por tu apoyo, mira el valor referencia es una variable que viene compuesta por >= ,<=,=, <> entonces yo decidí guardar el valor lógico por ejemplo 0.20 que va a ser la variable con la que se va a comprar la respuesta y el operacional lo guardo en otra variable entonces quedaría algo así:
$ datocomparar=0.20;
$ operacion= " >=";
$ respuesta= 30;
$ row= $respuesta.$ operación.$datocomparar;

If($row==true){
Entra y guarda el puntaje
}
Else
0


Pero de igual manera no me esta sirviendo así alguna opinión
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

comparar una variable

Publicado por Vainas (254 intervenciones) el 02/08/2015 10:35:41
Buenas:

Aqui el problema es que intentas hacer una comparacion y que el usuario te pase el comparador. Cuando haces

1
$ row= $respuesta.$ operación.$datocomparar;

Lo que haces es meter todo en una cadena y queda asi: "30>=0.20" y luego comparas si un string es true o false. Sera flase si esta vacio (si mal no recuerdo) o es 0 y sera true si tiene cualquier cadena asi que siempre sera true.

Para hacer que el comparador pasado por el usuario compare yo te recomiendo lo siquiente.

Forma 1. Usa un switch:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
switch ($operacion) {
    case ">=":
        $ row = $respuesta  >= $datoComparar;
        break;
    case "<=":
        $ row = $respuesta  <= $datoComparar;
        break;
    case "==":
        $ row = $respuesta  == $datoComparar;
        break;
	case "!=":
        $ row = $respuesta  != $datoComparar;
        break;
}
 
?>

Para mayor seguridad de lo que te envia el usuario (no sea que se le ocurra hacer una operacion algo extraña). Puedes meter el valor en un select.

1
2
3
4
5
6
<select>
  <option value="mayor_igual">&gt;=</option>
  <option value="menor_igual">&lt;=</option>
  <option value="igual">==</option>
  <option value="distinto">!=</option>
</select>

Forma 2: usar la funciona eval (Con esto hay que tener cuidado por inyecciones):

1
$ row= eval($respuesta." ".$operación." ".$datocomparar);

Con esto te diga que tengas mucho cuidado de saber que valores introduce el usuario (intenta verificar de algun modo que lo que introduce son solo numeros por ejemplo y solo comparadores...).


Espero que te sirva de algo.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de diego

comparar una variable

Publicado por diego (6 intervenciones) el 05/08/2015 21:58:51
muchas gracias amigo implemente el switch :
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
switch($Operacion){
        case ">=":
            if ($Respuesta >= $ValorRLogico){
                $AnalisisDet->Calificacion = $preguntas[0]->PuntajePregunta;
                $AnalisisDet->save();
            }
            else{
                $AnalisisDet->Calificacion = 0;
                $AnalisisDet->save();
            }
        break;
 
        case "=":
            if ($Respuesta == $ValorRLogico){
                $AnalisisDet->Calificacion = $preguntas[0]->PuntajePregunta;
                $AnalisisDet->save();
            }
            else{
                $AnalisisDet->Calificacion = 0;
                $AnalisisDet->save();
            }
            break;
 
        case "<=":
            if ($Respuesta <= $ValorRLogico){
                $AnalisisDet->Calificacion = $preguntas[0]->PuntajePregunta;
                $AnalisisDet->save();
            }
            else{
                $AnalisisDet->Calificacion = 0;
                $AnalisisDet->save();
            }
            break;
 
        case ">":
            if ($Respuesta > $ValorRLogico){
                $AnalisisDet->Calificacion = $preguntas[0]->PuntajePregunta;
                $AnalisisDet->save();
            }
            else{
                $AnalisisDet->Calificacion = 0;
                $AnalisisDet->save();
            }
            break;
 
        case "<":
            if ($Respuesta < $ValorRLogico){
                $AnalisisDet->Calificacion = $preguntas[0]->PuntajePregunta;
                $AnalisisDet->save();
            }
            else{
                $AnalisisDet->Calificacion = 0;
                $AnalisisDet->save();
            }
            break;
 
            }
        }
        $this->GuardarPuntuacion();

gracias a todos por la colaboración.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar