Ir para conteúdo

POWERED BY:

Arquivado

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

RafiWskY

Erro sintaxe e lógica

Recommended Posts

Boa noite.

 

No código abaixo está acusando erro de sintaxe, o problema aparenta ser no fechamento das chaves, porém no meu modo de ver está correto. Alguém poderia me corrigir se eu estiver errado ?

 

Outra questão é a seguinte, estou recuperando um arquivo vindo de um formulário, e quero que o formulário seja enviado mesmo que o usuário não mande um arquivo. Para isso tentei validar comparando a variavel $_FILES com a variavel $arquivo, porém ele passa pela condição e vai para Tipo de arquivo inválido. Alguém com uma solução ?

 

Obrigado.

 

if ($_FILES['arquivo'] != $arquivo) {
		if (!$mail->Send()) { 
			echo "Erro ao enviar orçamento"; 
			} else {
			echo "Orçamento enviado com sucesso"; 
    } elseif($arquivo['type'] != 'image/jpeg') {
		echo "Tipo de arquivo inválido"; 
	} elseif (!$mail->Send()) {
		echo "Erro ao enviar orçamento"; 
	} else {
	echo "Orçamento enviado com sucesso"; 
}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está faltando fechar o segundo if:

if (!$mail->Send()) { 
			echo "Erro ao enviar orçamento"; 
			} else {
			echo "Orçamento enviado com sucesso"; 
} <--

$arquivo está vindo de onde?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá errado sim.

 

Indenta o código corretamente que você verá que, do jeito que está, o interpretador enxerga um ELSEIF imediatamente após um ELSE, o que é errado já que o ELSE sempre é o último.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está errado justamente o elseif seguindo o else, conforme o amigo acima disse, tenta dar uma melhorada na indentação que vc verá o erro.

 

 

 

<?php
if ($_FILES['arquivo'] != $arquivo){
if (!$mail->Send()){
echo "Erro ao enviar orçamento";
}else{
echo "Orçamento enviado com sucesso";
}
}elseif($arquivo['type'] != 'image/jpeg') {
echo "Tipo de arquivo inválido";
} elseif (!$mail->Send()) {
echo "Erro ao enviar orçamento";
} else {
echo "Orçamento enviado com sucesso";
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito, o erro da sintaxe era esse mesmo.

 

Quanto a lógica.

 

 

$arquivo está vindo de onde?

 

$arquivo = $_FILES['arquivo'];

 

A minha idéia era, se $_FILES['arquivo']; for diferente de $arquivo, significa que nenhum arquivo foi carregado, então a condição é verdadeira, assim já vai pro send sem passar pelas outras verificações.

 

To começando no php, nem sei se isso ta certo...rsrs...

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você está dizendo que $arquivo = $_FILES['arquivo']; e logo depois pergunta em um if se $_FILES['arquivo'] != $arquivo, isto não faz sentido, porque sempre eles serão iguais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você está dizendo que $arquivo = $_FILES['arquivo']; e logo depois pergunta em um if se $_FILES['arquivo'] != $arquivo, isto não faz sentido, porque sempre eles serão iguais.

 

 

Entendi, mais como você acha que eu poderia verificar ? Eu tentei com:

if (empty($_FILES)) {

 

ou

 

if (empty($arquivo)) {

 

mas também não da certo.

 

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

if($_FILES['nome_do_input']['error'] == '0'){
//Arquivo envindo com sucesso
}else{
//Aconteceu algum erro...
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficou assim:

 

if ($_FILES['arquivo']['error'] == '0'){
		if (!$mail->Send()) { 
			echo "Erro ao enviar orçamento"; 
			} else {
			echo "Orçamento enviado com sucesso"; 
			}
    } elseif($arquivo['type'] != 'image/jpeg') {
		echo "Tipo de arquivo inválido"; 
	} elseif (!$mail->Send()) {
		echo "Erro ao enviar orçamento"; 
	} else {
	echo "Orçamento enviado com sucesso"; 
}//fim do if externo

 

 

Mas não deu certo, ele foi para: echo "Tipo de arquivo inválido";

Compartilhar este post


Link para o post
Compartilhar em outros sites
if ($_FILES['arquivo']['error'] != '0'){
        if (!$mail->Send()) {
            echo "Erro ao enviar orçamento";
            } else {
            echo "Orçamento enviado com sucesso";
            }
    } elseif($arquivo['type'] != 'image/jpeg') {
        echo "Tipo de arquivo inválido";
    } elseif (!$mail->Send()) {
        echo "Erro ao enviar orçamento";
    } else {
    echo "Orçamento enviado com sucesso";
}//fim do if externo

 

Pegue uma apostila de lógica de programação e algoritmos, pois com certeza você tem uma falha grava de capacidade de raciocínio relacionado a estas questões.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado pela ajuda... só acho um pouco exagerado sua análise... estou começando nesse meio e nesse momento o que eu preciso é de motivação e não alguém pra colocar para baixo.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@RafiWskY, apesar de o comentário do ESerra ter soado meio duro, infelizmente é a mais pura verdade.

 

O mercado de PHP está saturado de pessoas que se dizem programadores mas não sabem nem fazer um IF.

 

Apesar de ser justo esse o seu problema juro que não é sobre você a que me refiro. :unsure:

 

Tais pessoas agem como verdadeiros sanguessugas da programação, obtendo clientes por lábia e entregando sistemas construídos com ajuda de programadores experientes (ou pelo menos mais do que esse camarada) que por se achar esperto veio num fórum, elaborou um cenário válido e obteve a resposta para o problema que ele dominaria se tivesse estudado de baixo para cima ao invés do contrário, fazendo um site que com certeza está recebendo dinheiro por ele.

 

Muitas vezes essas pessoas sequer tem o respeito para conosco de vir agradecer, verbalmente ou através de um mísero pontinho junto ao post de quem lhe ajudou.

 

Você diz estar começando nesse meio... Sabe o que eu fazia quando estava "começando no meio" (entre aspas pois não trabalho na área)? Eu estava lendo apostilas de PHP, o manual, criando sistemas pequenos para mim mesmo, para treinar e desde sempre comecei no mais básico: variáveis, estruturas de controle, repetição, arrays...

 

Depois de um bom tempo, depois de ter dominado grande parte do conceito é que parti para uploads. Até integração com banco de dados eu demorei um pouquinho para entrar.

 

Não se sinta ofendido com o comentário do ESerra. Leve-o como uma verdade difícil de ser engolida, mas siga em frente porque se mascararmos esse seu problema com palavras bonitas, você vai ser mais um "sobrinho" que compra o pão e o leite das crianças às nossas custas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno, agradeço pelas palavras.

 

Eu estou fazendo faculdade de sistemas de informação, estou no segundo ano, aprendendo o básico ainda da programação, e criando sites ainda com html4 e css2, tentando aos poucos utilizar html5 e css3... para alguns recursos como por exemplo um formulário de contato eu preciso utilizar o php, e é assim que estou treinando o meu aprendizado com programação.

 

Não vejo o porque de julgar todos pelo erro de alguns. Eu em todos os meus posts aqui no forum sempre procurei após uma resposta retribuir a ajuda com um agradecimento. Apesar de me julgar um iniciante, tenho cadastro neste forum com este login desde Dez 2004.

 

Já pensou se no início de cada um de vocês, recebesse um belo incentivo como esse falando de capacidade de raciocinio ? Não é legal. Soa como falta de humildade.

 

Enfim, vamos deixar as diferenças de lado e tocar o barco.

 

Agradeço a todos.

Obrigado.

Rafael.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já pensou se no início de cada um de vocês, recebesse um belo incentivo como esse falando de capacidade de raciocinio ? Não é legal. Soa como falta de humildade.

 

E você acha que a sua capacidade de racioncíonio está boa? Olha lá em cima, você estava fazendo:

 

 

$arquivo = $_FILES['arquivo'];//Você disse que estava fazendo esta atribuição
 
if($_FILES['arquivo'] != $arquivo){
 
}

 

Você acha isso normal? Ainda mais para um estudante de segundo ano? Por favor né... acredite, quando você cair no mercado de trabalho o teu chefe não vai querer saber dos teus sentimentos, se ele achar que você tem alguma deficiência ele vai te descascar e pronto, o mundo é assim. Amor, carinho e compreensão a gente só recebe da mãe.

 

Como já foi dito, receba isso como um alerta para você melhorar, porque ficar chorando não vai resolver os pontos onde você tem deficiência, agora, você pegar isso e correr atrás, pode ser que resolva.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz, que isso moçada? é errando que se aprende, tem muita gente por ai que se diz formado e não sabe nem o que é um if else, e o pior não corre atras do que acha que sabe, então o importante é correr atras e sempre mais sempre com humildade na veia...valew!

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.