Ir para conteúdo

Arquivado

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

Rodrigo5468

Seleção

Recommended Posts

Bom, eu fiz um select, com seis opções. E eu queria que quando seleciona-se algo no select ir aparecendo a tabela com as informações.

Eu fiz assim:

if($resultado->show == 0):

Aí já mostra os pedidos inválidos. 0 = invalido, 1 = enviado, e assim em diante.

Pensei em fazer ifelse, más como posso informar o PHP quando selecionar a opção no select e enviar para mostrar os itens na tabela?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta colocar uma condição dentro dos eu while que traz os dados. Assim:

while(...)
{

print ($resultado->show == 0) ? 'Inválido' : 'Enviado';

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poderia me dar um exemplo? Estou fazendo assim, olhe.

<?php
	foreach($itens->findAll() as $keys => $resultado):
	if($resultado->show == 0):
?>

<!--HTML + PHP MOSTRAR ITENS-->

<?php
	endforeach;
?>
<select name="select">
	<option value="1">Inválidos</option>
	<option value="2">Enviados</option>
</select>

Quando selecionar inválidos mostra o resultado 1 enviados 2 e assim em diante...

 

 

Obrigado desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa o double post más é que preciso da ajuda de vocês.

Fiz o seguinte, más não estou entendo como eu faço para selecionar algo no select e mostrar. Olha como fiz:

<select name="select">
	<option value="1">Inválidos</option>
	<option value="2">Enviados</option>
</select>

<?php
	foreach($itens->findAll() as $keys => $resultado):
		while($x <= 2):
			if($resultado->show == $x):
		$x++;
?>

<!--HTML + PHP MOSTRAR ITENS-->

<?php
			endif;
		endwhile;
	endforeach;
?>

Quero fazer o seguinte:

Inválidos = 1

Enviados = 2

Quando selecionar algo nesse select o: if($resultado->show == NÚMERO):

O número muda para o corresponde ao = , como eu faço isso? Está certo assim? O que falta?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo... comecei a pesquisar como filtrar o SELECT e achei alguns exemplos, tentei alguns mais é confuso e a maioria está em mysq_query.

Beraldo tem como você me ajudar? Tipo, me dar um exemplo como posso fazer essas filtragens. Não sei mais olha, se é mais ou menos assim para selecionar o select no MySQL

$sql = "SELECT * FROM pedidos WHERE status = :status";

Também tenho uma dúvida, tipo:

if($VAR):
	//CODIGO
endif;

Tem como fazer um elseif assim com dois pontos : em vez de chaves { } ?

 

 

Obrigado desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo!

Beraldo, estou tendo dúvidas e dificuldades em fazer tal ato. Como vou saber se o usuário clicou em uma opção na seleção? "select option"

E apos clicar em uma opção da seleção mostrar tal resultado do status em uma div?

invalido = 0

enviado = 1

Ver se estou indo no caminho certo, por favor.

$sql = "SELECT * FROM pedidos WHERE status = :status";
$stmt = $PDO->prepare($sql);
$stmt->bindParam(':status', $status);
$result = $stmt->execute();

Estou totalmente perdido, o que tenho que fazer agora?

 

 

E obrigado por tudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você quer que o formulário seja enviado assim que clicar em uma opção, você precisa enviar o form no evento onchange da tag select. Isso é feito com javascript, bem simples.

 

Sendo um form, você terá a opção selecionada usando $_POST['nome_do_campo']. Aí é só usar esse valor do WHERE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, eu não quero que seja enviado não.

Exemplo:

<select name="select">
	<option value="1">Inválidos</option>
	<option value="2">Enviados</option>
</select>

Quando selecionar o inválido, pegar o value dele e mandar para o x, e assim com o enviados.

if($resultado->show == x):

Mas você falou para filtrar o SELECT e usar o WHERE, só que não faço nem ideias de como fazer isso. Eu estou pesquisando na internet porem não acho resultados.

 

Este exemplo foi que eu li a sua publicação, pensei que fazia mais ou menos assim. http://forum.imasters.com.br/topic/541722-selecao/#entry2164444

 

 

Minha dúvida é, como que seleciona uma opção e o número x muda de acordo selecionado na opção.

 

 

E obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você quer fazer isso tudo sem recarregar a página, vai precisar usar Ajax.

 

Mas recomendo que aprenda, primeiro, a fazer com envio de formulário. Isso vai te ensinar a lógica de como tudo isso funciona. Só depois retire o envio e faça tudo via Ajax

 

Recomendo começar estudando isto:

http://forum.imasters.com.br/topic/192408-sistema-de-cadastro-em-phpmysql/

 

Vai te dar a noção de envio de formulários e como fazer o SELECT filtrando as opções

Apenas lembre de trocar mysql_* por PDO, como você já está fazendo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, não entendi muita coisa, mas acho que estou indo certo, olhe.

<select name="select">
	<?php
		if($result->Status == 1){
			echo '<option value="1">Inválidos</option>';
		}elseif($result->Status == 2){
			echo '<option value="2">Enviados</option>';
		}
	?>
</select>

<?php
	foreach($itens->findAll() as $keys => $resultado):
	$sql = "SELECT * FROM pedidos WHERE status = :status";
	while($row = $result->fetch_assoc()):
?>
	<!--HTML + PHP MOSTRAR ITENS-->
<?php
	endwhile;
	endforeach;
?>

Status é setado após o administrador avaliar o pedido, recusar seta o status para 1 que é invalido e aceitar seta o status para 2 que é enviado.

 

 

Mais assim não funcionou, o que tem de errado com isso? Obrigado por sua atenção e ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo muito obrigado! Conseguir fazer, obrigado por toda atenção de todos... vocês são de mais.

<?php
	foreach($itens->findAll() as $keys => $resultado):
		if(isset($_POST['veryuser']) && isset($_POST['numstatus'])):
			$newstatus = $_POST['numstatus'];
				
				if($newstatus == 1){
					$x = 1;
				}elseif($newstatus == 2){
					$x = 2;
				}
				
			if($resultado->show == $x):
?>

<!--HTML + PHP MOSTRAR ITENS-->

<?php
			endif;
		endif;
	endforeach;
?>

Porem eu quero que o valor 0 (ZERO) seja padrão, porque ai eu fiz com o method POST então tem que enviar para pegar o valor e enviar para o X. Como que eu posso fazer pro ZERO ficar como padrão?

 

 

Obrigado a toda ajuda de vocês!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou explicar melhor.

Antes desta atualização no código era assim:

if($resultado->show == 0):

Então o zero mostrava apenas os em estudos para a equipe avaliar se envia ou deixa como invalido.

Como você me disse pra fazer usando o method post eu fiz, só que para ver a tabela se ta em estudo enviados ou inválidos tem que clicar em "OK" pra o x receber o valor e mostrar os resultados na tabela. Então eu queria que o x recebesse ZERO por padrão para não enfiar o formulário, e quando o administrador quiser ver os enviados e inválidos ele envia o formulário para o valor do x alterar. Deu pra entender o que quero fazer? Estou lendo alguns artigos para deixar este efeito com ajax, mas isso é futuramente quero ir com calma, pois sou leigo em PHP ainda.

 

 

Obrigado.

 


 

Bom eu conseguir resolver o problema, mas se alguém entendeu por favor me responda. Por que o seu jeito pode ser melhor que o meu. Eu fiz com elseif{} duplicando o valor do HTML.

 

Beraldo, como que eu posso retirar o method post e fazer por ajax? Poderia me ajudar com isso? Me da uma explicação.

 

 

E obrigado desde já.

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.