Exercício PHP

Fala galera, queria uma ajuda sobre PHP básico:

Quando crio um formulário em um arquivo HTML, eu envio as informações pelo método $_GET[""] e um “action” para um arquivo PHP. Até aí tudo bem.

Mas estou querendo usar um <select> no meu formulário e gerar as <options> de forma dinâmica, ou seja, através de um loop for do PHP.

Dúvida 1: Sempre que meu código tiver <?php...?> ele necessariamente terá que ser um arquivo .php? Acho que a resposta é “sim”, mas vou manter a pergunta para confirmar.

Dúvida 2: Neste caso, que meu <form> está em um arquivo .php, como envio as informações para um outro arquivo .php? Quando aperto no meu botão (<input type="submite">), minha URL fica assim:

http://localhost:8888/aula12/tabuada.php?no=6&Gerar+tabuada=Enviar

Dúvida 3: Caso eu queira, já que o meu <form> está em um arquivo .php, eu não poderia obter as respostas do meu <form> no mesmo arquivo? Como?

Abaixo o código:

Arquivo tabuada 1

<body>
<div>
 		<form method="get" action"tabuada2.php">
 			Número
 			<select name="no" id="numero">
 				<?php	
 					for ($i=1; $i <=10 ; $i++) { 
 						echo "<option value='$i'>$i</option>";
 					}
 				?>
 					<input type="submit" name="Gerar tabuada">
 				
 			</select>
 		</form>
</div>
</body>

Arquivo tabuada 2

<body>
	<?php
		$nr = $_GET["no"];
		for ($i=1; $i <= 10 ; $i++) { 
			echo "$nr X $i = ($nr*$i)";
		}
	?>
</body>

Sim, senão o interpretador do php (zend engine) não saberá que existe php ali e não processa…

Get não é recomendado para forms, nesse caso mude o method para post…

É possível e para aprendizado até vale a pena, mas para projetos profissionais o ideal é enviar para outro arquivo, ou se avançar nos estudos usar MVC e enviar para um Controller, mas respondendo ficaria algo assim no inicio do arquivo por exemplo…

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // o que você quer que o php faça aqui...
}
?>

Plus: caso queira dinamizar o combo (comumente chamamos select + options) com php pode tentar algo assim…

<select name="itens">
    <?php for ($i = 1; $i <= 10; $i++): ?>
    <option value="<?=$i?>">Item <?=$i?></option>
    <?php endfor; ?>
</select>

Essa é uma outra forma de “misturar” php com html, gerando código dinâmico… outro exemplo…

<?php
$estados = ['SP', 'RJ', 'MG', 'PR', 'BA'];
?>

<select name="uf">
    <?php foreach ($estados as $uf): ?>
        <option value="<?=$uf?>"><?=$uf?></option>
    <?php endforeach; ?>
</select>

O símbolo <?=?> é a mesma coisa que usar <?php echo $i; ?> sendo um atalho pre configurado na versão 5.4+ (para versões anteriores precisa ativar a opção short_open_tag no php.ini)

Os terminadores endfor e endforeach são outra forma de fechar laços de repetição, existe também endif, endwhile, endswitch, etc… isso porque é melhor usá-los do que fazer isso…

<php if ($condicao) { ?>
    html...
<?php } ?>

Compllicando a leitura do código devido as chaves e dificultando e muito a manutenção, melhor escrever um pouco mais e ficar tranquilo no futuro e os web designers/ front enders agradecem pois sabem onde não devem mexer :joy:

Espero ter ajudado e bons estudos!

1 curtida