ID a random su database access

  • Creatore Discussione Creatore Discussione mizar66
  • Data di inizio Data di inizio

mizar66

Nuovo Utente
21 Set 2007
11
0
0
Ciao a tutti, uso questo script per estrarre a random gli ID del database per inserire delle vetrine sulla mia home page, vorrei però che aprisse solo determinati ID e non di tutto il database, infatti ho creato un campo SI NO per aprire a random solo quelli selezionati "SI"
Infatti ho modificato questa:
SQL = "SELECT * FROM tbl_proposta WHERE col_id >= " & Id
con questa
SQL = "SELECT * FROM tbl_proposta WHERE (col_vetrina = 'SI') AND col_id >= " & Id

sembra che vada però nonmi richiama l'ID che apre la foto.

Questo è lo script che genera il random
<%
SQL = "SELECT Max(col_id) AS MaxId, Min(col_id) AS MinId FROM tbl_proposta"
Set rsMain = Server.CreateObject("ADODB.Recordset")
rsMain.Open SQL, MM_conn_STRING,1,1
Dim maxId, minId, Id
maxId = rsMain("MaxId")
minId = rsMain("MinId")
Randomize
Id = Int((maxId - minId + 1) * Rnd + minId)
SQL = "SELECT * FROM tbl_proposta WHERE col_id >= " & Id
Set rsMain = Server.CreateObject("ADODB.Recordset")
rsMain.Open SQL, MM_conn_STRING,1,1
%>

E questo è lo script che apre la foto:

