Ir para conteúdo

POWERED BY:

Arquivado

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

graffdesign

Adaptar um script php para ASP

Recommended Posts

Oi gente eu tenho um script de seleção de banners randomicos em PHP e em ColdFusion e eu gostaria de criar um igual em ASP para seguir um mesmo padrão em meus sistemas, vejam o script e abaixo dele vou botar minha dúvida.

<%	'declaração das variáveis	Dim qBanner_square_list, qBanner_square_getBanner, getItem, TRBS	' TRBS = Total Records Banner Square	Dim sql_cList, sql_getBanner		'Query que populará a lista de banners	sql_cList = "SELECT" _				&	" id_banner" _				& " FROM" _				&	" smo_banner" _				& " WHERE" _				&	" tamanho = 2" _				& " AND"_				&	" roles = 1" _				& " ORDER BY" _				&	" id_banner" _				& " ASC;"				'abrir conexão com o banco de dados	'conn.open "dsn" , "username" , "senha"  ' "datasourcename" , "username" , "senha"	'criar recordset e fazer a consulta	set qBanner_square_list = conn.Execute (sql_cList) 	'Cria o valor total de registros menos 1 para criar o tamanho do array	TRBS = cint(qBanner_square_list.RecordCount + 1)	'Define e cria o array	Dim lista_square()	reDim preserve lista_square(TRBS)		Dim itemLoopSquare 'Define o contador	itemLoopSquare = 0 'Cria o contador		'Faz o loop  até o fim da consulta e até o contador chegar ao tamanho do total de registros	DO UNTIL qBanner_square_list.EOF		'Grava o id no array		lista_square(itemLoopSquare) = qBanner_square_list("id_banner")		'Incrementa o contador em + 1		itemLoopSquare = itemLoopSquare + 1		'Pula para o próximo registro		qBanner_square_list.Movenext	Loop 'Termina o loop		'pega um banner randomizado	Dim randASquare	randomize	randASquare = int(Rnd * uBound(lista_square)) + 0		getItem = cint(lista_square(randASquare))		'Query que populará a lista de banners	sql_getBanner = " SELECT " _					&	"id_banner, " _					&	"src, " _					&	"formato, " _					&	"url " _					& "FROM " _					&	"smo_banner " _					& "WHERE " _					&	"id_banner = " & getItem & ";"		set qBanner_square_getBanner = conn.Execute(sql_getBanner)	'pega os dados do banner e guarda em variáveis		Dim banner_square, banner_square_formato, banner_square_url		[b]banner_square = qBanner_square_getBanner("src") 'nome do banner[/b]	banner_square_formato = cint(qBanner_square_getBanner("formato"))	banner_square_url = qBanner_square_getBanner("url")			'começar as expressões	IF banner_square_formato = 1 THEN 'SWF%>		<table width="150" border="0" align="center" cellspacing="0" cellpadding="0">		  <tr>			<td>			 <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 					codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" 					width="150" 					height="150">				  <param name="movie" value="_img_externas/_publicidade/<%= banner_square %>" />				  <param name="quality" value="high" />				  <embed src="_img_externas/_publicidade/<%= banner_square %>" 							quality="high" 							pluginspage="http://www.macromedia.com/go/getflashplayer" 							type="application/x-shockwave-flash" 							width="150" 							height="150">				 </embed>				</object>			  </td>		  </tr>		</table><%	ELSEIF banner_square_formato =  2 THEN 'IMG%>		<table width="150" border="0" align="center" cellspacing="0" cellpadding="0">		  <tr>			<td><a href="<%= banner_square_url %>"><img name="Banner_square" alt="" src="_img_externas/_publicidade/<%= banner_square %>" 			border="0" /></a></td>		  </tr>		</table><%	ELSE%>		<table width="150" border="0" align="center" cellspacing="0" cellpadding="0">		  <tr>			<td><%= banner_square %></td>		  </tr>		</table><%	END IF%>
Bom funciona de boa, só que agumas vezes a variável: getItem = cint(lista_square(randASquare)) retorna vasia ae a quaery naum funciona e retorna o erro:

Tipo de erro:ADODB.Field (0x800A0BCD)BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual./asp_sites/smo/web/_includes/_inc_banners/banner_square.asp, line 68

A linha 68 é a que esta em negrito no codigo, ou seja a primeira linha depois da query que retornaria o banner!!!Bom eu sei que o ASP tem um componente de rotação de banners o ADROTATOR, mas como falei preciso seguir um padrão em um sistema e tenho que fazer igual.O script com essa lógica funciona perfeitamente no PHP e no ColdFusion, alguém sabe o que pode estar acontecendo de errado?Eu fiz um codigo bobo para testar a função do script e nuam retorna erro nenhum nunca, sempre a variável volta com um valor segue o teste:
<%	Option Explicit	Dim random(), contcont=4redim preserve random(cont)	Dim rand	random(0) = "item 0"	random(1) = "item 1"	random(2) = "item 2"	random(3) = "item 3"	 	randomize	rand = int(Rnd * uBound(random)) + 0%><%= "<h3>" & random(rand) & "</h3>" %>
Só da erro com a consulta no db.Alguém ajuda?Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de começar a fazer referencia a Query, verifique se não retornou algum resutado, no seu caso:

If Not qBanner_square_list.Eof Then'Codigos....ElseResponse.Write "Nenhum registro cadastrado"End If

Fora outras coisas que podem ser melhoradas nesse código, você optou por fazer da maneira mais complicada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom eu já tentei isso e acontece a mesma coisa, tinha que haver uma maneira de repetir a query se EOF fosse true.Vo tentar akiObrigado, qualquer dica posta ae é válida

Compartilhar este post


Link para o post
Compartilhar em outros sites

você fez isso?

 

 

 

	set qBanner_square_getBanner = conn.Execute(sql_getBanner)	'pega os dados do banner e guarda em variáveis if qBanner_square_getBanner.eof thenresponse.write("nenhum registro")  else   	Dim banner_square, banner_square_formato, banner_square_url	   banner_square = qBanner_square_getBanner("src") 'nome do banner'===>>restante do códigoend if

e criou os objetos recordsets?

 

onde está a instrução sql que você aramazena na variavel sql_getBanner e executa com o recordset qBanner_square_getBanner???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom todo o resto está no corpo do arquivo proncipal: index.asp esse arquivo está sendo incluido demtro do index.Bom fiz com adRotator, é tão simples que não valia a pena continuar tentando desse jeito!!!Mas obrigado pela atenção de todos.Valeu

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.