Ir ao conteúdo

Posts recomendados

Postado

Tenho dois códigos, um em HTML e outro em PHP, preciso de uma ajuda.

 

HTML:

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<div>
<form method="GET" action="qualquer">
<h2>Tabuada</h2>
    Número:    <select name="tab">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>        
    <option value="10">10</option>
    </select>
    <input type="Submit" name="Tabuada">
</form>
</div>
</body>
</html>

 

PHP:

<!DOCTYPE html>
<html>
<head>
    <title> Curso de Php</title>
</head>
<body>
<div>
<?php
    $tab = isset($_GET['tab'])?$_GET['tab']:"(valor não informado)";
    echo "<h1>Calculando a tabuada do $tab</h1>";
    $valor = 1;
    do{
        $res = $tab * $valor;
    }while($valor >= 10);
    
    echo "<h2>$tab x $valor = $res</h2>";
?>
<a href="untitled">Voltar</a>
</div>
</body>
</html>

Quando clico no botão Tabuada, só aparece o número que eu selecione pelo select vezes o numero um que é da variável valor, e eu quero fazer para que apareça uma tabuada do número selecionado, ele multiplicando com os outros de 1 a 10. 

Postado

Nesse caso seria mais simples e fácil utilizando JavaScript, mas dessa forma, você deveria colocar o echo dentro do do... while, por exemplo:

do{
	$res = $tab * $valor;
	echo "<h2>$tab x $valor = $res</h2>";
}while($valor >= 10);

Em JavaScript não seria necessário enviar para processar em uma página PHP, na própria página já é processado, e ficaria dessa forma:

<html>
<script>
function Tabuada()
{
	var res, valor = document.getElementById('tab').value;
	document.getElementById('resposta').innerHTML = "";
  	for(var i = 1; i <= 10; i++)
    {
    	res = i * valor;
      	document.getElementById('resposta').innerHTML += i + "x" + valor + " = " + res + "<br>";
    }
}
</script>
<body>
  <h2>Tabuada</h2>
  Número:    <select name="tab" id="tab">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
  <option value="6">6</option>
  <option value="7">7</option>
  <option value="8">8</option>
  <option value="9">9</option>        
  <option value="10">10</option>
  </select>
  <button onclick="return Tabuada()" name="Tabuada">Calcular</button>
  <div id="resposta"></div>
  </body>
</html>

 

  • Amei 1
  • Moderador
Postado

@iHollyZinhO Provavelmente o exercício não envolve o javascript. 

Por isso precisa ser em php. Concordo com você que é mais rápido de processar via cliente. Mas é interessante como fazer as coisas no lado servidor.

E é bem simples. Não precisa fazer com o do while. Basta um laço de for formatado para mostrar a tabuada:

 

$tab = $_POST["tab"];

for($i = 1; $i <= 10; $i++):
    $res = $i * $tab; 
    echo "$i x $tab =  $res <br/>";   
endfor;

Isso vai mostrar em tela:

Caso escolha  o número 3 no select:

 

1 x 3 = 3 
2 x 3 = 6 
3 x 3 = 9 
4 x 3 = 12 
5 x 3 = 15 
6 x 3 = 18 
7 x 3 = 21 
8 x 3 = 24 
9 x 3 = 27 
10 x 3 = 30 

 

Basicamente é isso que o usuário@Messin  estava procurando.  Fazer um laço onde imprime em tela a tabuada completa daquele número que ele escolher.

  • Curtir 1
  • Amei 1
Postado

iHollyZinhO e DiF Obrigado ae ajudou bastante aqui, os dois códigos deu certo para fazer, é porque com o PHP seria mais fácil por ser um curso que eu estou fazendo, mas o javascript também deu certo Ogrigadão mesmoooo

  • Curtir 2
Postado

@Messin apenas complementando com uma dica e não um código já que os amigos acima te deram o código correto, toda a vez que se trabalha com um loop, é necessário informar um incremento e um término. No teu código, por exemplo, você declarou $valor = 1, mas dentro do loop, essa variável não sofreu modificação passando ser sempre 1. Bastava apenas você colocar um 

do{
	$res = $tab * $valor;
	echo "<h2>$tab x $valor = $res</h2>";
	$valor += 1;
}while($valor >= 10);

e tudo estava resolvido. Veja que no loop for que ele o Dif e o iHollyZinhO passaram, há o incremento da variável i toda a vez que o loop é concluído.

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!