<%
'SQL = "SELECT * FROM tbl_proposta"
'Set rsMain = Server.CreateObject("ADODB.Recordset")
'rsMain.Open SQL, MM_conn_STRING,1,1
If NOT rsMain.BOF AND NOT rsMain.EOF then
If rsMain("col_approvafoto") = "s" Then
If Id <> "" Then
aryFileType = split("jpg,jpeg,gif",",",-1)
numFileLoopCounter = Ubound(aryFileType)
strFileStatus = "<img src='immagini/nofoto.gif' width='155' height='105' border='0' class ='corner iradius16'>"
set fs=CreateObject("Scripting.FileSystemObject")
Do while numFileLoopCounter>-1
thepath = Server.MapPath("public/foto/a"& Id & "." & aryFileType(numFileLoopCounter))
set fs=CreateObject("Scripting.FileSystemObject")
If fs.FileExists(Server.MapPath("public/foto/a"& Id & "." & aryFileType(numFileLoopCounter))) then
strFileStatus = "<img src=""public/foto/a"& Id & "." & aryFileType(numFileLoopCounter) & """ width='155' height='105' border='0' class ='corner iradius16'>"
Exit Do
End if
numFileLoopCounter = numFileLoopCounter-1
Loop
End If
response.write(""&strFileStatus&"")
End If
%>

Le foto le apre ma non coincidono con l'ID che viene assegnato da randomize.

Secondo voi cosa ho sbagliato? Grazie in anticipo.
 
grazie per la risposta, ho sostituito il sistema di inserimento della foto, semplificando notevolmente il sistema, però non riesco a richiamare l'Id all'interno della variabile:
If objFile.FileExists (Server.MapPath("public/foto/a"& Id &".jpg")) Then

come faccio ad inserire <% response.write(rsMain("col_id"))%>. all'interno di questa variabile?

questo è lo script che mi richiama la foto:
<%
Dim objFile
Set objFile = Server.CreateObject ("Scripting.FileSystemObject")
If objFile.FileExists (Server.MapPath("public/foto/a&(rsMain('col_id'))&.jpg")) Then
%>
<img src="public/foto/a<% response.write(rsMain("col_id"))%>.jpg" width="155" height="105" border="0" class ="corner iradius16">
<%
Else
%>
<img src="immagini/nofoto.gif" width="155" height="105" border="0" class ="corner iradius16">
<%
End If
Set objFile = Nothing
%>

Grazie.
 
scusa, il random id viene eseguito su degli id effettivamente esistenti, giusto?

In pratica ad ogni ID vi e assegnata una immagine, giusto?

Se io genero l'id casuale (prelevato comunque da un id esistente) e successivamente con una stupida query recupero il valore del campo ove vi è memorizzato il nome del file, non evito tutto quel codice superfluo e lo sostituisco con questo?

Codice:
<img src="public/foto/a<% response.write(rsMain("nome_immagine"))%>.jpg" width="155" height="105" border="0" class ="corner iradius16">

dubbio, ma il nome del file è un numero identico all'id? perchè se e così puoi fermarti alla sola generazione dell'id casuale.
 
Problema: il nome del file è un numero identico all?Id !
dove ld è generato da randomize su un database di oltre 420 Id.

In pratica dovrei fare una vetrina imm. sull' Home page, dove dal gestionale seleziono gli Id da aggiungere in questa Vetrina, (questo l'ho già fatto), sulla vetrina c'è l'annuncio (quello va bene) e la foto, dove la foto ha il nome dell' Id es(241.jpg) .
Solo che non riesco ad inseire lId per aggiungere la foto.
Help !
 
Mizar,
ho provato il tuo script su un mio db quello relativo al random id e funziona.

Ho una domanda, se io recupero l'id 250, in quella riga vi sono anche le info sull'immobile o sono su un'altra tabella?
 
Bene, il solito Id la solita tabella, tbl_proposta qui c'è tutto il resoconto dell' immobile.
L'Id dell'annuncio è l'Id della foto, quindi deve coincidere.
 
Modifica queste info:
nome del database e percorso: /mdb-database/db.mdb
nome del campo: objRs("caratteristiche_immobile") con quello del tuo db

Codice:
<%

' mi connetto al DB
Dim strConnect
	strConnect = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdb-database/db.mdb") 


' genero un id random
Set rsMain = Server.CreateObject("ADODB.Recordset")
	SQL = "SELECT Max(col_id) AS MaxId, Min(col_id) AS MinId FROM tbl_proposta"
	rsMain.Open SQL, strConnect,1,1
Dim maxId, minId, Id
	maxId = rsMain("MaxId")
	minId = rsMain("MinId")
Randomize
	Id = Int((maxId - minId + 1) * Rnd + minId)
	rsMain.Close
Set rsMain = Nothing ' chiudo il recordset



' recupero le info sull'immobile	
Set objRs = Server.CreateObject("ADODB.Recordset")
	strSQL = "SELECT * FROM tbl_proposta WHERE col_id = "&Id
	objRs.Open strSQL, strConnect
If NOT objRs.EOF Then ' se presente visualizzo
	caratteristiche_immobile = objRs("caratteristiche_immobile")
End If
	objRs.Close
Set objRs = Nothing ' chiudo il recordset


%>
Caratteristiche: <%=caratteristiche_immobile%><br />
Immagine: <img src="/public/foto/<%=id%>.jpg" width="155" height="105" border="0" class ="corner iradius16"><br />

Dicci cosa è successo.!.!

PS: ho provato il sopra indicato script su un DB personale e le info combaciavano con l'ID randomizzato. Se le foto non coincidono forse perchè hanno il nome errato.
 
Ultima modifica:
Paolo, Grazie per il tuo aiuto,
Lo scrip va bene fino ad un certo punto, infatti quello che tu hai postato lo avevo già fatto, il problema è sulla verifica del file, in sostanza dovrebbe aprire il file SOLO se è presente, nel caso non ci fosse la foto deve aprire un logo preselezionato (nofoto.jpg)
il randomize va bene, quello che non va è la seconda parte dello script:
cioe questo:

<%
Dim objFile
Set objFile = Server.CreateObject ("Scripting.FileSystemObject")
If objFile.FileExists (Server.MapPath("public/foto/a"& Id &".jpg")) Then
%>
<img src="public/foto/a<% response.write(rsMain("col_id"))%>.jpg" width="155" height="105" border="0" class ="corner iradius16">
<%
Else
%>
<img src="immagini/nofoto.gif" width="155" height="105" border="0" class ="corner iradius16">
<%
End If
Set objFile = Nothing
%>

la parte in grassetto è quella importante.
Grazie.
 
ci credi che solo ora ho capito qual'era il vero problema?
Prova questo script, ricorda che devi inserite il percorso assoluto del file:

Codice:
<%

Dim FileObject, VerificaEsistenza
Set FileObject=CreateObject("Scripting.FileSystemObject")
VerificaEsistenza = FileObject.FileExists("C:\Inetpub\www.miosito.com\public\foto\"& id &".jpg")
Set FileObject=Nothing

If VerificaEsistenza = True Then

	Response.Write("Si esiste")

Else
	
	Response.Write("No, non esiste")

End If

%>

...ovviamente personalizzatelo a tuo piacimento. (Testato in locale funzia perfettamente)
 
Grazie Paolo, ho nontato che il problema sta qui:
strSQL = "SELECT * FROM tbl_proposta WHERE (col_vetrina = 'SI') AND col_id >= " & Id

infatti le foto che apre dove l?ID non corrsisponde esattamente alla foto è dovuto da un errore di interpretazione di questa stringa, provando a togliere WHERE (col_vetrina = 'SI') lo script gira perfattamente. ecco l'esempio sul web: http://www.nonsolochianti.it/a.asp
come posso gestire ora questa selezione?
grazie ancora.
 
tranquillo Paolo, è abbastanza semplice solo che è difficile da spiegare:
Lo script deve aprire dei il file che randomize sceglie.
Il file che apre contiene annuncio e foto di un immobile.
La foto che apre deve essere l'Id relativo all'annuncio.

Dimmi di cosa hai bisogno per verificare l'errore, comunque per me il problema sta qui:
strSQL = "SELECT * FROM tbl_proposta WHERE (col_vetrina = 'SI') AND col_id >= " & Id

infatti se faccio cosi va tutto bene:
strSQL = "SELECT * FROM tbl_proposta WHERE col_id = "&Id

secondo te deve sta l'errore?
se hai bisogno del file intero fammi sapere.
Per stasera chiudo ci risentiamo domani.
Grazie, ciao.
 
ciao Paolo, sto ancora battagliando con questo script, per fortuna credo di aver capito dove sta il vero problema, confermado quello che avevo anticipato nei precednti post. Ecco qua:
strSQL = "SELECT * FROM tbl_proposta WHERE col_id = " & Id
così va bene, però fa il random di tutti gli ID

strSQL = "SELECT * FROM tbl_proposta WHERE (col_vetrina = 'SI') AND col_id >= " & Id
così invece fa il random solo degli ID selezionati "SI" però non apre la foto giusta.

Quindi dobbiamo lavorare solo su questa riga di codice:
strSQL = "SELECT * FROM tbl_proposta WHERE col_id = " & Id
riuscendo a far randomizzare solo gli ID che hanno sulla cella col_vetrina l'opziopne "SI"

Grazie a tutti in anticipo.
 
Mizar, scusa se ti ho trascurato ma ho davvero avuto poco tempo.

Probabilmente hai scorperto l'arcano, avevo pensato ad un'alternativa ma puoi è fallita miseramente.

Il primo di noi che ne vien fuori pubblichi la soluzione :mavieni::mavieni::mavieni::beer::beer::byebye::byebye::faraone::gun::boxing:
 
Lungo lavoro ma con ottimi risultati.. ci sono ruscito:mavieni::mavieni:
Ecco lo script che genera id a random predefiniti con l'opzione "SI" e con relativa foto associata.
Questo script è ottimale per le agenzie immobiliari, mi raccomando fatene buon uso e soprattuto vi prego di non togliere l'autore. :)
Ciao a tutti.
Maurizio Tiranti

<HTML>
<HEAD>
<TITLE>Script che genera id a random preselezionati da una opzione</TITLE>
<META NAME="AUTHOR" CONTENT="Maurizio Tiranti">
<meta http-equiv="Content-Language" content="it">
<link rel="stylesheet" type="text/css" href="tema.css">
<script>
function ApriFoto(theUrl,w,h){
window.open(theUrl,'i','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width='+w+',height='+h+',top=100,left=100')
}
</script>
<script>
function Apri(theUrl,w,h){
window.open(theUrl,'i','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,width='+w+',height='+h+',top=100,left=100')
}
</script>
<script type="text/javascript" src="justcorners.js"></script>
<script type="text/javascript" src="corner.js"></script>
</HEAD>
<BODY>
<div align="center">
<br />
<%
' ADO Constant. Non Cambiare questo
Const adCmdText = &H0001
Dim query, connStr
query = "select * FROM tbl_proposta WHERE col_vetrina = 'SI'"
connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
Server.MapPath("public/agenzia/database.mdb")
' Apro database
Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open query, connStr, 3, , adCmdText
' Genero il numero random number dal totale numero dei records
Dim intRnd
Randomize Timer
intRnd = (Int(RND * rs.RecordCount))
' Ora sposto il cursore a numero record casuali
rs.Move intRnd
%>

<table width="200" border="1" cellspacing="1" cellpadding="1"><tr><td align="center">
<a href="javascript:Apri('anteprima.asp?id=<%=rs("col_id")%>','770','500')" title="<%=rs("col_tipologia")%> in <%=rs("col_contratto")%> a <%=rs("col_provincia")%>">
<font size="1" color="#000000" face="Arial">
ID: <%=rs("col_id")%><br />
Rif: <%=rs("col_riferimento")%><br />
<%=rs("col_provincia")%><br />
<div align="left"><%=rs("col_messvetrina")%></div><br />
</font>

<%
Dim objFile
Set objFile = Server.CreateObject ("Scripting.FileSystemObject")
If objFile.FileExists (Server.MapPath("public/foto/a"& rs("col_id") &".jpg")) Then
%>
<img src="public/foto/a<%=rs("col_id")%>.jpg" width="155" height="105" border="0" class ="corner iradius16">
<%
Else
%>
<img src="immagini/nofoto.gif" width="155" height="105" border="0" class ="corner iradius16">
<%
End If
Set objFile = Nothing
%>
</a></td></tr></table>

<%
rs.Close
Set rs = Nothing
%>

</div>
</BODY>
</HTML>
 

Discussioni simili