Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite
Estou começar a aprender php para meu PIC e ao tentar realizar um exemplo da apostila do curso que eu fiz não conseguir executar sou iniciante então espero que por favor algum de vocês consiga me ajudar
O problema é o seguinte, estou tentando fazer um programa simples de vende de uma lanchonet que verifica qual os items escolhidos pelo usuário e calcula o valor de acordo com as alternativas escolhidas e mostra o total em um campo de texto.
o código esta assim
<!DOCTYPE HTML>
<html lang="pt-br">
<head>
<title></title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="estilo.css">
</head>
<body>
<form>
<div class="combobox" >
<select name="select_lanche">
<option value="" > Escolha seu lanche </option>
<option value="4.50" > X-Burguer - R$ 4.50 </option>
<option value="6" > X-Frango - R$ 6.00 </option>
<option value="8.50" > X-Tudo - R$ 8.50 </option>
<option value="5" > X-Salada - R$ 5.00 </option>
</select>
</div>
<div class="radiob">
<input type="radio" name="radio_refri" value="r_coca" checked/> Coca-cola - R$ 2.50 <br>
<input type="radio" name="radio_refri" value="r_sucol" /> Suco de Laranja - R$ 1.90 <br>
<input type="radio" name="radio_refri" value="r_fanta" /> Fanta - R$ 2.20 <br>
<input type="radio" name="radio_refri" value="r_guara" /> Guarana - R$ 2.50 <br>
</div>
<div class="adic" >
<input type="checkbox" name="checkbox_egg" value="egg"/> Egg - R$ 0.50 <br>
<input type="checkbox" name="checkbox_bacon" value="bacon"/> Bacon - R$ 1.50 <br>
<input type="checkbox" name="checkbox_cala" value="cala"/> Calabresa - R$ 1.20 <br>
<input type="checkbox" name="checkbox_maio" value="maio"/> Maionese - R$ 0.30 <br>
</div>
<div class="botaoenv">
<?php ?><input type="submit" value="Calcular"/>
</div>
<div class="text_do_total">
Total: R$<input type="text" name="text_total" value="<?php echo @$total; ?>"/>
</div>
</form>
</body>
</html>
<?php
@$lanche = $_REQUEST["select_lanche"];
@$radiococa = $_REQUEST["r_coca"];
@$radiosuco = $_REQUEST["r_suco"];
@$radiofanta = $_REQUEST["r_fanta"];
@$radioguara = $_REQUEST["r_guara"];
if ($radiococa == "r_coca"){
$total = 2.50;
}
if ($radiosuco == "r_suco"){
$total = 1.90;
}
if ($radiofanta == "r_fanta"){
$total = 2.20;
}
if ($radioguara == "r_guara"){
$total = 2.50;
}
@$egg = @$_REQUEST["egg"];
@$bacon = @$_REQUEST["bacon"];
@$cala = @$_REQUEST["cala"];
@$maio = @$_REQUEST["maio"];
if ($egg == "on") {
$total = 0.50;
}
elseif ($bacon == "on") {
$total = 1.50;
}
elseif ($cala == "on") {
$total = 1.20;
}
elseif ($maio == "on") {
$total = 0.30;
}
?>
o problema é que ao clicar no botão ele não gera o total no campo.
sei que deve ser um erro elementar mais meu professor do curso não soube responder pro incrível que pareça. Penso que o problema é no botão pois acredito que a programação do calculo esta correta.
Comece deixando o código respirar, tirando os @
Mais se eu tiro os '@' ele da vários erros de variável vazia, com o @ ele impede de que seja imprimido os erros de variáveis vazias
Qual o método de seu form?
Já é um bom começo, a validação deve começar quando houver uma ação do submit
<input type="submit" value="Calcular"/>
Dê um name="" ao conteúdo acima
<?php
if(isset($_POST['aqui_vem_o_name'])){
}
?>
Veja também http://www.upinside.com.br/video-aulas/trabalhando-com-checkbox-e-radio-button
O arroba você está ocultando os erros. Jamais faça isso ao criar um script. O problema é que você precisa validar as coisas. O código sem o infeliz do arroba seria assim:
<?php
$lanche = isset($_POST["select_lanche"]) ? $_POST["select_lanche"] : null;
$radiococa = isset($_POST["r_coca"]) ? $_POST["r_coca"] : null;
$radiosuco = isset($_POST["r_suco"]) ? $_POST["r_suco"] : null;
$radiofanta = isset($_POST["r_fanta"]) ? $_POST["r_fanta"] : null;
$radioguara = isset($_POST["r_guara"]) ? $_POST["r_guara"] : null;
if ($radiococa == "r_coca") {
$total = 2.50;
}
if ($radiosuco == "r_suco") {
$total = 1.90;
}
if ($radiofanta == "r_fanta") {
$total = 2.20;
}
if ($radioguara == "r_guara") {
$total = 2.50;
}
$egg = isset($_POST["egg"]) ? $_POST["egg"] : null;
$bacon = isset($_POST["bacon"]) ? $_POST["bacon"] : null;
$cala = isset($_POST["cala"]) ? $_POST["cala"] : null;
$maio = isset($_POST["maio"]) ? $_POST["maio"] : null;
if ($egg == "on") {
$total = 0.50;
} elseif ($bacon == "on") {
$total = 1.50;
} elseif ($cala == "on") {
$total = 1.20;
} elseif ($maio == "on") {
$total = 0.30;
}
?>
<!DOCTYPE HTML>
<html lang="pt-br">
<head>
<title></title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="estilo.css">
</head>
<body>
<form>
<div class="combobox" >
<select name="select_lanche">
<option value="">Escolha seu lanche</option>
<option value="4.50">X-Burguer - R$ 4.50</option>
<option value="6">X-Frango - R$ 6.00</option>
<option value="8.50">X-Tudo - R$ 8.50</option>
<option value="5">X-Salada - R$ 5.00</option>
</select>
</div>
<div class="radiob">
<input type="radio" name="radio_refri" value="r_coca" checked />Coca-cola - R$ 2.50<br />
<input type="radio" name="radio_refri" value="r_sucol" />Suco de Laranja - R$ 1.90<br />
<input type="radio" name="radio_refri" value="r_fanta" />Fanta - R$ 2.20<br />
<input type="radio" name="radio_refri" value="r_guara" />Guarana - R$ 2.50<br />
</div>
<div class="adic" >
<input type="checkbox" name="checkbox_egg" value="egg" />Egg - R$ 0.50<br />
<input type="checkbox" name="checkbox_bacon" value="bacon" />Bacon - R$ 1.50<br />
<input type="checkbox" name="checkbox_cala" value="cala" />Calabresa - R$ 1.20<br />
<input type="checkbox" name="checkbox_maio" value="maio" />Maionese - R$ 0.30<br />
</div>
<div class="botaoenv">
<input type="submit" value="Calcular" />
</div>
<div class="text_do_total">
Total: R$<input type="text" name="text_total" value="<?php echo $total; ?>" />
</div>
</form>
</body>
</html>
E dois pontos que queria mostrar:
E, mesmo sabendo que você é iniciante, seria bom ao menos você conhecer como fazer funções. Uma forma básica de melhorar seu código. Veja como ficaria melhor:
<?php
function getPost($key)
{
return isset($_POST[$key]) ? $_POST[$key] : null;
}
function getTotal()
{
$lanche = getPost("select_lanche");
$radiococa = getPost("r_coca");
$radiosuco = getPost("r_suco");
$radiofanta = getPost("r_fanta");
$radioguara = getPost("r_guara");
$egg = getPost("egg");
$bacon = getPost("bacon");
$cala = getPost("cala");
$maio = getPost("maio");
if ($radiococa == "r_coca") {
$total = 2.50;
}
if ($radiosuco == "r_suco") {
$total = 1.90;
}
if ($radiofanta == "r_fanta") {
$total = 2.20;
}
if ($radioguara == "r_guara") {
$total = 2.50;
}
switch ("on") {
case $egg:
$total = 0.50;
break;
case $bacon:
$total = 1.50;
break;
case $cala:
$total = 1.20;
break;
case $maio:
$total = 0.30;
break;
}
return $total;
}
?>
<!DOCTYPE HTML>
<html lang="pt-br">
<head>
<title></title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="estilo.css">
</head>
<body>
<form>
<div class="combobox" >
<select name="select_lanche">
<option value="">Escolha seu lanche</option>
<option value="4.50">X-Burguer - R$ 4.50</option>
<option value="6">X-Frango - R$ 6.00</option>
<option value="8.50">X-Tudo - R$ 8.50</option>
<option value="5">X-Salada - R$ 5.00</option>
</select>
</div>
<div class="radiob">
<input type="radio" name="radio_refri" value="r_coca" checked />Coca-cola - R$ 2.50<br />
<input type="radio" name="radio_refri" value="r_sucol" />Suco de Laranja - R$ 1.90<br />
<input type="radio" name="radio_refri" value="r_fanta" />Fanta - R$ 2.20<br />
<input type="radio" name="radio_refri" value="r_guara" />Guarana - R$ 2.50<br />
</div>
<div class="adic" >
<input type="checkbox" name="checkbox_egg" value="egg" />Egg - R$ 0.50<br />
<input type="checkbox" name="checkbox_bacon" value="bacon" />Bacon - R$ 1.50<br />
<input type="checkbox" name="checkbox_cala" value="cala" />Calabresa - R$ 1.20<br />
<input type="checkbox" name="checkbox_maio" value="maio" />Maionese - R$ 0.30<br />
</div>
<div class="botaoenv">
<input type="submit" value="Calcular" />
</div>
<div class="text_do_total">
Total: R$<input type="text" name="text_total" value="<?php echo getTotal(); ?>" />
</div>
</form>
</body>
</html>
Esse segundo código foi apenas uma melhoria do primeiro, sem mudar comportamento. Eu sinceramente não entendi a lógica do código, mas.. espero que ajude.
Comece deixando o código respirar, tirando os @