← Tutoriais

[PHP] Iniciantes, Clausulas IF

Lida 23402 vezes

Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

ora bem, vamos para mais umas coisinhas em php!

Clausulas IF

ora vamos fazer umas comparações! o php, como manda a lei de uma boa linguagem, tem a capacidade de fazer comparações. Por exemplo, imaginem que querem por uma mensagem de boas vindas em que diga bom dia, boa tarde ou boa noite mediante a hora. Usando uma variável com a hora e um IF, podemos fazer isso facilmente. ora vejam lá:

Código: [Seleccione]
<?
$hora = date("H");
if($hora >='0' and $hora <'12'){echo"Bom dia!";}
if($hora >='12' and $hora <'20'){echo"Boa tarde!";}
if($hora >='20' and $hora <'0'){echo"Boa noite!";}
?>


traduzindo o código acima:
<? - tag de abertura. Sim, pode ser omitido o php. <?php = <?
$hora = date("H"); - definir a variável $hora. só que aqui não definimos um número fixo, mas usamos o comando date, onde o mandamos ir buscar a hora do sistema ("H")!
if($hora >='0' and $hora <'12'){echo"Bom dia!";} - traduzido á letra! Se $hora for maior ou igual a 0 e $hora for menor que 12, então ({), escreve "Bom Dia!", terminando a linha com ; e fechando o if com }. a sintase está mesmo á tradução! ;) as 2 seguintes são a mesma lógica, mas com horas diferentes! :D
?> - tag de "fechou!"!

renomeando o ficheiro e depois do upload, ao abrir num browser, a mensagem que vai aparecer é somente "bom dia" ou "boa tarde" ou "boa noite", mediante a hora do sistema!

e perguntam vocês: "Bah... isso já eu faço com java!"... pois fazem... mas java não dá em tudo que é browser... muita gente tem java disabled... tios como o google detestam java... e com php só vai sair textinho purinho! ;)

Experimentem fazer mais IFs, do estilo uma para cada 3 horas, para perceberem como a lógica funciona!

e mais um TPC:

quem me consegue dizer como faço para à hora "0" em ponto mostrar "Hora Dos Fantasmas!!!!", mas mantendo o bom dia, boa tarde e boa noite nas restantes horas? :wink:

dúvidas? estou por aqui! :D
Offline

PTNetworks 
Membro
Mensagens 315 Gostos 0
Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 100 Posts

Thanks :)

Continua que eu estou mesmo a precisar disso :)
Offline

frsantos 
Membro
Mensagens 1458 Gostos 0
Troféus totais: 35
Trófeus: (Ver todos)
Linux User Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter

ainda n experimentei m deve ser isto n?
Citar
<?
$hora = date("H");
if($hora='0'){echo"Hora Dos Fantasmas;}
if($hora >='0' and $hora <'12'){echo"Bom dia!";}
if($hora >='12' and $hora <'20'){echo"Boa tarde!";}
if($hora >='20' and $hora <'0'){echo"Boa noite!";}
?>

ixto se for so as 0 horas em ponto se for ate a 1

Citar
....
if($hora >='0' and $hora <'1'){echo"Hora Dos Fantasmas;}
...


certo?
Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

quase, estás quase lá!

se usares
Código: [Seleccione]
<?
$hora = date("H");
if($hora='0'){echo"Hora Dos Fantasmas;}
if($hora >='0' and $hora <'12'){echo"Bom dia!";}
if($hora >='12' and $hora <'20'){echo"Boa tarde!";}
if($hora >='20' and $hora <'0'){echo"Boa noite!";}
?>


à hora 0 vai responder "Hora dos fantasmas Bom dia!".

só quero "Hora dos Fantasmas" ;)

PS: uma peqena indicação que me esqueci de ensinar na aula:
if($i='0'); - código incorrecto. Para comparar dois valores pelo simbolo "=", tem que ser 2 (igual absoluto), ou seja, fica:

if($i=='0');

okapa?  :D
Offline

fpware 
Fundador
Mensagens 15318 Gostos 7
Troféus totais: 38
Trófeus: (Ver todos)
Linux User Mobile User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5

Excelente morpheus! :D
Offline

Ricardo75 
Membro
Mensagens 1660 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Então ninguém diz?
Eu acho que é na linha do Bom dia tem que se tirar o sinal de igual e deixar só o de maior.
Mas isso não está a funcionar aqui, não sei porquê  :?  não aparece nada.
Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

vou dar uma pista:

Citar
Eu acho que é na linha do Bom dia tem que se tirar o sinal de igual e deixar só o de maior.


eu atrás disse:

Citar
Para comparar dois valores pelo simbolo "=", tem que ser 2 (igual absoluto), ou seja, fica:

if($i=='0');


chega assim? :wink:
Offline

Ricardo75 
Membro
Mensagens 1660 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Eu reparei :D
O que me estava a dar mal era a parte do <? ao invés de <?php, mas já está de novo a funcionar, eu tinha desactivado isto à uns tempos para fazer umas experiências e não voltei a activar!

Fica assim?
Código: [Seleccione]
<?php
$hora 
date&#40;"H"&#41;;
if&#40;$hora =='0' and $hora <'12'&#41;&#123;echo"Hora dos fantasmas";&#125;
if&#40;$hora >'0' and $hora <'12'&#41;&#123;echo"Bom dia!";&#125;
if&#40;$hora >='12' and $hora <'20'&#41;&#123;echo"Boa tarde!";&#125;
if&#40;$hora >='20' and $hora <'0'&#41;&#123;echo"Boa noite!";&#125;
?>
Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

quase...

repara:
Código: [Seleccione]
<?php 
$hora 
date&#40;"H"&#41;; 
if&#40;$hora =='0' and $hora <'12'&#41;&#123;echo"Hora dos fantasmas";&#125; 
if&#40;$hora >'0' and $hora <'12'&#41;&#123;echo"Bom dia!";&#125; 
if&#40;$hora >='12' and $hora <'20'&#41;&#123;echo"Boa tarde!";&#125; 
if&#40;$hora >='20' and $hora <'0'&#41;&#123;echo"Boa noite!";&#125; 
?>


na linha
Código: [Seleccione]
if($hora =='0' and $hora <'12'){echo"Hora dos fantasmas";}
quando a hora for igual a 0, vai ser obrigatoriamente menor que 12, logo o <12 está a mais (também não estraga, mas não faz nada).

então, ficaria assim:
Código: [Seleccione]
<?php 
$hora 
date&#40;"H"&#41;; 
if&#40;$hora =='0'&#41;&#123;echo"Hora dos fantasmas";&#125; 
if&#40;$hora >'0' and $hora <'12'&#41;&#123;echo"Bom dia!";&#125; 
if&#40;$hora >='12' and $hora <'20'&#41;&#123;echo"Boa tarde!";&#125; 
if&#40;$hora >='20' and $hora <'0'&#41;&#123;echo"Boa noite!";&#125; 
?>


no resto, acertaste em cheio! boa! :D
Offline

Ricardo75 
Membro
Mensagens 1660 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Tu disseste tudo na outra mensagem :lol:
Offline

icaro 
Membro
Mensagens 128 Gostos 0
Troféus totais: 26
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 100 Posts

Mais uma vez parabéns tudo entendido!

só uma coisa ele está-me a dar a hora do servidor e não do sistema por isso vi-me grego para testar o código que dava sempre a mensagem errada.
Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

Pois... quando disse sistema, é o sistema onde está alojado...
Offline

icaro 
Membro
Mensagens 128 Gostos 0
Troféus totais: 26
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 100 Posts

Citação de: "morpheus"
Pois... quando disse sistema, é o sistema onde está alojado...


pois mas assim... não há maneira de dar a hora da máquina do utilizador? (secalhar por ser server side...)
Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

ou podes definir H+4 ou H-5... ;)
Offline

Psycko 
Membro
Mensagens 25 Gostos 0
Troféus totais: 21
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 4 Level 3 Level 2 Level 1 10 Posts First Post Signature

isso das horas dos fantasmas se usasse:

Citar
<?
$hora = date("H");
if($hora >='0' and $hora <'0'){echo"Hora dos Fantasmas!";}
if($hora >='7' and $hora <'12'){echo"Bom dia!";}
if($hora >='12' and $hora <'19'){echo"Boa tarde!";}
if($hora >='19' and $hora <'7'){echo"Boa noite!";}
?>


Assim dá não dá? :oops: