Ir para conteúdo

Arquivado

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

SrTunes

[Resolvido] Problema com if e um post

Recommended Posts

Galera, mais uma vez estou aqui para pedir um relp de vocês!

 

Estou com esse codigo em php:

 


if (getenv("REQUEST_METHOD") == "POST") {

if(isset($_POST['nome'])){
	$res = mysql_query("SELECT * FROM usuarios WHERE '%".$_POST['nome']."%'") or die(mysql_error());;

}
if(isset($_POST['cpf'])){
	$res = mysql_query("SELECT * FROM usuarios WHERE '%".$_POST['cpf']."%'") or die(mysql_error());;
}
if(isset($_POST['coord'])){
	$res = mysql_query("SELECT `usuarios`.* FROM `usuarios` INNER JOIN `cargo` ON `usuarios`.`cargo` = `cargo`.`cargo` WHERE '%" .$_POST['coord']."%' ORDER BY `cargo`.`id` ASC") or die(mysql_error());;
}
if(isset($_POST['cargo'])){
	$res = mysql_query("SELECT * FROM usuarios WHERE '%".$_POST['cargo']."%' ORDER BY nome ASC") or die(mysql_error());;
}
}
else{
$res = mysql_query("select * from usuarios") or die(mysql_error());

 

tem um formulario que envia o post e vai para esse código ai em cima. O problema ta que quando no formulario escolho por exemplo o cpf para digitar, nesse código ele vai para o if do POST["nome"]. Estou errando onde?

 

A parte do formulário é essa:

 


<form name="pesquisa" method="post" action="controle-de-certificados.php">
<table width="200" height="100" border="1"> 
   	<tr>
       	<td width="60">
		   		<select name="pesquisa" onchange="mostraDiv(this.value)">
        		 <option value="nome"> Nome </option>      
   	    		 <option value="cpf"> CPF </option>
       			 <option value="coord"> Coordenação </option>
       			 <option value="cargo"> Cargo </option>
   			</select>
		</td>
           <td width="100">
			<div id="nome">
				<input type="text" name="nome" /> <br />
			</div>

			<div id="cpf">
				<input type="text" name="cpf" /> <br />
			</div>

			<div id="coord">
				<select name="coord">
				<?php
					while($coordenacao = mysql_fetch_array($exe_coordenacao)){
				?>
					<option <?php if($usuario["coordenacao"] == $coordenacao["coordenacao"]): ?>selected="selected"<?php endif; ?> value="<?php echo $coordenacao["coordenacao"]; ?>"><?php echo $coordenacao["coordenacao"]; ?>
					</option>
				<?php
				}
				?>
				</select>
			</div>

			<div id="cargo">
				<select name="cargo">
				<?php
					while($cargo = mysql_fetch_array($exe_cargo)){
				?>
					<option <?php if($usuario["cargo"] == $cargo["cargo"]): ?>selected="selected"<?php endif; ?> value="<?php echo $cargo["cargo"]; ?>"><?php echo $cargo["cargo"]; ?>
					</option>
				<?php
				}
				?>
				</select>
			</div>
		</td>
           <td>
           	<input type="submit" value="Pesquisar" />
		</td>
	</tr>
</table>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

as opções do seu select atende pelo nome de $_POST['pesquisa']

 

se colocar $_POST['nome'] ele vai pegar sempre o que é digitado no nome

 

já se usar o $_POST['pesquisa'] ele vai pegar o valor selecionado no select que pode ser: nome, cpf, coordenação e cargo.

 

e também achei um pouco estranho sua consulta

SELECT * FROM usuarios WHERE '%".$_POST['nome']."%'"

 

você esta dizendo selecionar tudo de usuario onde nome e só

você não diz se é um valor igual se é um LIKE e a que campo ele vai fazer essa comparação

Compartilhar este post


Link para o post
Compartilhar em outros sites

Neste teu código, isset($_POST['nome']) sempre vai retornar true, portanto, sempre vai cair neste if.

 

Troque por !empty($_POST['nome']).

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

as opções do seu select atende pelo nome de $_POST['pesquisa']

 

se colocar $_POST['nome'] ele vai pegar sempre o que é digitado no nome

 

já se usar o $_POST['pesquisa'] ele vai pegar o valor selecionado no select que pode ser: nome, cpf, coordenação e cargo.

 

e também achei um pouco estranho sua consulta

SELECT * FROM usuarios WHERE '%".$_POST['nome']."%'"

 

você esta dizendo selecionar tudo de usuario onde nome e só

você não diz se é um valor igual se é um LIKE e a que campo ele vai fazer essa comparação

 

Vinicius, arrumei, coloquei o LIKE, eu ja tinha arrumado isso antes... foi maus. Na verdade ta assim:

 

if (getenv("REQUEST_METHOD") == "POST") {

if(isset($_POST["nome"])){
	$res = mysql_query("SELECT * FROM usuarios WHERE nome LIKE '%".$_POST["nome"]."%'") or die(mysql_error());;

}
if(isset($_POST["cpf"])){
	$res = mysql_query("SELECT * FROM usuarios WHERE cpf LIKE '%".$_POST["cpf"]."%'") or die(mysql_error());;
}
else if(isset($_POST["coord"])){
	$res = mysql_query("SELECT `usuarios`.* FROM `usuarios` INNER JOIN `cargo` ON `usuarios`.`cargo` = `cargo`.`cargo` WHERE '%" .$_POST["coord"]."%' ORDER BY `cargo`.`id` ASC") or die(mysql_error());;
}
else if(isset($_POST["cargo"])){
	$res = mysql_query("SELECT * FROM usuarios WHERE cargo LIKE '%".$_POST["cargo"]."%' ORDER BY nome ASC") or die(mysql_error());;
}
}
else{
$res = mysql_query("select * from usuarios") or die(mysql_error());
}

 

Então eu devo colocar como? pois tem vários if, cada um pegando do lugar que eu quero. Se eu colocar pesquisa, terei que colocar em todos.. ai como diferencio?

 

Neste teu código, isset($_POST['nome']) sempre vai retornar true, portanto, sempre vai cair neste if.

 

Troque por !empty($_POST['nome']).

 

@braços e fique com Deus!

 

Eu tinha pensado nisso também, ai tentei colocar o !empty, mas não deu... quando faço com !empty ele não entra no if... Se eu por o !empty, tipo no primeiro if, que é do nome, e escolher nome no select, ele não vai para o if debaixo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu devo colocar como? pois tem vários if, cada um pegando do lugar que eu quero. Se eu colocar pesquisa, terei que colocar em todos.. ai como diferencio?

 

 

 

Eu tinha pensado nisso também, ai tentei colocar o !empty, mas não deu... quando faço com !empty ele não entra no if... Se eu por o !empty, tipo no primeiro if, que é do nome, e escolher nome no select, ele não vai para o if debaixo.

Primeiro siga a dica do nosso amigo que esta correta.

 

segundo isso acontece pelo motivo que eu te falei acima imagine assim você tem seu select e o nome dele é pesquisa

ai você tem seus outros campos que são nome, cpf e etc...

 

na sua página PHP não diz nada do campo pesquisa é com aquele SELECT não fizesse diferença.

 

comente esse seu código e faça

 

print_r($_POST);

 

que você ira entender o qeu estou falando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu devo colocar como? pois tem vários if, cada um pegando do lugar que eu quero. Se eu colocar pesquisa, terei que colocar em todos.. ai como diferencio?

 

 

 

Eu tinha pensado nisso também, ai tentei colocar o !empty, mas não deu... quando faço com !empty ele não entra no if... Se eu por o !empty, tipo no primeiro if, que é do nome, e escolher nome no select, ele não vai para o if debaixo.

Primeiro siga a dica do nosso amigo que esta correta.

 

segundo isso acontece pelo motivo que eu te falei acima imagine assim você tem seu select e o nome dele é pesquisa

ai você tem seus outros campos que são nome, cpf e etc...

 

na sua página PHP não diz nada do campo pesquisa é com aquele SELECT não fizesse diferença.

 

comente esse seu código e faça

 

print_r($_POST);

 

que você ira entender o qeu estou falando

 

 

Entendi! Acabei de fazer e vi o que me manda:

 

Array ( [pesquisa] => nome [nome] => [cpf] => 000.000.000-00 [coord] => CCONT [cargo] => Acessor do Secretario ) 

 

Mas ai é que tá, realmente não me importa o que vem na pesquisa, acabei de ver que tenho mais problemas... rs

eu não quero pegar o conteuro da pesquisa, eu quero pegar o conteudo do cpf mesmo, por exemplo, 000.000.000-00, só que os outros campos, o de coord e de cargo tem que estarem vazios também, assim como nome.

 

O cpf e o que esta preenchido ali né! só que no código ele vai direto para o if do nome. e se eu por o !empty não funciona também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai entra dica do nosso amigo @hufersil

 

if(!empty($_POST["nome"])){
               $res = mysql_query("SELECT * FROM usuarios WHERE nome LIKE '%".$_POST["nome"]."%'") or die(mysql_error());;

       }
       if(!empty($_POST["cpf"])){
               $res = mysql_query("SELECT * FROM usuarios WHERE cpf LIKE '%".$_POST["cpf"]."%'") or die(mysql_error());;
       }
       else if(!empty($_POST["coord"])){
               $res = mysql_query("SELECT `usuarios`.* FROM `usuarios` INNER JOIN `cargo` ON `usuarios`.`cargo` = `cargo`.`cargo` WHERE '%" .$_POST["coord"]."%' ORDER BY `cargo`.`id` ASC") or die(mysql_error());;
       }
       else if(!empty($_POST["cargo"])){
               $res = mysql_query("SELECT * FROM usuarios WHERE cargo LIKE '%".$_POST["cargo"]."%' ORDER BY nome ASC") or die(mysql_error());;
       }
}
else{

mais como você disse que ocorreu erro sugiro que veja se não preencheu mais nada no form e como os dados estão sendo enviados..

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai entra dica do nosso amigo @hufersil

 

if(!empty($_POST["nome"])){
               $res = mysql_query("SELECT * FROM usuarios WHERE nome LIKE '%".$_POST["nome"]."%'") or die(mysql_error());;

       }
       if(!empty($_POST["cpf"])){
               $res = mysql_query("SELECT * FROM usuarios WHERE cpf LIKE '%".$_POST["cpf"]."%'") or die(mysql_error());;
       }
       else if(!empty($_POST["coord"])){
               $res = mysql_query("SELECT `usuarios`.* FROM `usuarios` INNER JOIN `cargo` ON `usuarios`.`cargo` = `cargo`.`cargo` WHERE '%" .$_POST["coord"]."%' ORDER BY `cargo`.`id` ASC") or die(mysql_error());;
       }
       else if(!empty($_POST["cargo"])){
               $res = mysql_query("SELECT * FROM usuarios WHERE cargo LIKE '%".$_POST["cargo"]."%' ORDER BY nome ASC") or die(mysql_error());;
       }
}
else{

mais como você disse que ocorreu erro sugiro que veja se não preencheu mais nada no form e como os dados estão sendo enviados..

 

Vinicius, sua dica de dar um print me ajudou a fazer de outra forma!

 

Agora funcionou assim:

 

//Verifica se foi feito um POST, se não, vai para o else;
if (getenv("REQUEST_METHOD") == "POST") {

    //verifica se o post 'pesquisa' recebeu o select 'nome', se sim faz a pesquisa pelo nome;
    if($_POST['pesquisa'] = 'nome'){
    		$res = mysql_query("SELECT * FROM usuarios WHERE nome LIKE '%".$_POST["nome"]."%'") or die(mysql_error());;

    }

    //verifica se o post 'pesquisa' recebeu o select 'cpf', se sim faz a pesquisa pelo cpf;
    if($_POST['pesquisa'] = 'cpf'){
	$res = mysql_query("SELECT * FROM usuarios WHERE cpf LIKE '%".$_POST["cpf"]."%'") or die(mysql_error());;
    }

    //verifica se o post 'pesquisa' recebeu o select 'coord', se sim faz a pesquisa pelo coord (O codigo de pesquisa do SQL esta errado, ainda não descobri como fazer certo);
    if($_POST['pesquisa'] = 'coord'){
	$res = mysql_query("SELECT usuarios.* FROM usuarios INNER JOIN cargo ON usuarios.cargo = cargo.cargo WHERE '%" .$_POST["coord"]."%' ORDER BY cargo.id ASC") or die(mysql_error());;
    }

    //verifica se o post 'pesquisa' recebeu o select 'cargo', se sim faz a pesquisa pelo cargo;
    if($_POST['pesquisa'] = 'cargo'){
	$res = mysql_query("SELECT * FROM usuarios WHERE cargo LIKE '%".$_POST["cargo"]."%' ORDER BY nome ASC") or die(mysql_error());;
    }

}

else{
$res = mysql_query("select * from usuarios") or die(mysql_error());
}

 

Só estou tendo problema no codigo de pesquisa SQL da coord, pois esta errado...

 

Obrigado pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta faltando o campo que você vai comparar esta WHERE e o valor apenas..

corrigindo isso deve estar tudo correto.

 

Exatamente isso! Agora ficou perfeito. Corrigi também o '=' para '==' ai tudo ficou sussa! Estou postando como ficou depois dos ajustes.

 

Muito obrigado amigos, vocês me ajudaram demais. Estamos ai!

 

//Verifica se foi feito um POST, se não, vai para o else;
if (getenv("REQUEST_METHOD") == "POST") {

   //verifica se o post 'pesquisa' recebeu o select 'nome', se sim faz a pesquisa pelo nome; 
   if($_POST["pesquisa"] == 'nome'){
$res = mysql_query("SELECT * FROM usuarios WHERE nome LIKE '%".$_POST["nome"]."%'") or die(mysql_error());;
   }

   //verifica se o post 'pesquisa' recebeu o select 'cpf', se sim faz a pesquisa pelo cpf;
   if($_POST["pesquisa"] == 'cpf'){
$res = mysql_query("SELECT * FROM usuarios WHERE cpf LIKE '%".$_POST["cpf"]."%'") or die(mysql_error());;
   }

    //verifica se o post 'pesquisa' recebeu o select 'coord', se sim faz a pesquisa pela coord e ordena pelo id do campo cargo da tabela cargo;
    if($_POST["pesquisa"] == 'coord'){
$res = mysql_query("SELECT usuarios.* FROM usuarios INNER JOIN cargo ON usuarios.cargo = cargo.cargo WHERE coordenacao LIKE '%" .$_POST["coord"]."%' ORDER BY cargo.id ASC") or die(mysql_error());;
    }

    //verifica se o post 'pesquisa' recebeu o select 'cargo', se sim faz a pesquisa pelo cargo;
    if($_POST["pesquisa"] == 'cargo'){
$res = mysql_query("SELECT * FROM usuarios WHERE cargo LIKE '%".$_POST["cargo"]."%' ORDER BY nome ASC") or die(mysql_error());;
     }
}

//se não foi feito um post o sistema me tras todos os usuários.
else{
    $res = mysql_query("select * from usuarios") or die(mysql_error());
}

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.