Relacionar tabelas

12/11/2013

0

PHP

tenho um site proprio de classificados online, eu quero mostrar mais de uma foto do produto, sendo assim, o produto já é cadastro corretamente, assim como as fotos
Numa tabela de produto (item) eu cadastro uma foto principal
TABELA ITEM
itemid
produto
foto
tipo
data_cadastro
descricao
condicao
quantidade
preco
seuemail
id_login
por
cliques

TABELA FOTOITEM
fotoid
itemid
foto
descfoto
id_login
por

eu chamo o produto nesse código:
mostra_item.php
<?php

  function convertem($term, $tp) {

    if ($tp == "1") $palavra = strtr(strtoupper($term),"àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ","ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß");

    elseif ($tp == "0") $palavra = strtr(strtolower($term),"ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß","àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ");

    return $palavra;

}

$recupera = $_GET[''itemid''];

$item = mysql_query("SELECT * FROM item WHERE `itemid` = ''$recupera''")

   or die(mysql_error());

if(@mysql_num_rows($item) == ''0''){

echo "Nenhum produto cadastrado, seja o primeiro!";

}else{

while($mostra_item=mysql_fetch_array($item))

{

$id = $mostra_item["itemid"];
$produto = $mostra_item["produto"];
$foto = $mostra_item["foto"];
$tipo = $mostra_item["tipo"];
$data = $mostra_item["data_cadastro"];
$usumail = $mostra_item["seuemail"];
$descricao = $mostra_item["descricao"];
$preco = $mostra_item["preco"];
$qtd = $mostra_item["quantidade"];
$condic = $mostra_item["condicao"];
$por = $mostra_item["por"];

?>

<div id="formularios">

<div id="cont_item">
<div class="titproduto"><div class="titprod"><h2><?php echo strtoupper("$produto"); ?></h2></div><div class="btnprod"></div></div>
<img src="produtos/<?php echo $foto; ?>" border="0" width="100%"/>

<div class="blocodesc">
<span class="itemdesc"><span class="itemdesctit">PRODUTO</span><br>
<?php
if ($condic == "NOVO"){
echo "<img src=\"img/ico-novo.png\"/>";
}elseif ($condic == "USADO"){
echo "<img src=\"img/ico-usado.png\"/>";
}elseif ($condic == "SEMI-NOVO"){
echo "<img src=\"img/ico-snovo.png\"/>";
}elseif ($condic == "DEFEITO"){
echo "<img src=\"img/ico-defeito.png\"/>";
}
?>
</span>
<span class="itemdesc"><span class="itemdesctit">PREÇO</span><br><br><?php echo $preco?></span>
<span class="itemdesc"><span class="itemdesctit">CATEGORIA</span><br><br><?php echo strtoupper("$tipo"); ?></span>
<span class="itemdesc"><span class="itemdesctit">POR</span><br><br><?php echo $por; ?></strong></span>

<div id="like">

<div id="fb-root"></div>

<script src="http://connect.facebook.net/pt_BR/all.js#appId=169279313141006&xfbml=1"></script>

<script language="JavaScript" type="text/javascript">

var endereco=(location.href)

document.write(''<fb:like href="''+endereco+''" send="true" layout="button_count" width="450" show_faces="true" font="arial"></fb:like>'');

</script>

</div>
</div><!--fim bloco desc-->
<br>
<?php echo $descricao; ?>
<br>
POSTADO EM</span><br><?php echo date(''d/m/Y'', strtotime($mostra_item[''data_cadastro''])); ?>

<?php } } ?>

</div><!--fim div cont item-->

quero que mostre onde ta mostrando a imagem principal as outras imagens cadastradas na tabela fotoitem, percebam que nas duas tabelas tem o campo itemid, na tabela ITEM é uma int chave primaria e na tabela FOTOITEM é um char q resgata o id da tabela ITEM
Espero q tem entendido, aguardo resposta e desde já agradeço.

Agora acho q dá pra vcs entenderem ou eu, pode ser q eu não esteja entendendo a explicação dos mais sábios aí. Obrigado
Werdeson Silva

Werdeson Silva

Responder

Posts

12/11/2013

Claudio Lopes

Cara vamos lá, pq não entendi muito isso não.


Fato é vc tem uma tabela A e uma tabela B, entre essas tabela existem um campo em comum que é o iditem certo?

Não seria melhor você fazer esse relacionamento na query?
tipo

 Select * from item as A left join foto_item as B on  a.iditem = b.iditem


Assim vc pegaria o resultado via GET e traz para a condição.

Dica: use CRUD, é muito melhor e você escreve muito menos, qualquer coisa posta ai
Responder

13/11/2013

Werdeson Silva

