Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nboportune

[Resolvido] if else formulario para email e calculo...

Recommended Posts

Olá pessoal mais uma vez....

 

Estou desenvolvendo um site para pedido on-line, está quase finalizado...

 

Estou com um problema e uma dúvida:

 

o cliente clica na pizza que ele quer e a pizza é adicionada no carrinho, e qndo ele insere ele te a opção de escolher meia ou inteira.

 

Se ele seleciona a inteira o php insere no banco de dados o valor 1 e se ele seleciona meia o php insere no banco o valor 2, mas porque isso?

 

acontece que fiz dessa forma porque eu consigo diviir o preço para calcular o total, faço isso usando divisao, caso a pizza custe 10 ele divide por 2 que é meia e fica a metade do valor e caso seje 1 que é inteira fica o valor total da pizza.

...........................

 

Depois que ele insere no carrinho eu tenho um camando de if else que vai verificar se o valor no campo do banco é "1" se for ele mostra "inteira" e se não for ele mostra "meia"

 

até ai tudo bem ele funciona legal.... depois do carrinho pro cliente finalizar o pedido ele vai para uma pagina de confirmação do pedido onde ele ve tudo detalhando oque ele esta pedindo, caso esteja tudo certo o cliente vai finalizar o pedido e vai um formulario no email da pizzaria e do cliente...

 

configurei tudo ja.... está vindo pro email, mas a unica coisa que não está funcionando é o if else do meia inteira pra qndo mandar no email da pizzaria o pizzaiolo saber se é inteira ou meia....

 

o codigo é o seguinte...

$msg .= "<table bolder='1' width='100%'>
<tr>
        <td width='5%' bgcolor'#437563' align='left' valign='top'>"
        
        if ($selecione == '1') {
                        echo 'Inteira';
                        }else{
                        
                        echo 'Meia';
                        }  

        
        "</td>
    <td align='left' valign='top' width='7%'>$nome</td>
    <td align='left' valign='top' width='18%'>: $desc</td>

e o erro é esse aqui:

 

Parse error: syntax error, unexpected T_IF in /home/n83685/public_html/colonia/carrinho/finalizar_pedido.php on line 98

...................................

 

e a dúvida seria se alguem tem alguma ideia de como eu poderia fazer algo como um calculo para saber se quem está comprando esta pegando 2 pizzas inteira e não 1 pizza inteira e uma metade...

 

 

Grato desde ja mais uma vez...

 

att

Neto

Compartilhar este post


Link para o post
Compartilhar em outros sites

falta um ponto e virgula nessa linha

<td width='5%' bgcolor'#437563' align='left' valign='top'>"

antes do IF

Compartilhar este post


Link para o post
Compartilhar em outros sites

Até falta isto Dee, mas não vai resolver o problema. Veja que você está concatenando os valores na $msg. O resultado (inteira ou meia) você está imprimindo. Então, você tem que colocar o ponto e vírgula que o Dee falou, trocar o echo por $msg.= e depois do if continuar a concatenação ($msg .=).

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala galera consegui fazer. é o seguinte:

 


<td width='5%' bgcolor'#437563' align='left' valign='top'>";
	
	$msg .= ($selecione == '1') ? 'Inteira' : 'Meia';



	
	$msg .= "</td>
    <td align='left' valign='top' width='7%'>$nome</td>
    <td align='left' valign='top' width='18%'>: $desc</td>

não conhecia essa forma..

 

Abs e vlw pela ateção de vocês.

 

Sobre o calculo para o cliente naum perdir 1/2 pizza só alguem tem ideia de como eu poderia fazer?

 

att

Neto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, faz um if... Se estiver como meia pizza ($selecione == 1), você testa quantos sabores foram escolhidos. Se for diferente de 2, devolve pra ele dizendo que tá errado.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, faz um if... Se estiver como meia pizza ($selecione == 1), você testa quantos sabores foram escolhidos. Se for diferente de 2, devolve pra ele dizendo que tá errado.

 

Carlos Eduardo

 

Fala Ai Carlos,

 

Então pensei nisso, mas é assim ele pode comprar 2 pizza inteira que tem o valor 1 cada um e da o valor de 2 no total ou ele pode comprar so meia pizza que da o valor tbm.... como poderia fazer o cauculo?

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, o problema está na tua lógica.

Você não vai poder usar a lógica assim, como você fez... Ao invés de passar 2 para meia e 1 para inteira, você passa 1/2 (ou 0.5) para meia e continua mandando 1 para a inteira. Aí, para calcular o preço, você multiplica o valor unitário da pizza pela quantidade. Vamos a um exemplo.

Digamos que a pizza inteira custe R$ 20.00. Se o cara escolher 1/2 pizza e você fizer 20 * 1/2, vai ter resultado de R$ 10.00. Aí, para saber se o cara escolheu a quantidade correta (ou seja, não ficou só meia pizza), você soma todas as quantidades e confere se é um inteiro (is_int()). Se for, significa que o cara escolheu a quantidade correta. Se não for, devolve e diz que tá errado.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, o problema está na tua lógica.

Você não vai poder usar a lógica assim, como você fez... Ao invés de passar 2 para meia e 1 para inteira, você passa 1/2 (ou 0.5) para meia e continua mandando 1 para a inteira. Aí, para calcular o preço, você multiplica o valor unitário da pizza pela quantidade. Vamos a um exemplo.

Digamos que a pizza inteira custe R$ 20.00. Se o cara escolher 1/2 pizza e você fizer 20 * 1/2, vai ter resultado de R$ 10.00. Aí, para saber se o cara escolheu a quantidade correta (ou seja, não ficou só meia pizza), você soma todas as quantidades e confere se é um inteiro (is_int()). Se for, significa que o cara escolheu a quantidade correta. Se não for, devolve e diz que tá errado.

 

Carlos Eduardo

 

Fala ai Carlos Eduardo,

 

Então to fazendo aqui esse esquema que você falou de multiplicar da funcionando beleza, ja... to fazendo a soma assim...

 

<?PHP
$selecione // nome dado a minha variavel que pega as informações do banco de dados.

$soma += $selecione;

?>

é assim mesmo né?

agora pra suar o (is_int()) seria assim?

if (is_int($soma)){ echo "inteiro";
}else{ echo "Não inteiro";}
?>

é mais ou menos isso não é? ainda não ta funcionando dessa forma que coloquei do if, else...

 

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

É assim mesmo que faz.

 

Se não está funcionando, veja como você faz a atribuição dos valores à variável. Valores numéricos não devem ser colocados entre aspas, nem simples nem duplas. Senão, o PHP vai entender o valor como string e, por consequência, vai devolver o resultado como falso, mesmo que seja um número inteiro.

 

Se não conseguir fazer, poste o código completo, pra ver onde está errado.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

É assim mesmo que faz.

 

Se não está funcionando, veja como você faz a atribuição dos valores à variável. Valores numéricos não devem ser colocados entre aspas, nem simples nem duplas. Senão, o PHP vai entender o valor como string e, por consequência, vai devolver o resultado como falso, mesmo que seja um número inteiro.

 

Se não conseguir fazer, poste o código completo, pra ver onde está errado.

 

Carlos Eduardo

 

 

é isso mesmo que ta acontecendo ele ele verifica e aparece o falso pra mim.... olha o codigo...

 

<?PHP 
		  
		  $sql_lista = "SELECT * FROM carrinho WHERE sessao = '".session_id()."' ORDER by nome_produto ASC";
$exe_lista = mysql_query($sql_lista, $db) or die (mysql_error());
$num_lista = mysql_num_rows($exe_lista);

if ($num_lista > 0) {

$total_carrinho = 0;

while($reg_lista = mysql_fetch_array($exe_lista, MYSQL_ASSOC)){

$preco_inteira = $reg_lista['preco_inteira'];
$selecione = $reg_lista['selecione'];

$qtd = $reg_lista['qtd_produto'];
$pc1 = $reg_lista['pc1'];
$pc2 = $reg_lista['pc2'];
$pc3 = $reg_lista['pc3'];
$pc4 = $reg_lista['pc4'];
$selecione = $reg_lista['selecione'];


$teste += $selecione;
	  
		  }
		  }
		  

			  
if (is_int($teste)){
 echo "s";
} else {
 echo "n";
} ?>




<?php echo "$teste"; ?>

Então to fanzendo esse codigo só pra teste, mas não está funcionando to pegando os dados certo?.... o echo do test esta funcionando normal...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça um teste de debug:

var_dump($teste);

Poste aqui o que retorna.

 

Agora, observações sobre o seu código.

- Indente corretamente - http://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o

- Várias atribuições desnecessárias, como um exemplo abaixo.

$qtd = $reg_lista['qtd_produto'];
- Se trouxer mais de um resultado, vai sobrescrever todas estas variáveis que você está atribuindo. Vou explicar.

$preco_inteira = $reg_lista['preco_inteira'];
$selecione = $reg_lista['selecione'];

$qtd = $reg_lista['qtd_produto'];
$pc1 = $reg_lista['pc1'];
$pc2 = $reg_lista['pc2'];
$pc3 = $reg_lista['pc3'];
$pc4 = $reg_lista['pc4'];
$selecione = $reg_lista['selecione'];
- A cada iteração do while, este código vai ser executado. Então, todas estas variáveis vão ser sobrescritas.

- Não utilize aspas para imprimir variável, como no exemplo:

echo "$teste";
- Utilize apenas

echo $teste;
- Quando não houver variáveis no código, utilize aspas simples, que são mais rápidas:

echo "s";
Porque isto? O PHP tenta interpretar o que tem dentro de aspas duplas, à procura de comandos PHP a serem executados. Quando você usa aspas simples, o PHP não tenta interpretar o que tem ali dentro. Então, ficaria assim:

echo 's';

Era isto

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça um teste de debug:

var_dump($teste);

Poste aqui o que retorna.

 

Agora, observações sobre o seu código.

- Indente corretamente - http://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o

- Várias atribuições desnecessárias, como um exemplo abaixo.

$qtd = $reg_lista['qtd_produto'];
- Se trouxer mais de um resultado, vai sobrescrever todas estas variáveis que você está atribuindo. Vou explicar.

$preco_inteira = $reg_lista['preco_inteira'];
$selecione = $reg_lista['selecione'];

$qtd = $reg_lista['qtd_produto'];
$pc1 = $reg_lista['pc1'];
$pc2 = $reg_lista['pc2'];
$pc3 = $reg_lista['pc3'];
$pc4 = $reg_lista['pc4'];
$selecione = $reg_lista['selecione'];
- A cada iteração do while, este código vai ser executado. Então, todas estas variáveis vão ser sobrescritas.

- Não utilize aspas para imprimir variável, como no exemplo:

echo "$teste";
- Utilize apenas

echo $teste;
- Quando não houver variáveis no código, utilize aspas simples, que são mais rápidas:

echo "s";
Porque isto? O PHP tenta interpretar o que tem dentro de aspas duplas, à procura de comandos PHP a serem executados. Quando você usa aspas simples, o PHP não tenta interpretar o que tem ali dentro. Então, ficaria assim:

echo 's';

Era isto

 

Carlos Eduardo

 

 

Opa valeu pela dica não sabia das aspas... quanto as outras atribuições de variaveis é pq logo embaixo desse codigo elas são exibidas...

 

apareceu NUll com esse codigo que você me passou.. oque esse codigo faz?

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://br.php.net/var_dump

 

Outra dica... Sempre que tiver dúvida sobre uma função do PHP, entre no manual. br.php.net/nome_da_funcao

 

quanto as outras atribuições de variaveis é pq logo embaixo desse codigo elas são exibidas...

 

Mesmo assim. Se você vai exibir, porque atribuir à uma outra variável? Utilize a que vem da consulta.

 

Agora, sobre o fato de ter aparecido NULL, então esta variável está com valor de NULL, ou seja, não foi definida. Veja se está retornando alguma coisa da consulta, utilizando mysql_num_rows() para ver quantas linhas foram retornadas.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://br.php.net/var_dump

 

Outra dica... Sempre que tiver dúvida sobre uma função do PHP, entre no manual. br.php.net/nome_da_funcao

 

 

quanto as outras atribuições de variaveis é pq logo embaixo desse codigo elas são exibidas...

 

Mesmo assim. Se você vai exibir, porque atribuir à uma outra variável? Utilize a que vem da consulta.

 

Agora, sobre o fato de ter aparecido NULL, então esta variável está com valor de NULL, ou seja, não foi definida. Veja se está retornando alguma coisa da consulta, utilizando mysql_num_rows() para ver quantas linhas foram retornadas.

 

Carlos Eduardo

 

 

Desculpa Carlos,

 

fui ver aki tinh digitado oque você me passo incorretamente ai ele aparecia null...

 

o correto agora ele está aparecendo, float(2), pelo oque entendi no link que você me passou siguinica o valor da variavel certo? então esta vindo normal o cod. ou não?

 

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Significa que é um float... Então não vai funcionar como eu imaginei, porque mesmo sendo um inteiro (2), ele está como float, porque foram somados como float... Olha, só pensei em uma solução bem POG...

 

if($teste == (int)$teste)
{
    echo 'inteiro';
}
else
{
    echo 'Não inteiro';
}

Vai funcionar, mas não é a melhor forma. Não consegui pensar em outra.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Significa que é um float... Então não vai funcionar como eu imaginei, porque mesmo sendo um inteiro (2), ele está como float, porque foram somados como float... Olha, só pensei em uma solução bem POG...

 

if($teste == (int)$teste)
{
    echo 'inteiro';
}
else
{
    echo 'Não inteiro';
}

Vai funcionar, mas não é a melhor forma. Não consegui pensar em outra.

 

Carlos Eduardo

 

Opá funcionou o echo.... agora vou trocar os echo por se for tal coisa continua se não for volta.....

 

mas tipo sei que ja amolei você de mais ai, mas queria ententer tipo se funciona esse comando que você me passou pq não seria o certo?

 

vlw mais uma vez...

 

mais uma duvida aqui nesse forum não tem aquele esquema que acrecenta um ponto qndo a resposta me ajudou?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, nem tudo que funciona é o certo. Tem coisa que funciona mas não é a forma correta de fazer. Isto é a definição de POG.

http://desciclo.pedia.ws/wiki/Programa%C3%A7%C3%A3o_Orientada_a_Gambiarras#Defini.C3.A7.C3.A3o_de_POG

 

Vou dar um exemplo. Tem muita gente que faz assim para definir se a variável está definida

if($var)

Isto normalmente funciona, mas está errado. O correto é utilizar

if(isset($var))

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.