Ir para conteúdo

POWERED BY:

Arquivado

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

sauloborges

Registros aleatórios na vitrine de loja !!!

Recommended Posts

Aê galera beleza?

É o seguinte eu tô desenvolvendo um sistema pra minha loja de informatica é uma coisinha simples sem muita frescura, e na página default eu tenho uma vitrine que exibe registros aleatórios vindos de um banco SQL Server.

Fazer rodar os registros eu até consigo só que eu quero que me apresente sempre 6 produtos na vitrine e tem hora que aparece 1, as vezes 2, as vezes 4 e as vezes 6. Alguém sabe como eu posso contornar este problema?

 

O meu código é este aí:

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%><!--#include file="Connections/ConnComercio.asp" --><%Dim RS_VitrineDim RS_Vitrine_numRowsSet RS_Vitrine = Server.CreateObject("ADODB.Recordset")RS_Vitrine.ActiveConnection = MM_ConnComercio_STRINGRS_Vitrine.Source = "SELECT TOP 6 id, nome, descricao, preco, imagen  FROM dbo.produtos  WHERE vitrine = 's'"RS_Vitrine.CursorType = 3RS_Vitrine.CursorLocation = 3RS_Vitrine.LockType = 1RS_Vitrine.Open()RS_Vitrine_numRows = 0Dim rndMaxrndMax = Int(RS_Vitrine.RecordCount)RS_Vitrine.Dim rndNumberRandomize TimerrndNumber = Int(RND * rndMax)RS_Vitrine.Move rndNumber%><html><head><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><link href="estilos.css" rel="stylesheet" type="text/css"><style type="text/css"><!--.style1 {color: #FF0000}.style2 {font-size: 10px}.style3 {font-size: 10}.style4 {font-size: 12px}--></style></head><body><span class="preco"></span><% If Not RS_Vitrine.EOF Or Not RS_Vitrine.BOF Then %><table width="100%"  border="0" cellspacing="0" cellpadding="0">  <tr>    <td bgcolor="#999999"><span class="cabmenu"><strong>VITRINE</strong></span></td>  </tr></table><table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000">    <%  Dim Colunas, x, linha  Colunas=2  While Not RS_Vitrine.EOF  Response.Write "<TR>"  for x= 1 to Colunas  if RS_Vitrine.EOF or RS_Vitrine.BOF then ' Se for o Fim do RecordSet ou o Inicio do RecordSet faça  Response.Write "<TD></TD>" 'Em caso de EOF ou BOF ele faz as colunas  else ' Se Não for o Fim do RecordSet ou o Inicio do RecordSet faça  %>   <td height="102" valign="top" bordercolor="#FFFFFF"><div align="center">     <table width="100%"  border="1" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC">                 <tr bordercolor="#000000">                   <td width="357" rowspan="6" bordercolor="#FFFFFF"><div align="center"><span class="vitrine">                   <%=(RS_Vitrine.Fields.Item("nome").Value)%><br>                   </span><img src="<%=(RS_Vitrine.Fields.Item("imagen").Value)%>" width="120" height="80">                     <span class="vitrine style1"><br>                     </span> </div></td>                   <td width="194" bordercolor="#FFFFFF" class="vitrine"><div align="left"><img src="imagens/bot_comprar.gif" width="73" height="12"></div></td>                 </tr>                 <tr>                   <td bordercolor="#FFFFFF" class="vitrine style2"><img src="imagens/bot_descricao.gif" width="73" height="12"></td>                 </tr>                 <tr>                   <td bordercolor="#FFFFFF" class="vitrine"> <img src="imagens/bot_indique.gif" width="73" height="12"></td>                 </tr>                 <tr>                   <td valign="top" bordercolor="#FFFFFF" class="vitrine"> </td>                 </tr>                 <tr>                   <td valign="top" bordercolor="#FFFFFF" class="vitrine style1 style4"><span class="vitrine style1 style2"><span class="preco"><%= FormatCurrency((RS_Vitrine.Fields.Item("preco").Value), -1, -2, -2, -2) %></span></span></td>                 </tr>                 <tr>                   <td height="21" valign="top" bordercolor="#FFFFFF" class="vitrine"> </td>                 </tr>           </table>           </div></td>   <%   RS_Vitrine.MoveNext  end if  next  Response.Write linha&"</TR>"  wend   %></table>  <% End If ' end Not RS_Vitrine.EOF Or NOT RS_Vitrine.BOF %></body></html><%RS_Vitrine.Close()Set RS_Vitrine = Nothing%>

Agradeço desde já... :D :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

OláSaulo Borges,O seu select está trazendo apenas os 6 primeiros registros que satisfaçam essa sua condição de VITRINE='S', mesmo você tirando a CLAUSULA TOP 6 é possivel que isso que você diz continue acontecendo, porque se você tirar o TOP 6 digamos que venha 10 registros e os 10 que chegaram no select são: 2, 4, 8, 9, 11, 15, 21, 30, 45 - como você está usando o máximo do seu random o rndMax = Int(RS_Vitrine.RecordCount) você vai ter um total de no máximo 10 random, e esse random vai variar no máximo até dez podendo não completar os seis produtos na vitrine como você quer!!!Para funcionar esse random perfeito sem problemas você teria que colocar o select dessa maneira:SELECT id, nome, descricao, preco, imagen FROM dbo.produtose ainda ter certeza que se o select retornar 50 produtos que se tenha 50 ids de 1 à 50 porque se não garantir isso continua com o risco de não preencher os 6 produtos na vitrine.At.Fabiano

Compartilhar este post


Link para o post
Compartilhar em outros sites

OláSaulo Borges,O seu select está trazendo apenas os 6 primeiros registros que satisfaçam essa sua condição de VITRINE='S', mesmo você tirando a CLAUSULA TOP 6 é possivel que isso que você diz continue acontecendo, porque se você tirar o TOP 6 digamos que venha 10 registros e os 10 que chegaram no select são: 2, 4, 8, 9, 11, 15, 21, 30, 45 - como você está usando o máximo do seu random o rndMax = Int(RS_Vitrine.RecordCount) você vai ter um total de no máximo 10 random, e esse random vai variar no máximo até dez podendo não completar os seis produtos na vitrine como você quer!!!Para funcionar esse random perfeito sem problemas você teria que colocar o select dessa maneira:SELECT id, nome, descricao, preco, imagen FROM dbo.produtose ainda ter certeza que se o select retornar 50 produtos que se tenha 50 ids de 1 à 50 porque se não garantir isso continua com o risco de não preencher os 6 produtos na vitrine.At.Fabiano

Aê Fabiano valeu pela dica mas vai ser difícil eu garantir esta sequência de id´s porque eu no decorrer do uso do sistema vou excluir produtos e além disso terei produtos que não deverão aparecer na vitrine.Se alguém puder me dar mais uma dica para burlar este problema eu agradeço....Valeu Fabiano !!!

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.