Ir ao conteúdo

Posts recomendados

Postado

Bom Dia, Tarde, Noite

Eu estou fazendo um sistema de pesquisa que o usuario pesquisa algo e aparece ate 4 resultados na tela, cada um tem o seu id esse id eu coloco em uma SESSION diferente de cada:

$x = 0;
while ($row = $result->fetch_assoc()) {	
	$idcon[] = $row["id"];#busco no servidor as id de cada produto
	$_SESSION["id".$x] = $idcon[$x];#armazeno na SESSION
	echo("<div class='imgspa'><font color='#00a3cc' face='Oswald'>".$row["produto"]);#imprimo o nome do produto
	echo("<a href='http://localhost/lojacalito.com/local/htmls/produtos.php'>");#essa é a pagina dos prdutos onde o SESSION vai ser usado
	echo(" Link: ".$_SESSION["id".$x]."</a></font><br>");#imprimo o id do produto com o link
	echo("<img src=".$row["imghome"]."class='resultpesquisa'/><br>");#imprimo a imagem do produto
	echo("<font color='#00a3cc' face='Oswald'>R$ ".$row["valor"].",00</font></div>");#imrimo o valor
	$x = $x+1;#somo o x + 1 pra mudar o item selecionado da array dos ids e o nome do SESSION 
}

e burrico achei que isso ia me ajudar so que agora na minha outra pagina avera todos os SESSION que eu criei aqui, e eu não vou saber qual o usuário vai clicar para poder definir o produto no site do produto

Ex em imagens:

resultado da pesquisa

image.png.1582dc2958abb0a5e99ccc20f8787630.png

ai se eu clicar no link 2 ali ele vai  me levar para a pagina do produto

só que para simplificar minha vida eu criei só uma pagina que busca no banco de dados o valor, nome, imagem essas coisa

image.thumb.png.549a520cf7a80c93a68c380345197310.png 

essa é a pagina so que aqui eu mesmo atribui o valor do id no código só pra teste

queria saber como eu vou verificar qual é o session correto

 

  • Moderador
Postado

@Matheus Evandro Rech Na verdade,  não acho que seja a melhor ideia usar sessions para esse propósito.

 

A session serve para quando você quer guardar algum dado que não pode ser perdido, mesmo se fechar a página. 

Exemplo de uso:   Login(armazenando os dados do usuário para um bom dia, ou identificação de ações por ID),  carrinho de compras

 

No seu caso, eu faria a busca dos produtos usando o coringa do SQL. até porque o usuário não vai saber qual o id do produto que está no banco  então tem que ser por palavras digitadas.

 

30 minutos atrás, Matheus Evandro Rech disse:

sistema de pesquisa que o usuario pesquisa algo e aparece ate 4 resultados na tela

Então...  use o "LIKE" com  "% que vai pesquisar % "   pois assim o coringa determina os  prefixos e sufixos.   Para limitar use o LIMIT  4  que aí independentemente todo resultado será apenas 4. 

 

A não ser que a ideia seja quebrar o layout de  4 em 4, aí no caso tem que fazer um laço de for. 

 

  • Curtir 1
Postado

@DiFA busca já esta 100% só mesmo saber qual o produto que o usuário clicou pra definir as variáveis na pagina do produto

Tipo eu tenho uma pagina la guardada e no site a varias propagandas dos produtos e vamos supor que o usuário clique num telefone ele seria mandado para outra pagina que é a que esta guardada, só nessa pagina eu tenho que saber qual foi o produto clicado entende ?

adicionado 10 minutos depois

@DiFesse é meu código de busca
 

<?php
if($SendPesqProd){
	$query = "SELECT * FROM produtos WHERE produto LIKE '%$id%' ORDER by ID DESC LIMIT 4";
	if (mysqli_num_rows($resultado_pesquisa) > 0) {
		if ($result = $conn->query($query)) {
			$x = 0;
			while ($row = $result->fetch_assoc()) {	
				$idcon[] = $row["id"];
				$_SESSION["id".$x] = $idcon[$x];
				echo("<div class='imgspa'><font color='#00a3cc' face='Oswald'>".$row["produto"]);
				echo("<a href='http://localhost/lojacalito.com/local/htmls/produtos.php'>");
				echo(" Link: ".$_SESSION["id".$x]."</a></font><br>");
				echo("<img src=".$row["imghome"]."class='resultpesquisa'/><br>");
				echo("<font color='#00a3cc' face='Oswald'>R$ ".$row["valor"].",00</font></div>");
				$x = $x+1;
			}
						
		}
	}else{
		echo("<font color='#00a3cc' face='Oswald'>Não encontramos resultados para a sua pesquisa</font>");
	}
}	
?>

 

  • Moderador
  • Solução
