16 messaggi dal 13 gennaio 2012
Ciao a tutti.

Ho un problema con ASP e spero che mi possiate aiutare.

Ho creato un sito che si appoggia ad un database di access, quando apro la pagina maschi.asp il programma mi estrae tutti i record che soddisfano una certa condizione, me li dispone all'interno di una tabella, a questo punto per ogni riga che mi appare io ho un campo link sul quale cliccando vengo mandato ad una altra pagina dove farò visualizzare i dettagli inerenti quel record.

Qui iniziano i problemi, io vorrei passare all'altra pagina due campi, però 1° nel momento in cui clicco sul link non riesco a fargli capire su quale record mi trovo e 2° non so come fare a dirgli che quando ho cliccato su quel campo deve aprire la pagina successiva.

Non essendo sul portatile dove ho fatto il lavoro, al momento non sono in grado di mostrarvi il codice che ho fatto, nel caso dovesse servirvi per capire, in serata provvederò a pubblicarlo.

Spero di essermi spiegato e ringrazio in anticipo chiunque vorrà darmi una mano.

Fausto
16 messaggi dal 13 gennaio 2012
Ecco il codice :


dim nome, eta, stato, sesso, luogo, regione, link, foto, referente, scheda_foto, appello, adottato, urgenza

Set Conn=Server.CreateObject("ADODB.Connection")
strConn="driver={Microsoft Access Driver (*.mdb)}; "
strConn=strConn & " DBQ=" & Server.MapPath("mdb-database/Maremmano.mdb")
strConn=strConn & ";pwd=" & strCode
Conn.Open strConn
sql = "SELECT * FROM CANI WHERE SESSO='MASCHIO' and ADOTTATO=false"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn ,3,3
do while not(rs.eof)
nome=rs("nome")
eta=rs("eta")
sesso=rs("sesso")
luogo=rs("luogo")
regione=rs("regione")
link=rs("link")
foto=rs("foto")
scheda_foto=rs("scheda_foto")
appello=rs("appello")

if intVolta="1" then
intVolta="0"
intTesto="#00FF99"
intSfondo="#FFFF00"
else
intVolta="1"
intTesto="#FFFF99"
intSfondo="#33CCFF"
end if
%>
<TR bgcolor="<%=intSfondo%>">

<TD width="14%"><div align="center"><%=nome%></div></TD>
<TD width="14%"><div align="center"><%=eta%></div></TD>
<TD width="14%"><div align="center"><%=sesso%></div></TD>
<TD width="14%"><div align="center"><%=luogo%></div></TD>
<TD width="14%"><div align="center"><%=regione%></div></TD>
<TD width="14%"><div align="center"><%=link%></div></TD>
<TD width="14%"><div align="center"><%=foto%></div></TD>
</TR>

<%
rs.movenext
loop
rs.Close
set rs = Nothing
conn.Close
set conn = Nothing
%>
</TABLE>
5.390 messaggi dal 09 febbraio 2002
Contributi
ciao, puoi fare un esempio del testo contenuto nel campo "link"?

Il link (quindi un tag <a href="...") dovrebbe puntare ad un'altra pagina che mostrerà il dettaglio del relativo record. Ad esempio:

<a href="dettaglio.asp">Vedi i dettagli</a>
Questo tuttavia non basta, perché dettaglio.asp così non ha modo di sapere quali dati visualizzare, dato che ce n'erano tanti nella pagina maschi.asp.

Quindi occorre che tu gli fornisca un ID, ovvero un valore univoco che identifica uno e un solo record nella tabella "cani".

<a href="dettaglio.asp?id=<%= rs("ID") %>">Vedi i dettagli</a>
Nella tabella "cani", non è necessario memorizzare l'intero codice html del "link" o l'intero percorso di pagina ma basta soltanto memorizzare l'ID che è il campo che ti serve a riconoscere un record dall'altro.

La pagina dettaglio.asp dovrà recupeare il valore dell'id in questo modo:
Dim id
id = Int(Request.QueryString("id"))
e poi usarlo in una query SELECT per ottenere tutte le informazioni sul record che porta quell'ID. Tu hai un campo "ID" nella tabella "cani"? Nel codice che hai postato non lo vedo... Se non ce l'hai crealo, deve essere un valore numerico di tipo Contatore.

Se volessi fornire un altro valore, oltre all'id, potresti integrare il link fornendo un'altra variabile, separata dall'id mediante il carattere &
<a href="dettaglio.asp?id=<%= rs("ID") %>&foto=si">Vedi i dettagli</a>


ciao
Modificato da BrightSoul il 14 gennaio 2012 13.12 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
16 messaggi dal 13 gennaio 2012
Ciao.

Grazie per l'aiuto.

Questo è il contenuto del campo link del database di access :

<a href="scheda.asp?id=2">Scheda</a>

A questo punto io invece che passargli il campo "ID" potrei direttamente passare una foto ed un appello che rappresentano il dettaglio ?

Questo perchè vorrei evitare di fare una Select nella pagina dettaglio ma vorrei avere già i campi presi dall'altra pagina.
5.390 messaggi dal 09 febbraio 2002
Contributi
ciao,

Fausto77 ha scritto:

A questo punto io invece che passargli il campo "ID" potrei direttamente passare una foto ed un appello che rappresentano il dettaglio ?


tecnicamente sì, potresti, ma questo sistema non si usa mai perché è abbastanza limitante per te, infatti esiste un numero massimo di caratteri che puoi passare in querystring e se l'appello è un testo abbastanza lungo potrebbe non "entrarci". Non è una soluzione che scala bene, specie se in futuro vorrai aggiungere un terzo e un quarto parametro.
E' anche limitante per l'utente, perché se volesse inviare il link della scheda a qualcuno dei suoi amici si ritroverebbe con un URL lunghissimo che, letto da alcune webmail, verrebbe sicuramente spezzato. Inoltre si troverebbe a navigare in una pagina maschi.asp appensantita da tutti gli appelli, mentre lui magari è interessato a leggere solo uno di quelli in elenco.

Passare l'ID mi sembra la soluzione migliore ma, perché esattemente non vuoi fare un'altra SELECT nella pagina scheda.asp? Trattandosi di una query che attinge i dati da una sola tabella non credo che esistano problemi di prestazioni. Se non vuoi accedere alla tabella, puoi pur sempre implementare un meccanismo di caching, ad esempio memorizzando i vari appelli in tante chiavi dell'oggetto Application.

In scheda.asp:
<%
Dim id, appello
'Ottengo l'id che mi è stato passato dalla pagina maschi.asp
id = Int(Request.QueryString("id"))
'Se è maggiore di 0, allora lo prendo in considerazione
If id > 0 Then
  'Cerco di ottenere l'appello dall'oggetto Application
  appello = Application("Appello" & id)
  'Se appello è vuota, vuol dire che non era ancora stata memorizzata nell'oggetto Application
  If appello = "" then
    'quindi vado a recuperare l'appello dal database
    '...qui il codice per accesso al db e poi...
    appello = rs("appello")
    'lo copio nell'oggetto Application così alla prossima esecuzione di pagina, l'appello potrà essere mostrato senza accedere al db
    'leggi qui: http://www.aspitalia.com/articoli/application.aspx
    Application.Lock
    Application("Appello" & id) = appello
    Application.UnLock
  End If
  
  'scrivo l'appello
  Response.Write appello
End If
%>

Comunque, ti ripeto, secondo me dovresti estrarre i dati dal database ogni volta che la pagina scheda viene visitata.

ciao
Modificato da BrightSoul il 14 gennaio 2012 17.09 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
16 messaggi dal 13 gennaio 2012
Ti ringrazio per i tuoi consigli, stavo cercando di evitare di usare il database perchè quando su Facebook condivido delle pagine prese dal mio sito in cui girava Access, purtroppo non mi prende l'immagine ed il testo presente.

Cmq ho un ultimo favore da chiederti : la stringa che chiama la seconda pagina <a href="dettaglio.asp">Vedi i dettagli</a>, dove la metto nella prima pagina ? perchè se avessi dei campi fissi non avrei problemi, ma dal momento che l'utente andrà a cliccare su un link preso dal database come faccio al momento del click a collegarlo all'istruzione ?

Grazie ancora per l'aiuto.
5.390 messaggi dal 09 febbraio 2002
Contributi
Fausto77 ha scritto:

la stringa che chiama la seconda pagina <a href="dettaglio.asp">Vedi i dettagli</a>, dove la metto nella prima pagina ?


esatto ma aggiungi anche l'ID altrimenti la pagina di dettaglio non saprà quale record mostrare.
Così:
<a href="dettaglio.asp?id=<%= rs("ID") %>">Vedi i dettagli</a>


Fausto77 ha scritto:

quando su Facebook condivido delle pagine prese dal mio sito in cui girava Access, purtroppo non mi prende l'immagine ed il testo presente.

Cerca di capire come mai succede questo. La condivisione su Facebook non dovrebbe influenzare in alcun modo il corretto funzionamento del sito. Magari è solo sbagliato il percorso dell'immagine.

ciao

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
16 messaggi dal 13 gennaio 2012
Scusa prima mi sono spiegato male, ho capito che quella stringa va messa nella prima pagina, ma non so in quale posizione .....

Se si trattasse di un campo inserito da me non avrei problemi, ma siccome arriva da una select, come faccio ad intercettare il comando ?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC