Diferencia entre revisiones de «PHP Estruturas de control»
Ir a la navegación
Ir a la búsqueda
(→for) |
|||
| Línea 283: | Línea 283: | ||
: Poderíamos enviar de vez os estados (roto,perfecto, pintado,...) de cada un dos exemplares a dar de alta (é un exemplo, loxicamente se queremos gardar ese tipo de dato sería mais conveniente utilizar un <select> cos diferentes estados. | : Poderíamos enviar de vez os estados (roto,perfecto, pintado,...) de cada un dos exemplares a dar de alta (é un exemplo, loxicamente se queremos gardar ese tipo de dato sería mais conveniente utilizar un <select> cos diferentes estados. | ||
: Lembrar que xa vimos [http://wiki.cifprodolfoucha.es/index.php?title=PHP_Arrays#Creando_arrays_cos_datos_dun_formulario anteriormente na wiki] como enviar datos en forma de array. | : Lembrar que xa vimos [http://wiki.cifprodolfoucha.es/index.php?title=PHP_Arrays#Creando_arrays_cos_datos_dun_formulario anteriormente na wiki] como enviar datos en forma de array. | ||
| + | |||
| + | |||
| + | |||
| + | == Exercicios propostos == | ||
| + | |||
| + | * '''Exercicio 1:''' Determinar se un número é positivo ou negativo. Emprega unha variable e dalle os diferentes valores. Debe amosar unha mensaxe diferente para cando é positivo, negativo ou igual a cero. | ||
| + | |||
| + | |||
| + | * '''Exercicio 2:''' Determina se dada unha contrasinal e un usuario, este pode entrar. Debes empregar dúas variables, unha para o usuario e outra para o password. Se o usuario non existe debe amosar unha mensaxe. Se o usuario existe e a contrasinal é incorrecta deberá indicalo. Se a contrasinal é correcta deberá indicar Acceso concedido. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | <br /> | ||
| + | === Solución Exercicios === | ||
| + | |||
| + | * '''Exercicio 1:''' Determinar se un número é positivo ou negativo. Emprega unha variable e dalle os diferentes valores. Debe amosar unha mensaxe diferente para cando é positivo, negativo ou igual a cero. | ||
| + | ::<syntaxhighlight lang="php" enclose="div" highlight="" > | ||
| + | <!DOCTYPE html> | ||
| + | <html> | ||
| + | <head> | ||
| + | <title>Exercicio con if-else</title> | ||
| + | </head> | ||
| + | <body> | ||
| + | <h1>Determinar se un número é positivo ou negativo</h1> | ||
| + | <?php | ||
| + | $numero = 10; // Podes cambiar este valor para probar diferentes números | ||
| + | |||
| + | if ($numero > 0) { | ||
| + | echo "O número $numero é positivo."; | ||
| + | } elseif ($numero < 0) { | ||
| + | echo "O número $numero é negativo."; | ||
| + | } else { | ||
| + | echo "O número é igual a 0."; | ||
| + | } | ||
| + | ?> | ||
| + | </body> | ||
| + | </html> | ||
| + | |||
| + | </syntaxhighlight> | ||
| + | |||
| + | |||
| + | |||
| + | <br /> | ||
| + | * '''Solución Exercicio 2:''' Determina se dada unha contrasinal e un usuario, este pode entrar. Debes empregar dúas variables, unha para o usuario e outra para o password. Se o usuario non existe debe amosar unha mensaxe. Se o usuario existe e a contrasinal é incorrecta deberá indicalo. Se a contrasinal é correcta deberá indicar Acceso concedido. | ||
| + | ::<syntaxhighlight lang="php" enclose="div" highlight="" > | ||
| + | <!DOCTYPE html> | ||
| + | <html> | ||
| + | <head> | ||
| + | <title>Exercicio con if-else</title> | ||
| + | </head> | ||
| + | <body> | ||
| + | <h1>Determinar se un usuario ten acceso</h1> | ||
| + | <?php | ||
| + | // Datos del usuario existente | ||
| + | $usuario_correcto = "usuario1"; | ||
| + | $contrasena_correcta = "secreta123"; | ||
| + | |||
| + | // Datos del usuario ingresado | ||
| + | $usuario_ingresado = "usuario1"; // Cambia el usuario ingresado | ||
| + | $contrasena_ingresada = "secreta1234"; // Cambia la contraseña ingresada | ||
| + | |||
| + | // Comprobar si el usuario y la contraseña son correctos | ||
| + | if ($usuario_ingresado == $usuario_correcto && $contrasena_ingresada == $contrasena_correcta) { | ||
| + | echo "Acceso concedido. Benvido, $usuario_correcto."; | ||
| + | } elseif ($usuario_ingresado == $usuario_correcto) { | ||
| + | echo "Acceso denegado. A contrasinal é incorrecta."; | ||
| + | } else { | ||
| + | echo "Acceso denegado. O usuario non existe."; | ||
| + | } | ||
| + | ?> | ||
| + | </body> | ||
| + | </html> | ||
| + | |||
| + | </syntaxhighlight> | ||
| + | |||
Revisión del 21:52 24 sep 2023
Sumario
if
- Nota: Esta información está baseada na que se atopa na web de php.
- O construtor if permite a execución condicional de fragmentos de código.
- Sintaxe:
1 if (expr) 2 sentenza
- Sendo expr unha expresión que pode ser avaliada como true ou false.
- En caso de ser avaliada como true se executa a sentenza.
Exemplo de código:
1 <?php 2 if ($a > $b) { // Se $a é maior que $b executa dita sentenza 3 echo "a é maior b"; 4 } 5 ?>
- Se queremos executar varias sentenzas temos que facer uso das chaves {....}. Todas as sentenzas que estean dentro das chaves será executadas.
Exemplo de código:
1 <?php 2 if ($a > $b) { 3 echo "a é maior b"; 4 $b = $a; 5 } 6 ?>
- É necesario que a condición estea entre parénteses: (expr).
- Pódense anidar if´s de forma indefinida.
Exemplo de código:
1 <?php 2 if ($a > $b) { 3 echo "a é maior b"; 4 if ($a > $c) { 5 echo "a é maior que c"; 6 } 7 } 8 ?>
else
- Nota: Esta información está baseada na que se atopa na web de php.
- else forma parte do if e vai servir para executar un conxunto de sentenzas cando non se cumpra a condición indicada no if (cando o valor da expresión avaliada no if sexa false).
Exemplo de código:
1 <?php 2 if ($a > $b) { 3 echo "a é maior que b"; 4 } else { 5 echo "a é menor ou igual que b"; 6 } 7 ?>
elseif | else if
- Nota: Esta información está baseada na que se atopa na web de php.
- As dúas formas ('elsif' e 'else if') van facer o mesmo.
- As condicións elseif van despois dun if e se avalían se a condición do if devolve false. A diferenza do else, podemos ter varios elseif un despois doutro e se irán avaliando en orde ata que un deles se avalía como true. Nese intre executarase o seu código e non se avaliará ningún elseif nin else que haia a continuación.
Exemplo de código:
1 <?php 2 if ($a > $b) { 3 echo "a é maior que b"; 4 } elseif ($a == $b) { 5 echo "a é igual a b"; 6 } else { 7 echo "a é menor que b"; 8 } 9 ?>
while
- Nota: Esta información está baseada na que se atopa na web de php.
- Sintaxe:
while (expresión) { Sentenzas a executar; }
- Se o while ten unha única sentenza a executar podemos poñer:
while (expresión) Unha única sentenza;
- Existe unha sintaxe alternativa para o anterior:
while (expresión): Sentenzas a executar; endwhile;
- O que fai while é executar as sentenzas que se atopan dentro das chaves ata que a expresión devolva false.
- Fixarse como primeiro se avalía a expresión e se é certa (devolve true) se executan as sentenzas. Se a primeira vez vale false nunca vai entrar a executar as sentenzas.
- Vexamos un exemplo:
<?php $i = 1; while ($i <= 10) { echo $i++; /* o valor presentado sería $i antes do incremento (post-incremento) */ } ?>
- Sairá como resultado os números do 1 ata o 10.
do-while
- Nota: Esta información está baseada na que se atopa na web de php.
- Sintaxe:
do { Sentenzas a executar; while (expresión);
- O concepto é o mesmo que no caso do bucle while. A diferenza estriba en que neste caso o grupo de sentenzas a executar sempre se executarán a lo menos unha vez, xa que a avaliación da expresión se fai despois de executar as sentenzas.
- Vexamos un exemplo:
<?php $i = 0; do { echo $i++; } while ($i <= 10); ?>
- Amosará todos os números dende 0 ata o 10.
- Se facemos unha modificación a expresión do while para que sexa false na primeira iteración...
<?php $i = 0; do { echo $i++; } while ($i > 10); ?>
- Amosará o valor 0, e sairá do bucle.
for
- Nota: Esta información está baseada na que se atopa na web de php.
- A sentenza 'for' serve para repetir un conxunto de sentenzas mentres se cumpra unha determinada condición. A cada repetición denomínase 'iteración' (ao igual que no caso do while).
- Sintaxe:
for(expr1;expr2;expr3){ Sentenzas a executar; }
- Sendo:
- expr1: Execútase ao comezo do bucle e soamente unha vez. Normalmente é utilizada para dar valores iniciais á variable que se vai utilizar no bucle.
- expr2: Ao comezo de cada iteración avalíase a expr2 e devolverá true ou false. O bucle for seguirá executando as sentenzas ata que expr2 devolva false.
- expr3: Ao final de cada iteración avalíase (execútase) expr3.
- expr1,expr2 e expr3 poden ser calquera sentenza php e poden poñerse varias sentenzas separadas por ',' (coma).
- Normalmente imos utilizar o bucle for para executar un conxunto de sentenzas en base a un contador que se irá incrementando en cada iteración (repetición) ata que chegue a un determinado valor, indicado na expresión 'expr2'.
- Por exemplo:
for($cont=0;$cont<5;$cont++){ printf("Amosando o valor de \$cont: %s<br />",$cont); }
Nota: $cont++ é igual que poñer $cont=$cont+1. Temos tamén a operación contraria ($cont--).
- Este exemplo produce a seguinte saída:
Amosando o valor de $cont:0 Amosando o valor de $cont:1 Amosando o valor de $cont:2 Amosando o valor de $cont:3 Amosando o valor de $cont:4
- Para saír do for sen esperar a que se cumpra a condición indicada no mesmo podemos facer uso da sentenza break.
- Por exemplo:
for($cont=0;$cont<5;$cont++){ if($cont==3) break; printf("Amosando o valor de \$cont: %s<br />",$cont); }
- Saída:
Amosando o valor de $cont:0 Amosando o valor de $cont:1 Amosando o valor de $cont:2
- Para saltar unha iteración (é dicir, que non continúe executando as sentenzas que se atopan dentro do for e avalíe directamente a expr3, saltando ao comezo do bucle) podemos facer uso da sentenza continue.
- Por exemplo:
for($cont=0;$cont<5;$cont++){ if($cont==2) continue; printf("Amosando o valor de \$cont: %s<br />",$cont); }
- Saída:
Amosando o valor de $cont:0 Amosando o valor de $cont:1 Amosando o valor de $cont:3 Amosando o valor de $cont:4
- Podemos utilizar o for (ao igual que o while) para xerar dinamicamente o contido dun formulario dunha páxina web:
- Imaxinemos que dispoñemos en $_POST['num_exemplares'] o número de exemplares dun libro que queremos dar de alta na nosa base de datos (este dato ven dun formulario anterior).
- Podemos crear o seguinte formulario:
<form action='Alta_Exemplares.php' method='post'> <?php for($cont=1;$cont<$_POST['num_exemplares'];$cont++){ echo "<input type='text' name='txtEstadoExemplar[]' />"; } ?> <input type='submit' value='Enviar' name='btnAltaExemplares' /> </form>
- Poderíamos enviar de vez os estados (roto,perfecto, pintado,...) de cada un dos exemplares a dar de alta (é un exemplo, loxicamente se queremos gardar ese tipo de dato sería mais conveniente utilizar un <select> cos diferentes estados.
- Lembrar que xa vimos anteriormente na wiki como enviar datos en forma de array.
Exercicios propostos
- Exercicio 1: Determinar se un número é positivo ou negativo. Emprega unha variable e dalle os diferentes valores. Debe amosar unha mensaxe diferente para cando é positivo, negativo ou igual a cero.
- Exercicio 2: Determina se dada unha contrasinal e un usuario, este pode entrar. Debes empregar dúas variables, unha para o usuario e outra para o password. Se o usuario non existe debe amosar unha mensaxe. Se o usuario existe e a contrasinal é incorrecta deberá indicalo. Se a contrasinal é correcta deberá indicar Acceso concedido.
Solución Exercicios
- Exercicio 1: Determinar se un número é positivo ou negativo. Emprega unha variable e dalle os diferentes valores. Debe amosar unha mensaxe diferente para cando é positivo, negativo ou igual a cero.
<!DOCTYPE html> <html> <head> <title>Exercicio con if-else</title> </head> <body> <h1>Determinar se un número é positivo ou negativo</h1> <?php $numero = 10; // Podes cambiar este valor para probar diferentes números if ($numero > 0) { echo "O número $numero é positivo."; } elseif ($numero < 0) { echo "O número $numero é negativo."; } else { echo "O número é igual a 0."; } ?> </body> </html>
- Solución Exercicio 2: Determina se dada unha contrasinal e un usuario, este pode entrar. Debes empregar dúas variables, unha para o usuario e outra para o password. Se o usuario non existe debe amosar unha mensaxe. Se o usuario existe e a contrasinal é incorrecta deberá indicalo. Se a contrasinal é correcta deberá indicar Acceso concedido.
<!DOCTYPE html> <html> <head> <title>Exercicio con if-else</title> </head> <body> <h1>Determinar se un usuario ten acceso</h1> <?php // Datos del usuario existente $usuario_correcto = "usuario1"; $contrasena_correcta = "secreta123"; // Datos del usuario ingresado $usuario_ingresado = "usuario1"; // Cambia el usuario ingresado $contrasena_ingresada = "secreta1234"; // Cambia la contraseña ingresada // Comprobar si el usuario y la contraseña son correctos if ($usuario_ingresado == $usuario_correcto && $contrasena_ingresada == $contrasena_correcta) { echo "Acceso concedido. Benvido, $usuario_correcto."; } elseif ($usuario_ingresado == $usuario_correcto) { echo "Acceso denegado. A contrasinal é incorrecta."; } else { echo "Acceso denegado. O usuario non existe."; } ?> </body> </html>
-- Ángel D. Fernández González -- (2016).