Jump to content
JFernandesVR

Pesquisa em PHP/MYSQL

Recommended Posts

JFernandesVR

Boas pessoal.

tou com um problema ao criar uma pesquisa de produtos.

esta pesquisa é feita por referencia de produto, descrição do produto e por marca.

o que me acontece é que, a pesquisa nao pára e está sempre a adicionar o mesmo produto.

aqui vai o código

espero que me possam ajudar, apesar de o código ser um pouco grande

obs: há uma parte do codigo que se refere ao preço, pois há 3 tipos de preço, PVP, EMPresa e revenda

function pesquisaartigos($texto)

  { $tipo = "";
  $SID = SID;
$sql = "SELECT * FROM artigos WHERE Referencia LIKE '%" . $texto . "%'";
			$rs=$this->bd->executarSQL($sql);
$n=0;
$id=1;

echo ("<tr><td colspan=\"4\"><div align=\"center\" class=\"style2\">Resultados da pesquisa por: " . $texto . " na referencia do artigo.</div></td></tr>");

			while(mysql_fetch_row($rs)) {
 $num = $n +1;
 $id = mysql_result($rs, $n, "Referencia");
 $marca = mysql_result($rs, $n, "Marca");
 if (mysql_result($rs, $n, "Imagem") == ""){


 echo ("<tr><td height=\"40\" width=\"80\" ><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b><img src=\"images/semimagempq.jpg\" width=\"80\" height=\"60\" border=0/></a>");
 echo "<br></td>";

  }
  else {
				echo ("<tr><td height=\"40\" width=\"80\"> <b><a href=Artigo.php?". $SID . "&id=" . $id . "></b><img src=\"images/" .mysql_result($rs, $n, "Imagem") . "\" width=\"80\" height=\"60\" border=0/></a>");
 echo "<br></td>";
}
				echo ("<td height=\"40\" width=\"10%\" valign=\"middle\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b>".mysql_result($rs, $n, "Referencia")."</a></span></div>");
 echo "<br></td>";
				echo ("<td height=\"40\" width=\"50%\" valign=\"middle\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b>".mysql_result($rs, $n, "DescricaoPT")."</a></span></div>");
 echo "<br></td>";

 if(isset($_SESSION['login_status'])){

  $tipo = ($_SESSION['tipo']);
 if ($tipo == 'Empresa'){

 echo ("<td height=\"40\" width=\"15%\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b> € ".mysql_result($rs, $n, "PrecoEMP")."</a></span></div>");
 echo "<br></td>";
 }else if ($tipo == 'Revenda'){
  echo ("<td height=\"40\" width=\"15%\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b> € ".mysql_result($rs, $n, "PrecoREV")."</a></span></div>");
 echo "<br></td>";
} else{
 echo ("<td height=\"40\" width=\"15%\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b> € ".mysql_result($rs, $n, "PrecoPVP")."</a></span></div>");
 echo "<br></td>";
 } }else {
 echo ("<td height=\"40\" width=\"15%\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b> € ".mysql_result($rs, $n, "PrecoPVP")."</a></span></div>");
 echo "<br></td>";
  }
if (mysql_result($rs, $n, "Marca") == ""){
echo ("<td height=\"40\" ><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b><img src=\"images/semimagempq.jpg\" width=\"80\" height=\"60\" border=0/></a>");
 echo "<br></td>";
 }else{
				echo ("<td height=\"40\" width=\"60\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><b><a href=marca.php?". $SID . "&id=" . $marca . "></b><img src=\"images/marcas/" . mysql_result($rs, $n, "Marca"). ".jpg\" width=\"80\" height=\"60\" border=0/></a></span></div>");
 echo "<br></td></tr>";

$n++;
}}

 $sql2 = "SELECT * FROM artigos WHERE DescricaoPT LIKE '%" . $texto . "%'";
			$rs2=$this->bd->executarSQL($sql2);
$n2=0;
$id2=1;
echo ("<tr><td colspan=\"4\"><div align=\"center\" class=\"style2\">Resultados da pesquisa por: " . $texto . " no nome do artigo.</div></td></tr>");	  
	while(mysql_fetch_row($rs2)) {


 $num2 = $n2 +1;
 $id2 = mysql_result($rs2, $n2, "Referencia");
 $marca2 = mysql_result($rs2, $n2, "Marca");

  if (mysql_result($rs2, $n2, "Imagem") == ""){

  echo ("<tr><td height=\"40\" width=\"80\" ><b><a href=Artigo.php?". $SID . "&id=" . $id2 . "></b><img src=\"images/semimagempq.jpg\" width=\"80\" height=\"60\" border=0/></a>");
 echo "<br></td>";

  }else {
				echo ("<tr><td height=\"40\" width=\"80\"> <b><a href=Artigo.php?". $SID . "&id=" . $id2 . "></b><img src=\"images/" .mysql_result($rs2, $n2, "Imagem") . "\" width=\"80\" height=\"60\" border=0/></a>");
 echo "<br></td>";
}
				echo ("<td height=\"40\" width=\"10%\" valign=\"middle\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id2. "></b>".mysql_result($rs2, $n2, "Referencia")."</a></span></div>");
 echo "<br></td>";
				echo ("<td height=\"40\" width=\"50%\" valign=\"middle\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id2. "></b>".mysql_result($rs2, $n2, "DescricaoPT")."</a></span></div>");
 echo "<br></td>";

 if(isset($_SESSION['login_status']))
 {
  $tipo = ($_SESSION['tipo']);
 if ($tipo == 'Empresa'){

 echo ("<td height=\"40\" width=\"15%\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b> € ".mysql_result($rs2, $n2, "PrecoEMP")."</a></span></div>");
 echo "<br></td>";
 }else if ($tipo == 'Revenda'){
  echo ("<td height=\"40\" width=\"15%\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b> € ".mysql_result($rs2, $n2, "PrecoREV")."</a></span></div>");
 echo "<br></td>";
} else{
 echo ("<td height=\"40\" width=\"15%\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b> € ".mysql_result($rs2, $n2, "PrecoPVP")."</a></span></div>");
 echo "<br></td>";
 } }else {
 echo ("<td height=\"40\" width=\"15%\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b> € ".mysql_result($rs2, $n2, "PrecoPVP")."</a></span></div>");
 echo "<br></td>";
  }
if (mysql_result($rs2, $n2, "Marca") == ""){
echo ("<td height=\"40\" ><b><a href=Artigo.php?". $SID . "&id=" . $id2 . "></b><img src=\"images/semimagempq.jpg\" width=\"80\" height=\"60\" border=0/></a>");
 echo "<br></td>";
 }else{
				echo ("<td height=\"40\" width=\"60\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><b><a href=marca.php?". $SID . "&id=" . $marca2. "></b><img src=\"images/marcas/" . mysql_result($rs2, $n2, "Marca"). ".jpg\" width=\"80\" height=\"60\" border=0/></a></span></div>");
 echo "<br></td></tr>";
$n2++;
 exit();

}}
}

Edited by JFernandesVR

Share this post


Link to post
Share on other sites
HappyHippyHippo

tanto código desnecessário para o problema.

as linhas que interessarão são :

(vou assumir que a abertura e fecho das chavetas está correcto, porque com esta indentação só Deus sabe se isso está correcto)

$sql = "SELECT * FROM artigos WHERE Referencia LIKE '%" . $texto . "%'";
$rs=$this->bd->executarSQL($sql);
while(mysql_fetch_row($rs)) {
 // ...
}

$sql2 = "SELECT * FROM artigos WHERE DescricaoPT LIKE '%" . $texto . "%'";
$rs2=$this->bd->executarSQL($sql2);
while(mysql_fetch_row($rs2)) {
 // ...
}

a primeira coisa que salta à vista é : e onde está a pesquisa pela marca ?

a segunda coisa que salta à vista é : claro que repete !!!

se pesquisas por "a", quantos registos o primeiro SQL irá retornar e quantos registos irá o segundo retornar ?

e quantos destes serão repetidos ???

se queres pesquisar uma tabela, faz tudo no mesmo SQL:

$sql = "SELECT * FROM artigos WHERE Referencia LIKE '%" . $texto . "%' OR DescricaoPT LIKE '%" . $texto . "%'";

e descarta toda a segunda parte desse código manhoso


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
HappyHippyHippo

dizer que não funciona não revela absolutamente nada sobre o problema

existem elementos obrigatórios para que alguém possa ajudar outra pessoa !!

- o que deveria aparecer

- o que aparece

- que código tens agora


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
JFernandesVR

deveria aparecer uma tabela com a informação dos artigos.

aparece o mesmo, isto é, lista o mesmo artigo nem sei quantas vezes e nao para de fazer pesquisa.

o codigo que tenho agora é o seguinte

function pesquisaartigos($texto)

  { $tipo = "";
  $SID = SID;
$sql = "SELECT * FROM artigos WHERE Referencia LIKE '%" . $texto . "%' OR DescricaoPT LIKE '%" .$texto . "%'";
		    $rs=$this->bd->executarSQL($sql);
   $n=0;
   $id=1;

   echo ("<tr><td colspan=\"4\"><div align=\"center\" class=\"style2\">Resultados da pesquisa por: " . $texto . " na referencia do artigo.</div></td></tr>");

		    while(mysql_fetch_row($rs)) {
 $num = $n +1;
 $id = mysql_result($rs, $n, "Referencia");
 $marca = mysql_result($rs, $n, "Marca");
 if (mysql_result($rs, $n, "Imagem") == ""){


 echo ("<tr><td height=\"40\" width=\"80\" ><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b><img src=\"images/semimagempq.jpg\" width=\"80\" height=\"60\" border=0/></a>");
 echo "<br></td>";

  }
  else {
			    echo ("<tr><td height=\"40\" width=\"80\"> <b><a href=Artigo.php?". $SID . "&id=" . $id . "></b><img src=\"images/" .mysql_result($rs, $n, "Imagem") . "\" width=\"80\" height=\"60\" border=0/></a>");
 echo "<br></td>";
}
			    echo ("<td height=\"40\" width=\"10%\" valign=\"middle\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b>".mysql_result($rs, $n, "Referencia")."</a></span></div>");
 echo "<br></td>";
			    echo ("<td height=\"40\" width=\"50%\" valign=\"middle\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b>".mysql_result($rs, $n, "DescricaoPT")."</a></span></div>");
 echo "<br></td>";

 if(isset($_SESSION['login_status'])){

  $tipo = ($_SESSION['tipo']);
 if ($tipo == 'Empresa'){

 echo ("<td height=\"40\" width=\"15%\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b> € ".mysql_result($rs, $n, "PrecoEMP")."</a></span></div>");
 echo "<br></td>";
 }else if ($tipo == 'Revenda'){
  echo ("<td height=\"40\" width=\"15%\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b> € ".mysql_result($rs, $n, "PrecoREV")."</a></span></div>");
 echo "<br></td>";
   } else{
 echo ("<td height=\"40\" width=\"15%\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b> € ".mysql_result($rs, $n, "PrecoPVP")."</a></span></div>");
 echo "<br></td>";
 } }else {
 echo ("<td height=\"40\" width=\"15%\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><br><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b> € ".mysql_result($rs, $n, "PrecoPVP")."</a></span></div>");
 echo "<br></td>";
  }
if (mysql_result($rs, $n, "Marca") == ""){
echo ("<td height=\"40\" ><b><a href=Artigo.php?". $SID . "&id=" . $id . "></b><img src=\"images/semimagempq.jpg\" width=\"80\" height=\"60\" border=0/></a>");
 echo "<br></td>";
 }else{
			    echo ("<td height=\"40\" width=\"60\"><div align=\"left\" class=\"style29\"><span class=\"style20\"><b><a href=marca.php?". $SID . "&id=" . $marca . "></b><img src=\"images/marcas/" . mysql_result($rs, $n, "Marca"). ".jpg\" width=\"80\" height=\"60\" border=0/></a></span></div>");
 echo "<br></td></tr>";

   $n++;
   }}
  }

Share this post


Link to post
Share on other sites
HappyHippyHippo

esta é maneira convencional de ler os registos lidos da base de dados

while($row = mysql_fetch_assoc($rs)) {
 print_r($row);
}


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
JFernandesVR

continua a fazer o mesmo

repete o mesmo artigo e nao para de carregar

Edited by JFernandesVR

Share this post


Link to post
Share on other sites
HappyHippyHippo

e estas a aceder aos elementos do registo como disse ???


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
JFernandesVR

por exemplo:

pesquisar por: "canetas"

devia aparecer uma tabela com todos os artigos que tivessem a descricao canetas ou referencia de canetas.

certo?

o prpblema é que ele pega no primeiro registo que encontra e lista-o uma serie de vezes e nao lista mais nenhum pois está sempre a carregar esse artigo

Share this post


Link to post
Share on other sites
bioshock

O que te foi dito, é que estás a aplicar mal o ciclo. Para além de isso estar uma confusão..

Portanto, atendendo ao que tens, deverias de separar server-side de client-side.

<?php
// (...)
?>
<table>
<?php
while($row = mysql_fetch_assoc($rs)) {
?>
<tr><td><?php echo $row["id"];?></td></tr>
<tr><td><?php echo $row["marca"];?></td></tr>
<?php
}
?>
</table>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.