Jump to content

Pesquisa em PHP/MYSQL


JFernandesVR

Recommended Posts

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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++;
   }}
  }
Link to comment
Share on other sites

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>
Link to comment
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.