PHP - Problemas con isset y if

   
Vista:

Problemas con isset y if

Publicado por Tomas (24 intervenciones) el 14/10/2014 20:53:43
Tengo el siguiente código(es una calculadora), le introduzco los valores por la barra de enlaces del navegador. Si yo escribo :
nombredelfichero.php?operacio=(nopongonada)&primer=1&segon=2 deberia saltar al ultimo if i decir "no has escrito el tipo de operacion " pero no lo dice.

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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<title> </title>
</head>
<body>
	<?php
	echo "P4E3: Calculadora amb valors passats per GET.
	<br> Defineix els valors(operacio//suma/resta/divisio/multiplicacio//,primer,segon) a la barra d'enllaços <br>";
	if((isset($_GET["operacio"]) && is_string($_GET["operacio"])) && (isset($_GET["primer"]) && is_numeric($_GET["primer"]) ) && (isset($_GET["segon"]) && is_numeric($_GET["segon"]))){
 
		if(is_string($_GET["operacio"])&& $_GET["operacio"]=="suma"){
		$_fResultado = $_GET['primer'] + $_GET['segon'];
		echo "El tipus d'operació es $_GET[operacio] <br>";
		echo "El primer operand es $_GET[primer] <br>";
		echo "El segon operand es $_GET[segon] <br>";
		echo "$_GET[primer] + $_GET[segon] = $_fResultado";}
		else{
		if(is_string($_GET["operacio"])&& $_GET["operacio"]=="resta"){
		$_fResultado = $_GET['primer'] - $_GET['segon'];
		echo "El tipus d'operació es $_GET[operacio] <br>";
		echo "El primer operand es $_GET[primer] <br>";
		echo "El segon operand es $_GET[segon] <br>";
		echo "$_GET[primer] - $_GET[segon] = $_fResultado";}
		else{
		if(is_string($_GET["operacio"])&& $_GET["operacio"]=="divisio"){
		$_fResultado = $_GET['primer'] / $_GET['segon'];
		echo "El tipus d'operació es $_GET[operacio] <br>";
		echo "El primer operand es $_GET[primer] <br>";
		echo "El segon operand es $_GET[segon] <br>";
		echo "$_GET[primer] / $_GET[segon] = $_fResultado";}
		else{
		if(is_string($_GET["operacio"])&& $_GET["operacio"]=="multiplicacio"){
		$_fResultado = $_GET['primer'] * $_GET['segon'];
		echo "El tipus d'operació es $_GET[operacio] <br>";
		echo "El primer operand es $_GET[primer] <br>";
		echo "El segon operand es $_GET[segon] <br>";
 
		echo "$_GET[primer] * $_GET[segon] = $_fResultado";}}}}}
	else{
		if(!isset($_GET["operacio"])){
					echo "No has definit el tipus d'operació, no puc continuar";}
	exit();}
 
 
	?>
</body>
</html>

alguien ve el error?
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

Problemas con isset y if

Publicado por xve (5520 intervenciones) el 14/10/2014 22:57:23
Hola Tomas, si a este código le envias los valores que comentas...
nombredelfichero.php?operacio=&primer=1&segon=2
te entra en el primer if, lo que pasa, que luego no entra en ninguno de los demas... dentro del primer if, pon algo como echo "test";

Veras como te entra.
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

Problemas con isset y if

Publicado por Tomas (24 intervenciones) el 15/10/2014 16:09:14
He estado modificando un poco el código y ahora solo me entra en el primer if, ponga bien o mal los valores:

if($_GET["operacio"] != "suma" || "resta" || "multiplicacio" || "divisio"){
echo "No has definit el tipus d'operació, no puc continuar";}
else{
if(!is_numeric($_GET["primer"])){ echo "No has escrit el primer operand";}
else{
if(!is_numeric($_GET["segon"])){ echo "No has escrit el segon operand";}



MODIFICO LA RESPUESTA, YA LO ARREGLÉ, SOLO FALTABAN parentesis despues del !=
Eliminen el post si quieren.
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 xve

Problemas con isset y if

Publicado por xve (5520 intervenciones) el 15/10/2014 21:32:43
Hola Tomas, esto esta mal...
1
if($_GET["operacio"] != "suma" || "resta" || "multiplicacio" || "divisio"){

Tiene que ser algo así:
1
if($_GET["operacio"] != "suma" || $_GET["operacio"] !="resta" || $_GET["operacio"] !="multiplicacio" || $_GET["operacio"] !="divisio"){
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

Problemas con isset y if

Publicado por Tomas (24 intervenciones) el 16/10/2014 15:35:38
Lo he probado y aunque lo veo igual de bien, no funciona.
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 xve

Problemas con isset y if

Publicado por xve (5520 intervenciones) el 16/10/2014 20:09:35
Revisandolo, tendria que ser and (&&) en vez de or (||), no?
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

Problemas con isset y if

Publicado por Tomas (24 intervenciones) el 20/10/2014 16:01:46
No porque estarías diciendo que debería ser diferente de todas esas palabras a la vez
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