Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

flavia10sp

loop com 2 tabelas

Recommended Posts

Ola galera sou nova no forun e novata em asp, tenho um poblema com loop com 2 tabelas

 

tenho uma tabela chamada cadastro_produtos e outra chama fotos_produto.

 

na tabela cadastro_produtos são cadastrado os produtos e na tabela foto_produto são cadastra da as fotos dos produtos

 

 

na tabela cadastro_produtos tenhos os campos:

id_produto

nome_produto

valor_produto

 

na tabela foto_produto tenho os campos

id_foto

id_produto

foto

 

a cada produto cadastrado, cadastro tambem as fotos desse produto.

 

 

poren como faço pra fazer um loop

e mostra apenas 1 foto de cada produto cadasta para exibir em minha vitrine .

minha sql esta assim

 

sql = "select * "

sql = sql & "from cadastro_produtos "

sql = sql & "inner join foto_produto "

sql = sql & "on foto_produto.id_produto = foto_produto.id_produto "

set rs_vitrine = conexao.execute(sql)

 

 

 

 

o meu banco de dados esta assim

 

cadastro_produtos

id_produto | nome_produto | valor_produto

02 toca termica 22,00

05 esmalte verde 15,00

06 esmalte roxo 15,00

 

 

 

foto_produto

id_foto | id_produto | foto

01 02 f1.jpg

02 02 f2.jpg

02 02 f3.jpg

02 02 f4.jpg

03 05 f10.jpg

03 05 f11.jpg

03 05 f12.jpg

03 05 f13.jpg

03 05 f14.jpg

03 05 f15.jpg

04 06 f20.jpg

04 06 f21.jpg

 

por favor pessoal da um ajuda ai.. desde ja obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sql = "select * "

sql = sql & "from cadastro_produtos "

sql = sql & "inner join foto_produto "

sql = sql & "on foto_produto.id_produto = cadastro_produtos.id_produto "

set rs_vitrine = conexao.execute(sql)

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um INNER JOIN,você precisa ter uma relacionamento entre as tabelas, na verdade, a impôrtancia de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo

Compartilhar este post


Link para o post
Compartilhar em outros sites

macielcr7 minha sql esta funcionado mais o poblema é quando eu faço o loop

 

<%do while not rs_vitrine.eof%>

<%=rs_vitrine("nome_produto")%>

<%=rs_vitrine("produto_produto")%>

<%

rs_vitrine.movenext

loop

%>

 

quero que exiba apenas 1 foto de cada produto

 

Ex: vamos supor que eu tenha o produto lapis,caneta,borracha na minha tabela cadastro_produto e na minha tabela foto_produto tenha 10 foto para cada protudo como exibir apenas 1 foto de cada produto em um loop

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%
do until rsprodutos.eof
sqlfoto = "select * from fotos where idproduto="&rsprodutos("id")
set rsfoto = conn.execute (sqlfoto)
response.write "Produto: "&rsprodutos("nome")&"<br>Foto:<img src="""&rsfoto("caminho")&""">"
set rsfoto = nothing
loop
%>

Acho que isso funciona..

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um SELECT INNER JOIN exibindo apenas apenas 1 foto de cada produto , logicamente você terá um campo com a primeira imagem e depois coloca ela dentro de um WHILE-WEND

Compartilhar este post


Link para o post
Compartilhar em outros sites

gente eu ja tenho relacionamento entre tabela id_produto ele faz o relacionamento com a tabela foto_produto

e funciona, o poblema é quando eu faço o loop ela exibe todas as fotos so quero que exiba 1 foto de cada produto, mesmo que a tenha 10 foto do mesmo produto.

 

 

sql = "select * "

sql = sql & "from cadastro_produtos "

sql = sql & "inner join foto_produto "

sql = sql & "on cadastro_produtos.id_produto = foto_produto.id_produto "

set rs_vitrine = conexao.execute(sql)

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual nome do campo da 1 foto , dae no SELECT você chama apenas esse campos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Separa em duas partes o select e coloca a foto com limite no loop do primeiro select.

Assim:

sql="select * from produtos"

set rs = conn.execute(sql)

do while not rs.eof

sql2="select foto_produto where id="&rs("id")

set rs2=conn.execute(sql2)

response.write rs("produto")

response.write rs2("foto_produto")

...

...

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual nome do campo da 1 foto , dae no SELECT você chama apenas esse campos

 

 

 

na tabela cadastro_produtos tenhos os campos:

id_produto

nome_produto

valor_produto

 

na tabela foto_produto tenho os campos

id_foto

id_produto

foto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz o conceito de loop dentro de loop....

 

Set Rs = Conexao.Execute("SELECT * FROM cadastro_produto")

While NOT Rs.EOF

Response.Write("Nome do Produto: " & Rs("nome_produto"))
Set Rs1 = Conexao.Execute("SELECT * FROM foto_produto WHERE id_produto = " & Rs("id_produto") & " ORDER BY id_foto LIMIT 1")
Response.Write("<br /><img src = 'pasta/'" & Rs1("foto") & "><hr />")


Rs.MoveNext
Wedn

Assim funciona.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha o exemplo, só altere para suas variaveis

 

<!--#include file="conn/conexao1.asp"--> 
<% call abreconexao
			
  'crio o rs
  set rs=Server.CreateObject("ADODB.Recordset")
  'crio o SQL
  SQL="SELECT * FROM login ORDER BY login"
  rs.open SQL,conexao,1,3
   %>
    </B></FONT></P><TABLE WIDTH="95%" BORDER="0" CELLPADDING="0" CELLSPACING="0" BGCOLOR="#666666" ALIGN="center"> 
<TR BGCOLOR="#336699"> <TD WIDTH="2%"> <DIV ALIGN="left"><B><IMG SRC="file:///A|/asp/imgs/curva.gif" WIDTH="10" HEIGHT="19"></B></DIV></TD><TD WIDTH="98%"> 
<DIV ALIGN="center"><B><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="2" COLOR="#FFFFFF">:: 
Seja Bem-Vindo <%=Ucase(varloginsession)%></FONT></B></DIV></TD></TR> <TR BGCOLOR="#336699"> 
<TD HEIGHT="10" COLSPAN="2"> <DIV ALIGN="center"><B><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#66ffff">Administração 
de Usuários</FONT></B></DIV></TD></TR> <TR BGCOLOR="#336699"> <TD COLSPAN="2" HEIGHT="2"> </TD></TR> 
<TR BGCOLOR="#336699"> <TD COLSPAN="2" HEIGHT="16"> <DIV ALIGN="right"><A HREF="pesquisa_form_treina.asp"><IMG SRC="imgs/busca2.gif" BORDER="0" ALT="Pesquisar na base de dados" WIDTH="78" HEIGHT="21"></A> </DIV></TD></TR> 
<TR BGCOLOR="#336699"> <TD COLSPAN="2" HEIGHT="2"> <DIV ALIGN="right">
        <script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0','width','80','height','20','src','incluir','quality','high','pluginspage','http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash','bgcolor','#336699','base','.','movie','incluir' ); //end AC code
</script><noscript><OBJECT CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" CODEBASE="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" WIDTH="80" HEIGHT="20">
          <PARAM NAME="BGCOLOR" VALUE="#336699">
          <PARAM NAME="BASE" VALUE=".">
          <PARAM NAME=movie VALUE="incluir.swf">
          <PARAM NAME=quality VALUE=high>
          <EMBED SRC="incluir.swf" QUALITY=high PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" TYPE="application/x-shockwave-flash" WIDTH="80" HEIGHT="20" BGCOLOR="#336699" BASE="."> 
          </EMBED> </OBJECT></noscript>
         </DIV></TD></TR> </TABLE><TABLE WIDTH="95%" BORDER="1" BORDERCOLOR="#666666" BGCOLOR="#e6e6e6" ALIGN="center"> 
<TR> <TD WIDTH="16%"> <DIV ALIGN="center"><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#666666"><B>Login</B></FONT></DIV></TD><TD WIDTH="15%"> 
<DIV ALIGN="center"><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#666666"><B>Senha</B></FONT></DIV></TD><TD WIDTH="25%"> 
<DIV ALIGN="center"><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#666666"><B>Email</B></FONT></DIV></TD><TD WIDTH="20%"> 
<DIV ALIGN="center"><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#666666"><B>Atualizar</B></FONT></DIV></TD><TD WIDTH="24%"> 
<DIV ALIGN="center"><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#666666"><B>Excluir</B></FONT></DIV></TD></TR> 
<%  while not rs.eof%> 
<TR> <TD WIDTH="16%"> <DIV ALIGN="center"><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#000000"><B><%=rs("login")%></B></FONT></DIV></TD><TD WIDTH="15%"> 
<DIV ALIGN="center"><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#000000"><B><%=rs("senha")%></B></FONT></DIV></TD><TD WIDTH="25%"> 
<DIV ALIGN="center"><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#000000"><B><%=rs("email")%></B></FONT></DIV></TD><TD WIDTH="20%"> 
<DIV ALIGN="center"><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#000000"><B><A HREF="atualizar_form_treina.asp?codigo=<%=rs("codigo")%>">Atualizar</A></B></FONT></DIV></TD><TD WIDTH="24%"> 
<DIV ALIGN="center"><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#000000"><B><A HREF="excluir_form_treina.asp?codigo=<%=rs("codigo")%>">Excluir</A></B></FONT></DIV></TD></TR> 
<% rs.movenext
  	wend
	set rs=nothing
   call fechaconexao
%> </TABLE><P><BR></P></RightClick> 
</BODY></HTML>

conexao1.asp

<% 
sub abreconexao
constring="provider=microsoft.JET.OLEDB.4.0;Data Source=" & Server.MapPath("db/quaddra.mdb")
Set conexao=Server.CreateObject("ADODB.Connection")
conexao.open constring
end sub

sub fechaconexao
set conexao=nothing
end sub
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.