Ir para conteúdo

POWERED BY:

Arquivado

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

Will Fernando

[Resolvido] [erro] direcionando por switch case

Recommended Posts

ola galera ... assim ... o objetivo é direcionar para uma pagina que mostre o resultado da pesquisa... estas variam do tipo do que foi pesquisado... mas parece que ele nao esta lendo o bloco php pq ele manda so os parametros e nao a pagina... alquem teria uma opiniao sobre oq pode estar havendo ?

 

valww

 

<form action="<?php
$tipo = $_POST['tipo'];
switch($tipo):
	case 'motos':
		echo'result_pesq_motos.php';
	break;
	case 'motosusadas':
		echo 'result_pesq_motosusadas.php';
	break;
	case 'acessorios':
		echo 'result_pesq_acessorios.php';
	break;
endswitch;
?>" method="get" name="form1">

  Tipo:
  <select name="tipo" id="tipo">
	<option value="motos">Motos Novas</option>
	<option value="motosusadas">Motos Usadas</option>
	<option value="acessorios">Acessorios</option>
  </select> 
  Descrição:  
 <input name="descricao" type="text" id="descricao">
  <input type="submit" name="Submit" value="Procurar">
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesta parte do código, você pega uma variável $_POST['tipo'], que é a que determina para onde ele vai enviar o formulário. De onde ela vem?

<form action="<?php
$tipo = $_POST['tipo'];//esta variável - vem de onde? 
switch($tipo):
	case 'motos':
		echo'result_pesq_motos.php';
	break;
	case 'motosusadas':
		echo 'result_pesq_motosusadas.php';
	break;
	case 'acessorios':
		echo 'result_pesq_acessorios.php';
	break;
endswitch;

Se esta variável for o resultado da seleção do restante do código, veja que você envia o formulário via GET. Assim, a forma correta seria pegar a variável como $_GET['tipo'].

Só que acho que não vai funcionar, porque ele lê o switch antes de enviar o formulário, então a variável TIPO vai estar vazia.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta entendi agora ... n tinha notado akele post la em cima... ^^ .. entao eu fiz as alterações que foram sugeridas...

 

fico assim entao..

 

<form action="<?php
$tipo = $_POST['tipo'];
$descricao = $_POST['descricao'];
switch($tipo):
	case 'motos':
		echo 'result_pesq_motos.php?descricao='.$descricao;
	break;
	case 'motosusadas':
		echo 'result_pesq_motosusadas.php?descricao='.$descricao;
	break;
	case 'acessorios':
		echo 'result_pesq_acessorios.php?descricao='.$descricao;
	break;
endswitch;
?>" method="post" name="form1">

  Tipo:
  <select name="tipo" id="tipo">
	<option value="motos">Motos Novas</option>
	<option value="motosusadas">Motos Usadas</option>
	<option value="acessorios">Acessorios</option>
  </select>
  Descrição:  
<input name="descricao" type="text" id="descricao">
  <input type="submit" name="Submit" value="Procurar">
</form>

a principio ele envia... so que assim... aprimera vez quando tu pesquisa nao acontece nada... ae a segunda vez q tu pesquisa ele tras os resultados da primera vez... a terceira tambem e assim vai indo ... alquem saberia pq ?

 

valww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só que acho que não vai funcionar, porque ele lê o switch antes de enviar o formulário, então a variável TIPO vai estar vazia.

Como eu disse antes, ele lê de cima pra baixo o código. Quando ele lê a primeira vez, a variável $_POST['tipo'] não está setada, por isso ele não sabe para onde enviar.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

malz manjo nada de javascript .. bom seria mesmo que desse pra faze em php....

O.o alquem tem alguma ideia entao de como poderia ser feito em php ? *temo apanhando feio =] 10 a 0 pro script .. hasahsh

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma emboleira, com apenas uma página você faz todo esse recurso, não precisa esse tanta de página, faça uma query para a busca na base de dados, de acordo com a categoria escolhida, exemplo:

 

<?php
$tipo = $_POST['tipo'];

switch($tipo):
	case 'motos':
		$query = mysql_query("")or die(mysql_error());
	break;
	case 'motosusadas':
		$query = mysql_query("")or die(mysql_error());
	break;
	case 'acessorios':
		$query = mysql_query("")or die(mysql_error());
	break;
  
 if($query){

   while($dados = mysql_fetch_array($query)){
		  print $dados[0];
	}
	
}
?>
<form action="" method="POST" name="form1">

  Tipo:
  <select name="tipo" id="tipo">
	<option value="motos">Motos Novas</option>
	<option value="motosusadas">Motos Usadas</option>
	<option value="acessorios">Acessorios</option>
  </select>
  Descrição:  
<input name="descricao" type="text" id="descricao">
  <input type="submit" name="Submit" value="Procurar">
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra funcionar bem rápido.

 

