//Calcula o IMC if($sexo == "Masculino"){ if ($imc<20.7){ echo "Situação: Abaixo do peso";
} elseif ($imc>=20.7 && $imc<26.4) { echo "Situação: Peso normal"; }elseif ($imc>=26.4 && $imc<27.8) { echo "Situação: Marginalmente acima do peso"; }elseif ($imc>=27.8 && $imc<31.1) { echo "Situação: Acima do peso ideal"; }else{ echo "Situação: Obeso"; } }else{ if ($imc<19.1) { echo "Situação: Abaixo do peso"; }elseif ($imc>=19.1 && $imc<25.8){ echo "Situação: Peso normal"; }elseif ($imc>=25.8 && $imc<27.3){ echo "Situação: Marginalmente acima do peso"; }elseif ($imc>=27.3 && $imc<32.3){ echo "Situação: Acima do peso ideal"; }else{ echo "Situação: Obesa"; } } ?>
Quando coloco por exemplo a data: 01/01/1985 ele retorna o valor correto: Idade: 30 anos 9 meses 8 dias
No entanto quando coloco 27/09/1985 ele retorna o seguinte erro: Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (27/09/1984) at position 0 (2): Unexpected character' in C:\xampp\htdocs\projeto\ModuloIII\Unidade III\IMC\imc.php:12 Stack trace: #0 C:\xampp\htdocs\projeto\ModuloIII\Unidade III\IMC\imc.php(12): DateTime->__construct('27/09/1984') #1 {main} thrown in C:\xampp\htdocs\projeto\ModuloIII\Unidade III\IMC\imc.php on line 12
Pergunta
daviaer
Galera sou novo nesse tal de php...rsrsrs
Estou perdendo os cabelos por causa de um erro no cálculo de idade. Fiz um formulário em html e os scripts em php.
Algumas data retornam com a idade certa, no entanto, outras retornam um erro. Segue meu código
*** Formulário
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Calcular o IMC</title>
</head>
<body>
<form method="post" name="form_IMC" action="imc.php" >
<fieldset>
<legend>Descubrindo seu IMC</legend>
<legend><h2><b>Informe seus dados</b></h2></legend>
<label>Nome:</label> <input name="nome" type="text" size="40"/><p>
<label>Data de nascimento: </label>
<input type="date" maxlength="10" name="data" pattern="[0-9]{2}\/[0-9]{2}\/[0-9]{4}$" />
<label>Sexo: </label>
<select name="sexo">
<option value="Masculino" />Masculino</option><br />
<option value="Feminino" />Feminino</option><br />
</select><p>
<label>Peso (Kg): </label> <input type="text" name="peso" /><p>
<label>Altura (cm): </label> <input type="text" name="altura" /><p>
<input type="submit" value="Enviar"/>
<input type="reset" value="Limpar"/>
</fieldset>
</form>
</body>
</html>
****PHP
<?php
$nome = $_POST["nome"];
$data = $_POST["data"];
$sexo = $_POST["sexo"];
$peso = $_POST["peso"];
$altura = $_POST["altura"];
$imc = $peso / (($altura/100)*($altura/100));
//Calcula a idade
$date = new DateTime($data);
$interval = $date->diff( new DateTime( ) );
echo "Nome: $nome<br />";
echo "Data de Nascimento: $data<br/ >";
echo "Sexo: $sexo<br />";
echo "Peso(kg): $peso<br />";
echo "Altura(cm): $altura<br />";
echo "------------------------------<br />";
echo "RESULTADO<br />";
echo "------------------------------<br />";
echo $interval->format( "Idade: %Y anos %m meses %d dias<br />");
echo "Seu IMC é: $imc<br />";
//Calcula o IMC
if($sexo == "Masculino"){
if ($imc<20.7){
echo "Situação: Abaixo do peso";
} elseif ($imc>=20.7 && $imc<26.4) {
echo "Situação: Peso normal";
}elseif ($imc>=26.4 && $imc<27.8) {
echo "Situação: Marginalmente acima do peso";
}elseif ($imc>=27.8 && $imc<31.1) {
echo "Situação: Acima do peso ideal";
}else{
echo "Situação: Obeso";
}
}else{
if ($imc<19.1) {
echo "Situação: Abaixo do peso";
}elseif ($imc>=19.1 && $imc<25.8){
echo "Situação: Peso normal";
}elseif ($imc>=25.8 && $imc<27.3){
echo "Situação: Marginalmente acima do peso";
}elseif ($imc>=27.3 && $imc<32.3){
echo "Situação: Acima do peso ideal";
}else{
echo "Situação: Obesa";
}
}
?>
Quando coloco por exemplo a data: 01/01/1985 ele retorna o valor correto: Idade: 30 anos 9 meses 8 dias
No entanto quando coloco 27/09/1985 ele retorna o seguinte erro:
Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (27/09/1984) at position 0 (2): Unexpected character' in C:\xampp\htdocs\projeto\ModuloIII\Unidade III\IMC\imc.php:12 Stack trace: #0 C:\xampp\htdocs\projeto\ModuloIII\Unidade III\IMC\imc.php(12): DateTime->__construct('27/09/1984') #1 {main} thrown in C:\xampp\htdocs\projeto\ModuloIII\Unidade III\IMC\imc.php on line 12
Alguém pode me ajudar????
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.