Claudio, desculpe pela ignorância, mas como colocaria essa select no meu código?
Responder

13/11/2013

Claudio Lopes

creio seu banco esteja assim:

a tabela item possui: chinelos
a tabela foto_item posui foto1, foto2, foto3

na query que eu te mandei( levando em conta que voce tenha apenas um item(produto) o resultado será:

chinelo, foto1
chiinelo, foto2
chinelo , foto3


Creio que você queira listar todas as fotos, então no seu mysql_query, irá te retornar um array com as essas informações, faz um forech e você consegue pegar os dados


Responder

13/11/2013

Werdeson Silva

meu amigo, ta ajudando muito, vou refazer o código e posto aqui para sua análise, pode ser? desde já obrigado!
Responder

13/11/2013

Claudio Lopes

demoro!
Responder

13/11/2013

Werdeson Silva

<?php

  function convertem($term, $tp) { 

    if ($tp == "1") $palavra = strtr(strtoupper($term),"àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ","ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß"); 

    elseif ($tp == "0") $palavra = strtr(strtolower($term),"ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß","àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ"); 

    return $palavra; 

} 

$recupera = $_GET['itemid'];
$item = mysql_query("SELECT * from item as A left join fotoitem as B on  a.iditem = b.iditem WHERE `itemid` = '$recupera'")

	or die(mysql_error());

if(@mysql_num_rows($item) == '0'){

echo "Nenhum produto cadastrado, seja o primeiro!";

}else{

while($mostra_item=mysql_fetch_array($item))

{

$id = $mostra_item["itemid"];
$produto = $mostra_item["produto"];
$foto = $mostra_item["foto"];
$tipo = $mostra_item["tipo"];
$data = $mostra_item["data_cadastro"];
$usumail = $mostra_item["seuemail"];
$descricao = $mostra_item["descricao"];
$preco = $mostra_item["preco"];
$qtd = $mostra_item["quantidade"];
$condic = $mostra_item["condicao"];
$por = $mostra_item["por"];

?>

<div id="formularios">

<div id="cont_item">
<div class="titproduto"><div class="titprod"><h2><?php echo strtoupper("$produto"); ?></h2></div><div class="btnprod"></div></div>
<img src="produtos/<?php echo $foto; ?>" border="0" width="100%"/>

<div class="blocodesc">
<span class="itemdesc"><span class="itemdesctit">PRODUTO</span><br>
<?php
if ($condic == "NOVO"){
echo "<img src=\"img/ico-novo.png\"/>";
}elseif ($condic == "USADO"){
echo "<img src=\"img/ico-usado.png\"/>";
}elseif ($condic == "SEMI-NOVO"){
echo "<img src=\"img/ico-snovo.png\"/>";
}elseif ($condic == "DEFEITO"){
echo "<img src=\"img/ico-defeito.png\"/>";
}
?>
</span>
<span class="itemdesc"><span class="itemdesctit">PREÇO</span><br><br><?php echo $preco?></span>
<span class="itemdesc"><span class="itemdesctit">CATEGORIA</span><br><br><?php echo strtoupper("$tipo"); ?></span>
<span class="itemdesc"><span class="itemdesctit">POR</span><br><br><?php echo $por; ?></strong></span>

<div id="like">

<div id="fb-root"></div>

<script src="http://connect.facebook.net/pt_BR/all.js#appId=169279313141006&xfbml=1"></script>

<script language="JavaScript" type="text/javascript">

var endereco=(location.href)

document.write('<fb:like href="'+endereco+'" send="true" layout="button_count" width="450" show_faces="true" font="arial"></fb:like>');

</script>

</div>
</div><!--fim bloco desc-->
<br>
<?php echo $descricao; ?>
<br>
POSTADO EM</span><br><?php echo date('d/m/Y', strtotime($mostra_item['data_cadastro'])); ?>

<?php } } ?>

</div><!--fim div cont item-->


Dá erro na página, aparece isso aqui: Column 'itemid' in where clause is ambiguous
Responder

13/11/2013

Claudio Lopes

isso porque vc tem duas tabelas com um mesmo nome de colunas,

na query que eu te mandei, substitua o * pelo nome dos campos que deseja, tipo a.campo, b.campo....
Responder

13/11/2013

Werdeson Silva

Consegui, obrigado! A dúvida agora é saber se tem como chamar uma select dentro da while, é possivel?
Responder

13/11/2013

Claudio Lopes

antes mesmo, existe sim, esse while seria dentro do sql ou no php? qual o objetivo?
Responder

14/11/2013

Claudio Lopes

so para conhecimento de relacionamento entre tabelas

https://www.devmedia.com.br/criando-um-projeto-de-banco-de-dados/28740
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar