Jump to content

Recommended Posts

Posted

Bom dia, P@P

Eu estou a trabalhar num website onde tenho de procurar um produto e se encontrar aparece a listagem dos produto com aquele nome.

As tabelas sao:

PRODUTOS - id_produto, nome, referencia, id_material

PRODUTOS_IMG - id_produto, imagem

MATERIAIS - id_material, material

A minha duvida é que atraves o id_produto tenho de ir buscar a imagem correspondente ao produto, e atraves do id_material tenho que ir buscar o material correspondente ao produto...

Criei este SQL mas tou com alguns problemas:

	$sql_prod = "SELECT * FROM produtos WHERE nome LIKE '%".$prod."%' ORDER BY id_produto ASC";
$res=mysql_query($sql_prod, $futura);
$count=mysql_num_rows($res);


$sql_img = "SELECT id_produto, imagem FROM produtos_img";
$executa=mysql_query($sql_img, $futura);


$sql_material = "SELECT id_material, material FROM materiais WHERE id_material=".$res['id_material'];
$executa=mysql_query($sql_img, $futura);

        
        echo '<td colspan="2" class="div_topo"> PRODUTOS:: $material['material']';
//echo '<tr><td align="left"><img src="produtos/'.$line['imagem'].'"></td></tr>';				
echo '<tr><td align="left"><strong>DESCRIÇÃO</strong>:'. $linha['nome']. '</td>';
echo '<td align="left"><strong>REFERÊNCIA</strong>:'. $linha['referencia']. '</td></tr>';
$i=$i+1;

Alguem me pode ajudar?

Obrigado,

PF2G

Posted

Bom dia, PF2G

Penso que podes reduzir as 3 querys que tens com uma só, utilizando o INNER JOIN.

echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious.";

Posted

Bom dia, PF2G

Penso que podes reduzir as 3 querys que tens com uma só, utilizando o INNER JOIN.

Eu fiz o INNER JOIN:

	
$sql_prod = "SELECT * FROM produtos WHERE nome LIKE '%".$prod."%' ORDER BY id_produto ASC";
$produt=mysql_query($sql_prod, $futura);
$count=mysql_num_rows($produt);

$pro_img="SELECT * 
		 FROM produtos 
		 INNER JOIN produtos_img 
		 ON produtos.id_produto = produtos_img.id_produto 
		 JOIN materiais 
		 ON produtos.id_material = materiais.id_material";
$image=mysql_query($pro_img, $futura);


while ($linha = mysql_fetch_array($image))
		{
			if ($i==0) 
			{ 
				echo '<tr>'; 
			}

			echo '<td colspan="2" class="div_topo"> PRODUTOS::'.$linha['material'];

			echo '<tr><td align="left"><img src="produtos/'.$linha['imagem'].'"></td></tr>';				
			echo '<tr><td align="left"><strong>DESCRIÇÃO</strong>:'. $linha['nome']. '</td>';
			echo '<td align="left"><strong>REFERÊNCIA</strong>:'. $linha['referencia']. '</td></tr>';

E aparece-me a lista do produtos todos  :S

Posted

Falta a cláusula WHERE com a condição que queres...

Esqueci-me de mencionar:

$pro_img="SELECT * 
		 FROM produtos 
		 INNER JOIN produtos_img 
		 ON produtos.id_produto = produtos_img.id_produto 
		 JOIN materiais 
		 ON produtos.id_material = materiais.id_material WHERE produtos.nome LIKE '%".$prod."%'";
$image=mysql_query($pro_img, $futura)or die(mysql_error());

o problema é que quando faço o while (mysql_feth_array ($image)), eu faço a procura de um produto que só existe um resultado diz que so ha um mas aparece 3. Sabes pq?

Posted

O que tens na variável $prod?

Testa a query no phpMyAdmin para ver se aparece conforme esperado...

echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious.";

Posted

O que tens na variável $prod?

Testa a query no phpMyAdmin para ver se aparece conforme esperado...

o $prod é o que escreves na caixa de texto de procura...

Posted
	$prod=$_GET['q2']; //caixa de texto pesquisa

$pro_img="SELECT produtos.*, produtos_img.*, materiais.*
		 FROM (produtos INNER JOIN produtos_img
		 ON produtos.id_produto = produtos_img.id_produto)
		 INNER JOIN materiais
		 ON produtos.id_material = materiais.id_material
		 WHERE produtos.nome LIKE '%". $prod ."%'";

$produt=mysql_query($pro_img, $futura);
$count=mysql_num_rows($produt);


	 <table width="570" border="0" cellspacing="0" cellpadding="0">
	<?PHP 
		$i=0;
		while ($linha = mysql_fetch_array($produt))
		{
			if ($i==0) 
			{ 
				echo '<tr>'; 
			}

			echo '<td colspan="2" class="div_topo"> PRODUTOS::'.$linha['material'];

			echo '<tr><td align="left"><img src="'.$linha['imagem'].'"></td></tr>';				
			echo '<tr><td align="left"><strong>DESCRIÇÃO</strong>:'. $linha['nome']. '</td>';
			echo '<td align="left"><strong>REFERÊNCIA</strong>:'. $linha['referencia']. '</td></tr>';
			$i=$i+1;
		}
	?>
        </table>

Agora já está quase, só ha dois problemas: nao me aparecem as imagens e tá-me a multiplicar as vezes que existe.

Posted

Verificaste utilizando o phpMyAdmin se a query está correcta a retornar os resultados que queres?

echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious.";

Posted

	$prod=$_GET['q2']; //caixa de texto pesquisa

$pro_img="SELECT produtos.*, produtos_img.*, materiais.*
		 FROM (produtos INNER JOIN produtos_img
		 ON produtos.id_produto = produtos_img.id_produto)
		 INNER JOIN materiais
		 ON produtos.id_material = materiais.id_material
		 WHERE produtos.nome LIKE '%". $prod ."%'";

$produt=mysql_query($pro_img, $futura);
$count=mysql_num_rows($produt);


	 <table width="570" border="0" cellspacing="0" cellpadding="0">
	<?PHP 
		$i=0;
		while ($linha = mysql_fetch_array($produt))
		{
			if ($i==0) 
			{ 
				echo '<tr>'; 
			}

			echo '<td colspan="2" class="div_topo"> PRODUTOS::'.$linha['material'];

			echo '<tr><td align="left"><img src="'.$linha['imagem'].'"></td></tr>';				
			echo '<tr><td align="left"><strong>DESCRIÇÃO</strong>:'. $linha['nome']. '</td>';
			echo '<td align="left"><strong>REFERÊNCIA</strong>:'. $linha['referencia']. '</td></tr>';
			$i=$i+1;
		}
	?>
        </table>

Agora já está quase, só ha dois problemas: nao me aparecem as imagens e tá-me a multiplicar as vezes que existe.

Provavelmente só estás a gravar o nome da imagem, correcto? Falta-te o caminho para a imagem. As imagens não estão numa pasta? Tens que indicar no atributo src da imagem o caminho para a pasta das imagens.

echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious.";

Posted

Provavelmente só estás a gravar o nome da imagem, correcto? Falta-te o caminho para a imagem. As imagens não estão numa pasta? Tens que indicar no atributo src da imagem o caminho para a pasta das imagens.

Ja pus e nao funciona na mesma. Outra coisa sabes como posso resolver o problema de ele multiplicar o numero de resultados?

Posted

Foi adaptado à pressa, mas tenta algo como:

                <table width="570" border="0" cellspacing="0" cellpadding="0">
                <?php

			$por_pag = 5; //max resultados por página 
  
			$prod=$_GET['q2']; //caixa de texto pesquisa | Se é caixa de texto e não estás a obter dados a partir da url podias optar por usar POST em vez de GET...
		   
			$pro_img="SELECT produtos.*, produtos_img.*, materiais.*
					   FROM (produtos INNER JOIN produtos_img
					   ON produtos.id_produto = produtos_img.id_produto)
					   INNER JOIN materiais
				 	   ON produtos.id_material = materiais.id_material
				           WHERE produtos.nome LIKE '%". $prod ."%'";

			$produt=mysql_query($pro_img, $futura);
			$count=mysql_num_rows($produt);

                        if ($count == 0){
                                echo "<p>Não foram encontrados resultados</p>";
                        }else{
					         
			 $contador=0;
                                 while($linha  = mysql_fetch_array($produt)){


				   $contador++;
				   if($contador>$por_pag)break;
					                
                                           echo '<tr><td colspan="2" class="div_topo"> PRODUTOS::'.$linha['material'];
                               
                                           echo '<tr><td align="left"><img src="'.$linha['imagem'].'"></td></tr>';                        
                                           echo '<tr><td align="left"><strong>DESCRIÇÃO</strong>:'. $linha['nome']. '</td>';
                                           echo '<td align="left"><strong>REFERÊNCIA</strong>:'. $linha['referencia']. '</td></tr>';
                                 }
                        }
                ?>
        </table>

echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious.";

Posted

AndreLC eu ja experimento a tua hipotese deixa-me so testar esta, mas preciso da tua ajuda, pq tou a fazer alguma coisa mal e nao estou a ver  :S

<table width="570" border="0" cellspacing="0" cellpadding="0">
                <?PHP
                        $i=0;
                        while ($linha = mysql_fetch_array($image))
                        {
						if ($i==0)
                            {
                                echo '<tr>';
                            }

							$sel_mat="SELECT * FROM  materiais WHERE id_material = '".$linha['id_material']."'";
							$mat=mysql_query($sel_mat, $futura);
                                echo '<td colspan="2" class="div_topo"> PRODUTOS:: '.$mat['material'];
                            
							$sel_img="SELECT * FROM  produtos_img WHERE id_produto = '".$linha['id_produto']."'";
							$img=mysql_query($sel_img, $futura);
						    echo '<tr><td align="left"><img src=">'.$img['imagem'].'"/></td></tr>';                        
                            

							echo '<tr><td align="left"><strong>DESCRIÇÃO</strong>:'. $linha['nome']. '</td>';
                                echo '<td align="left"><strong>REFERÊNCIA</strong>:'. $linha['referencia']. '</td></tr>';
							$i=$i+1;
                        }
                ?>
        </table>

Podes-me ajudar?

Obrigado,

PF2G

Posted

Um aspecto que salta logo à vista é o facto de estares a enviar a consulta, mas não estás a obter a linha com os resultados...

Por exemplo,

$linha = mysql_fetch_array($mat);

No primeiro aspecto estás a utilizar a $mat e tem que ser $linha, por exemplo!

echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious.";

Posted

Experimentaste a minha hipótese?

Ya acontece o que me acontecia multiplica-me os resultados e a imagem nada...

Estou agora a experimentar outra, so me falta a imagem:

<?php 
require_once('Connections/futura.php'); 
?>

<?PHP
$prod=$_GET['q2'];

$query_prod="SELECT * FROM produtos WHERE nome LIKE '%".$prod."%'";
    $produt=mysql_query($query_prod, $futura);
    $count=mysql_num_rows($produt);   
  
    
$prod_img="SELECT * FROM produtos WHERE nome LIKE '%". $prod ."%'";
$image=mysql_query($prod_img, $futura);                    


$query_categ_list = "SELECT * FROM materiais ORDER BY ordem ASC";
$categ_list = mysql_query($query_categ_list, $futura) or die(mysql_error());
$row_categ_list = mysql_fetch_assoc($categ_list);
$totalRows_categ_list = mysql_num_rows($categ_list);
?>
<!----------------------------------------------------------------------------------------------------------------------->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="styles/style.css" rel="stylesheet" />
<title>Plásticos Futura - Pesquisa</title>
<link rel="shortcut icon" type="image/x-icon" href="imagens/plasticos.ico" />
<script type="text/javascript" src="js/java.js"></script>
</head>

<body>
<table width="1200" border="0" align="center" cellpadding="0" cellspacing="0" style="background-image:url(imagens/fundo5.jpg);background-repeat:repeat-y;">
<tr>
<td>
<table width="1200" border="0" align="center" cellpadding="0" cellspacing="0" style="background-image:url(imagens/fundo3.jpg); background-repeat:no-repeat;" height="713" >
  <tr>
    <td height="60" valign="bottom"><?php include("topo.php"); ?></td>
  </tr>
  <tr>
    <td height="613" valign="top"><table width="1200" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td valign="top"><table width="260" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td align="right"><a href="index.php" title="Voltar à homepage"><img src="imagens/plasticos-futura.png" border="0" /></a></td>
          </tr>
          <tr>
            <td height="40"></td>
          </tr>
          <tr>
            <td><table width="250" border="0" align="right" cellpadding="0" cellspacing="0">
              <tr>
                <td width="30"></td>
                <td height="26" class="menu" onclick="window.location='index.php'"><a href="index.php" title="Home - Plásticos Futura" class="menu_text">Home</a></td>
              </tr>
              <tr>
                <td height="2"></td>
                <td height="2"></td>
              </tr>
              <tr>
                <td width="30"></td>
                <td height="26" class="menu" onclick="window.location='empresa.php'"><a href="empresa.php" class="menu_text" title="Empresa - Plásticos Futura">Empresa</a></td>
              </tr>
              <tr>
                <td height="2"></td>
                <td height="2"></td>
              </tr>
              <tr>
                <td width="30"></td>
                <td height="26" class="menu" onclick="window.location='produtos.php'"><a href="produtos.php" class="menu_text" title="Produtos - Plásticos Futura">Produtos</a></td>
              </tr>
              <tr>
                <td height="2"></td>
                <td height="2"></td>
              </tr>
              <tr>
                <td width="30"></td>
                <td height="26" class="menu" onclick="window.location='noticias.php'"><a href="noticias.php" class="menu_text"  title="Notícias - Plásticos Futura">Notícias</a></td>
              </tr>
               <tr>
                <td height="2"></td>
                <td height="2"></td>
              </tr>
		  <tr>
                  <td width="30"></td>
                  <td height="26" class="menu" onclick="window.location='oportunidades-de-negocio.php'"><a href="oportunidades-de-negocio.php" class="menu_text"  title="Oportunidades de Negócio - Plásticos Futura">Oportun. Negócio</a></td>
                </tr>
                <tr>
                  <td height="2"></td>
                  <td height="2"></td>
                </tr>
		  <tr>
                  <td width="30"></td>
                  <td height="26" class="menu" onclick="window.location='recrutamento.php'"><a href="recrutamento.php" class="menu_text"  title="Recrutamento - Plásticos Futura">Recrutamento</a></td>
                </tr>
                <tr>
                  <td height="2"></td>
                  <td height="2"></td>
                </tr>
              <tr>
                <td width="30"></td>
                <td height="26" class="menu" onclick="window.location='contactos.php'"><a href="contactos.php" class="menu_text"  title="Contactos - Plásticos Futura">Contactos</a></td>
              </tr>
            </table></td>
          </tr>
        </table></td>


<!----------------------------------------------------------------------------------------------------------------------->	
	 <td width="638" valign="top" class="texto_pretobig2"><div class="bomfundo"><strong>RESULTADOS DA PESQUISA::</strong><br />
	<br/>

<?PHP
	if($count==0)
	{
?>

	<strong>Não foram encontrados resultados!</strong>

<?PHP
	}	
	else
	{ 
		echo 'Encontrado(s) '.$count.' resultado(s) de pesquisa com a palavra "'. $prod .'":';
		echo '<br/>';
?>

	         <table width="570" border="0" cellspacing="0" cellpadding="0">
                <?PHP
                        $i=0;
                        while ($linha = mysql_fetch_array($image))
                        {
						if ($i==0)
                            {
                                echo '<tr>';
                            }
							//MATERIAL
							?> <td colspan="2" class="div_topo"><a name="cat<?php echo $row_categ_list['id_material']; ?>"></a>  <strong>PRODUTOS :: <span class="texto2"><?php echo $row_categ_list['material_en']; ?></span></strong></td>

							<?PHP
							//IMAGEM
							$sel_img="SELECT * FROM  produtos_img WHERE id_produto = '".$linha['id_produto']."'";
							$img=mysql_query($sel_img, $futura);
						    echo '<tr><td align="left"><img src="produtos/'.$img['imagem'].'"/></td></tr>';                        
                            

							echo '<tr><td align="left"><strong>DESCRIÇÃO</strong>:'. $linha['nome']. '</td>';
                                echo '<td align="left"><strong>REFERÊNCIA</strong>:'. $linha['referencia']. '</td></tr>';
							$i=$i+1;
                        }
                ?>
        </table>
<?PHP
}
?>
<!----------------------------------------------------------------------------------------------------------------------->
</div></td>
        <td width="178"></td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td height="40"><?php include("rodape.php"); ?></td>
  </tr>
</table>
</td>
  </tr>
  </table>
</body>
</html>
Posted

Ao inicio tens duas querys iguais...

Na parte de imagem falta obter as linhas com os resultados...

//IMAGEM
$sel_img="SELECT * FROM  produtos_img WHERE id_produto = '".$linha['id_produto']."'";
$img=mysql_query($sel_img, $futura);
$linha_img = mysql_fetch_array($img); //Acrescentei esta linha
echo '<tr><td align="left"><img src="produtos/'.$linha_img['imagem'].'"/></td></tr>'; //Modifiquei aqui

Um aspecto que salta logo à vista é o facto de estares a enviar a consulta, mas não estás a obter a linha com os resultados...

Por exemplo,

$linha = mysql_fetch_array($mat);

No primeiro aspecto estás a utilizar a $mat e tem que ser $linha, por exemplo!

echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious.";

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.