Array
(
)

Relacionar tabelas

PHP
Midiaptc
   - 12 nov 2013

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
Citao:
itemid
produto
foto
tipo
data_cadastro
descricao
condicao
quantidade
preco
seuemail
id_login
por
cliques

TABELA FOTOITEM
Citao:
fotoid
itemid
foto
descfoto
id_login
por

eu chamo o produto nesse cdigo:
mostra_item.php
#Cdigo

<?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">PREO</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 agradeo.
Agora acho q d pra vcs entenderem ou eu, pode ser q eu no esteja entendendo a explicao dos mais sbios a. Obrigado

Din
|
MVP
Pontos: 45
    12 nov 2013

Cara vamos l, pq no entendi muito isso no.

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

No seria melhor voc fazer esse relacionamento na query?
tipo

#Cdigo

 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 condio.

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

Midiaptc
   - 13 nov 2013

Claudio, desculpe pela ignorncia, mas como colocaria essa select no meu cdigo?

Din
|
MVP
Pontos: 45
    13 nov 2013

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, ento no seu mysql_query, ir te retornar um array com as essas informaes, faz um forech e voc consegue pegar os dados

Midiaptc
   - 13 nov 2013

meu amigo, ta ajudando muito, vou refazer o cdigo e posto aqui para sua anlise, pode ser? desde j obrigado!

Din
|
MVP
Pontos: 45
    13 nov 2013

demoro!

Midiaptc
   - 13 nov 2013

#Cdigo

<?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">PREO</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 pgina, aparece isso aqui: Column 'itemid' in where clause is ambiguous

Din
|
MVP
Pontos: 45
    13 nov 2013

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....

Midiaptc
   - 13 nov 2013

Consegui, obrigado! A dvida agora saber se tem como chamar uma select dentro da while, possivel?

Din
|
MVP
Pontos: 45
    13 nov 2013

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

Din
|
MVP
Pontos: 45
    14 nov 2013

so para conhecimento de relacionamento entre tabelas

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