Você pega as 3 páginas (result_pesq_motos.php, result_pesq_motosusadas.php, result_pesq_acessorios.php) e transforma em 1, por exemplo result_pesquisa.php. Neste arquivo, você faz assim:

<?php
switch ($_POST['tipo']){
   case 'motos':
	 //aqui você coloca o código da página result_pesq_motos.php
	break;

	case 'motosusadas':
	// aqui você coloca o código da página result_pesq_motosusadas.php
	break;
	case 'acessorios':
	 // aqui você coloca o código da página result_pesq_acessorios.php
	 break;
}
?>

Lá no Form, você coloca o action igual a página que você criar.

 

Acho que deu pra entender.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma emboleira, com apenas uma página você faz todo esse recurso, não precisa esse tanta de página, faça uma query para a busca na base de dados, de acordo com a categoria escolhida, exemplo:

 

<?php
$tipo = $_POST['tipo'];

switch($tipo):
	case 'motos':
		$query = mysql_query("")or die(mysql_error());
	break;
	case 'motosusadas':
		$query = mysql_query("")or die(mysql_error());
	break;
	case 'acessorios':
		$query = mysql_query("")or die(mysql_error());
	break;
  
 if($query){

   while($dados = mysql_fetch_array($query)){
		  print $dados[0];
	}
	
}
?>
<form action="" method="POST" name="form1">

  Tipo:
  <select name="tipo" id="tipo">
	<option value="motos">Motos Novas</option>
	<option value="motosusadas">Motos Usadas</option>
	<option value="acessorios">Acessorios</option>
  </select>
  Descrição:  
<input name="descricao" type="text" id="descricao">
  <input type="submit" name="Submit" value="Procurar">
</form>

man.. vo tenta aqui mass.. acho q vai da a mesma coisa... se a explicacao do matias sobre o pq esta executando errado tiver correta...

Compartilhar este post


Link para o post
Compartilhar em outros sites

man.. vo tenta aqui mass.. acho q vai da a mesma coisa... se a explicacao do matias sobre o pq esta executando errado tiver correta...

Negativo, do modo que passei não dará erro algum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

man.. vo tenta aqui mass.. acho q vai da a mesma coisa... se a explicacao do matias sobre o pq esta executando errado tiver correta...

Negativo, do modo que passei não dará erro algum.

 

ta certo man .. nao tinha visto que o switch tava fora do action ... acho q agora vai funfa...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só que da forma que o Alaerte colocou fica tudo em uma página só (eu particularmente gosto de separar), já que ele vai enviar os dados para a própria página.

 

Nada contra, apenas opinião minha, até porque quem sou eu para criticar alguém.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

^^ eh ... esse eh o unico detalhe... eu teria q enviar nessesariamente para outra pagina pq nao vai te espaço pra mostra os resultados em baixo... mas tamo tentando faze ... toda opiniao e critica eh bem vinda..valw matias , alaerte e compania ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe pelo engano, pensei que não estivesse resolvido.

 

@Edit

Já que ele envia os dados para a propria página utilize um IF com isset para verificar se tem o valor a sua variavel $tipo, se tiver continua o codigo, se não tiver da um else com uma mensagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade ainda nao ta ^^ ... so q acabamos fugindo um poco do assunto do topico xP.. mas agora retomamos... como entao fazer para redirecionar a pesquisa para uma pagina de resposta mandando os parametros ... detalhe... eu tive que usa o action do form pra isso para nao ocorrer no IE (internet explorer) de quando eu apertar backspace(ou botao voltar do brownze) pra retornar a pagina anterior ele nao refaça a pesquisa...

 

relembrando: eu tentei usa um switch no action do form que pegava o valor de um select como parametro de selecao e entao escrevia a pagina que devia mandar ...

problema: a primera vez q pesquisa ele nao retorna nada e as vezes seguintes ele retorna o valor pesquisado na primera vez..

 

valww

Compartilhar este post


Link para o post
Compartilhar em outros sites

resolvido... solucao incrivel...

 

<form action="selecionando.php" method="post" name="form1">

selecionando.php

<?php 
$tipo = $_POST['tipo'];
$descricao = $_POST['descricao'];
switch($tipo):
	case 'motos':
		header("Location: result_pesq_motos.php?descricao=$descricao"); 
	break;
	case 'motosusadas':
		header("Location: result_pesq_motosusadas.php?descricao=$descricao");
	break;
	case 'acessorios':
		header("Location: result_pesq_acessorios.php?descricao=$descricao");
	break;
endswitch;
?>

^^ parece sacanage neh galera =] ... mas resolveu tudo ... creditos ao sipmann tambem menbro daki *ASP.NET .. valw patoo (apelido dele.. so colega dele des da 6º serie =] )

 

valww pela ajuda ae todos q postaram ..

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.