Postado

@Matheus Evandro Rech Mas então,  não precisa de session para isso!!!

 

O lance é que você está fazendo uma busca por ID interno, o usuário comum não tem acesso ao banco de dados, então ele não sabe que o produto id 1  é X ou produto id 2 é Y.

 

Como você disse anteriormente, tem uma página que mostra os produtos com seus devidos links, outra para o produto em si. 

No caso, para saber qual produto foi clicado, basta passar o ID do produto por parâmetro no link.

 

A sua query pode ser assim:

$query = "SELECT * FROM produtos WHERE produto LIKE '%$produto%' ORDER by ID DESC LIMIT 4";

onde o $produto seria uma variável que recebe o conteúdo de um campo input de pesquisa.

 

Na linha do link que está dentro do while você deve passar o ID do produto por parâmetro assim:

echo"<a href='produtos.php?produto=$id'>";

A palavra produto depois de  php?     é a palavra chave, onde na página produtos.php  irá receber com  

 

$id = $_GET["produto"]

Então, aí sim, fazer a busca dos dados do produto a partir do ID que veio do link passado por parâmetro.

 

Sugiro muito que você não utilize a session para isso... porque senão, depois você vai ter que destruí-las por logout, e como você já deve imaginar(ou não?!) que a maioria dos usuários não usam o logout, simplesmente fecham o site.. então se não fazem o logout, as variáveis de sessão não serão destruídas...

 

O melhor jeito de fazer as pesquisas é por parâmetro como indiquei a cima... salvo, que você pode usar a session, somente se você estiver planejando fazer ofertas relacionadas, por exemplo o que o mercado livre faz em qualquer anuncio em sites.

 

Por exemplo, se você pesquisa por SSD no mercado livre,  em qualquer páginas que contenha anuncio do mercado livre, irá mostras somente ofertas de SSD. Isso acontece porque há um sistema de recomendação por produtos relacionados. Aí sim a session é importante, para captar os gostos do usuário e mostrar aquilo que interessa a ele.

 

Creio que na situação atual do seu código não seja isso.. por isso eu sugeri que não use a session!

 

  • Curtir 1
Postado
43 minutos atrás, DiF disse:

onde o $produto seria uma variável que recebe o conteúdo de um campo input de pesquisa.

a minha variavel que recebe o input se chama $id tem algum problema @DiF

adicionado 1 minuto depois

@DiF sobre o session eu entendi errado o uso dele achei que fosse uma variável que eu posso usar no site inteiro

  • Moderador
Postado

@Matheus Evandro Rech Não digo problema, mas não é interessante e nem boa prática usar a variável  " $id " para coisas escritas, justamente esta variável remete ao valor de um campo auto incrementado.

 

Recomendo que altere o $id, por qualquer outra coisa e siga a orientação que dei acima, para passar o valor ID por parâmetro direto no link.

 

Pois quando o usuário clicar no link irá redirecionar  para a página produtos.php que irá exibir apenas os dados daquele produto clicado.

 

 

  • Curtir 1
Postado

então ficaria assim:

<?php
if($SendPesqProd){
	$query = "SELECT * FROM produtos WHERE produto LIKE '%$id%' ORDER by ID DESC LIMIT 4";
	if (mysqli_num_rows($resultado_pesquisa) > 0) {
		if ($result = $conn->query($query)) {
			$x = 1;
			while ($row = $result->fetch_assoc()) {	
				$idcon[] = $row["id"];
				echo("<div class='imgspa'><font color='#00a3cc' face='Oswald'>".$row["produto"]);
				echo("<a href='http://localhost/lojacalito.com/local/htmls/produtos.php?id=".$idcon[$x]."'></font><br>");
				echo("<img src=".$row["imghome"]."class='resultpesquisa'/></a><br>");
				echo("<font color='#00a3cc' face='Oswald'>R$ ".$row["valor"].",00</font></div>");
				$x = $x+1;
			}
						
		}
	}else{
		echo("<font color='#00a3cc' face='Oswald'>Não encontramos resultados para a sua pesquisa</font>");
	}
}	
?>

 

adicionado 1 minuto depois

@DiF vou mudar

  • Moderador
Postado

@Matheus Evandro Rech

Antes, me explique uma coisa.

 

Porque você criou  um vetor de ID?   

nesta linha:

 

$idcon[] = $row["id"];

No caso, você não está passando múltiplos produtos. mas sim apenas um.

 

Eu faria de maneira muito mais simplificada:

 

while ($row = $result->fetch_object()) {	
	$id = $row->id;
	echo"<div class='imgspa'>
                 <font color='#00a3cc' face='Oswald'>$row->produto;
	         <a href='http://localhost/lojacalito.com/local/htmls/produtos.php?id=$id></font><br>;
	         <img src='$row->imghome' class='resultpesquisa'/></a><br>;
	         <font color='#00a3cc' face='Oswald'>R$ $row->valor,00</font>
              </div>";
	
}

Note que eu dei um exemplo, por isso não copie.  Uma observação.  Se você está usando orientada a objetos, não misture com procedural!

 

  • Curtir 1
Postado

@DiF assim:

<?php
if($SendPesqProd){
	$query = "SELECT * FROM produtos WHERE produto LIKE '%$p_produto%' ORDER by ID DESC LIMIT 4";
	if (mysqli_num_rows($resultado_pesquisa) > 0) {
		if ($result = $conn->query($query)) {
			$x = 1;
			while ($row = $result->fetch_assoc()) {	
				$idcon[] = $row["id"];
				echo("<div class='imgspa'><font color='#00a3cc' face='Oswald'>".$row["produto"]);
				echo("<a href='http://localhost/lojacalito.com/local/htmls/produtos.php?produto=".$idcon[$x]."'></font><br>");
				echo("<img src=".$row["imghome"]."class='resultpesquisa'/></a><br>");
				echo("<font color='#00a3cc' face='Oswald'>R$ ".$row["valor"].",00</font></div>");
				$x = $x+1;
			}
						
		}
	}else{
		echo("<font color='#00a3cc' face='Oswald'>Não encontramos resultados para a sua pesquisa</font>");
	}
}	
?>

 

adicionado 1 minuto depois

@DiF são 4 produtos cada um tem um nome diferente por isso a array porque se não como vou armazenar cada um em uma variável diferente 

adicionado 3 minutos depois

se o usuário digitar tv no meu banco de dados tem 20 tvs ele vai mostrar somente 4  

  • Moderador
Postado

@Matheus Evandro Rech Então,  você precisa lembrar de que o php é dinâmico. Apesar da pesquisa retornar 4 produtos, o usuário não vai abrir 4. Será uma por uma.

 

Por isso eu reforço que não precisa de vetor.

 

A página produtos.php  é responsável por mostrar os dados apenas de um produto por vez. No resultado da pesquisa vai aparecer mais de um, mas no momento que clicar no link para abrir, será apenas um.

 

Por isso que eu disse que você pode simplificar tudo, e também, por boas práticas, remover os atributos inline css e elementos antigos. você pode definir tudo isso no próprio CSS.

 

PS: Acho que talvez só irei entender o que você está tentando fazer se ver imagens ou a própria página em si....

 

Pois em tese, que você tem que fazer é:

o formulário de busca envia os dados para um arquivo php,   este arquivo retorna todos os produtos que sejam similares( a partir do nome digitado).   Os links que serão gerados,  vai remeter a uma outra página destinada para mostrar os dados daquele produto que o usuário quer ver.

 

Então pela boa prática, o nome do arquivo php sempre precisa ser no singular. exemplo produto.php.

Este arquivo php, vai receber por GET o valor ID, para que possa ser pesquisada no banco de dados e retornar os dados somente daquele produto.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!