Il mercatino delle novità

di Cristian Fontana, in ASP - Scripting,
  • 0
  • 0
  • 0
  • 7,96 KB

Aggiungere al proprio sito un'area dove poter consultare ed inserire gli annunci "scambio-compro-vendo" può essere un add-on molto interessante per qualsiasi categoria di siti Web.

In questo articolo analizzeremo un sistema per creare uno e gestire da remoto, con qualsiasi browser, una soluzione del genere.

Un po' di teoria...

Il nostro sistema lavora con un database da cui l'utente può consultare i dati, facendo una ricerca libera, oppure consultando direttamente la rubrica di suo interesse. Entrambe le opzioni sono estrazioni dal database stesso, la prima secondo i criteri di ricerca scelti dall'utente, la seconda invece con i dati della rubrica scelta

SELECT * WHERE RUBRICA = NOMERUBRICA

L'inserimento dell'annuncio inserendo i dati nel database. Ma chi garantisce che l'annuncio in questione non sia immorale o comunque poco serio? Possiamo, quindi, permetterci di pubblicare un annuncio che non abbiamo mai visto? La risposta è no. La cosa migliore è quella di non consentire la pubblicazione diretta dall'utente, ma di rendere l'annuncio visibile solo all'amministratore (un supervisore), il quale controllerà e deciderà se l'annuncio è idoneo alla pubblicazione piuttosto che scartarlo.

Possiamo scegliere tra due opzioni:

  • Creare una tabella uguale e parallela al database
  • Creare un campo aggiuntivo di convalida dal valore ON/OFF

Tecnicamente con il primo sistema quando entriamo nell'area protetta (abilitata solo all'amministratore) estraiamo tutti i record presenti nella tabella "privata" parallela (che chiameremo DAWEB), dove a questo punto abbiamo due opzioni: inserire l'annuncio nella tabella "pubblica" oppure cancellare l'annuncio (quindi il record) perché non ritenuto valido per la pubblicazione.

Analogamente, con il secondo sistema possiamo cambiare il valore del campo di convalida da OFF (valore di default) in ON per rendere pubblico l'annuncio, oppure, anche qui, eliminare il record.

Come accennato sopra, dobbiamo creare un'area privata, protetta da password (vedi l'articolo " autenticazione multipla di utenti "), dove l'amministratore o gli amministratori possano entrare e pubblicare, o eliminare, un annuncio.

Un'ultima considerazione, in previsione di una vasta utenza: è preferibile utilizzare il primo metodo, poiché gli annunci non pubblicati (ovvero quelli presenti nel database parallelo) non vengono elaborati dal nostro sistema. Con la seconda soluzione vengono letti anche i record con il valore OFF, anche se poi questi non verranno visualizzati, con un degrado, quindi, di prestazioni.

... e poi la pratica!

Il sistema di ricerca è uguale con entrambe le soluzioni. Abbiamo sempre la nostra pagina HTML che passa i criteri di ricerca direttamente al codice ASP:

 ' Scrivo nelle variabili i valori postati per la ricerca
annuncio=request.form("annuncio")
rubrica=request.form("rubrica")

' Se l'utente non seleziona nessun criterio il sistema troverà tutto
if annuncio="" then annuncio="%"
if rubrica="tutte" then rubrica="%"

Il seguente codice serve per la paginazione dell'output. Cerchiamo il valore della variabile "Direction" e se non lo troviamo vuol dire che siamo sulla prima pagina. Nel caso il valore di "Direction" sia "Ago" vuol dire che è stato cliccato sul link "pagina successiva" (come possiamo vedere nel codice più avanti) e desideriamo quindi mostrare i record successivi. La stessa cosa vale, al contario, con "Goback".

Session("courrentpage") = CLng(Session("Courrentpage"))
Select Case Request.QueryString("Direction")
Case ""
Session("Courrentpage") = 1
Case "Ago"
Session("Courrentpage")= Session("Courrentpage") + 1
Case "Goback"
Session("Courrentpage")= Session("Courrentpage") - 1
End Select
Const adOpenKeyset = 1

Selezioniamo dalla tabella ANNUNCIO i record che corrispondono alla richieste di ricerca, ordinate per il campo ID decrescente.

Da notare che se usiamo il metodo della pubblicazione del campo di convalida ON/OFF nei criteri di ricerca SQL dobbiamo aggiungere "AND CONVALIDA = TRUE".

 SQL="SELECT * FROM annuncio WHERE  annuncio LIKE '%"&annuncio&"%' AND rubrica = '"&rubrica&"' ORDER BY ID desc"
' apro il database ed eseguo la ricerca
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
set rs = Server.CreateObject("ADODB.Recordset")
OBJdbConnection.Open "DSN=database"
rs.Open SQL, OBJdbConnection, adOpenKeyset

' Ricordo che rs.recordcount corrisponde al numero dei record trovati
' dalla selezione SQL. Se non troviamo nessun record ...
if rs.recordcount ="0" then 
%> 

Nessun Annuncio Disponibile!
<% else
' dichiaro il numero di record per pagina
rs.pageSize = 10
rs.AbsolutePage = CLng(Session("Courrentpage"))

' Inizio Calcolo N° pagine e N° record ultima pagina
' Se il numero totale dei record trovati non è multiplo della
' paginazione allora ...
recordid=rs.recordcount
if rs.recordcount <> rs.pagesize * rs.pagecount then
quanti=rs.recordcount
pagine=rs.pagecount-1
pagtotali=rs.pagecount

' Se questa è l'ultima pagina il numero dei record da visualizzare è 
' uguale al totale dei record meno tutte le pagine precedenti (se abbiamo
 
' 21 record e vogliamo visualizzare 10 record per pagina, le prime due 
' pagine saranno complete mentre l'ultima avrà un solo record
if CLng(Session("Courrentpage")) = rs.pagecount then
rs.pagesize=quanti-(rs.pagesize*pagine)
pagtotali=CLng(Session("Courrentpage"))
end if
else
pagtotali=rs.pagecount
end if
' Fine Calcolo N° pagine e N° record ultima pagina

%> 
Possiamo comporre una frase dove ricapitoliamo a che punto siamo della ricerca (numero di record trovati, totale pagine e pagina corrente) creando anche, quando necessario, il link alle pagine precedente e successiva.
 Ho trovato <%=recordid%> annunci. Questa è la Pagina <%=Session("Courrentpage")%> di <%=pagtotali%>

<% if recordid> rs.pagesize then
' Se il numero di record trovati (recordid) è maggiore di una pagina, nel 
' nostro caso 10 record, controlliamo a che pagina siamo. Link alla pagina 
' precedente passando sempre i criteri di ricerca.
If CLng(Session("Courrentpage"))> 1 Then %>
    
<a href="ricerca.asp?Direction=Goback&rubrica=<%=rubrica%>&annuncio=<%=annuncio%>"> vai a Pagina <%=(Session("Courrentpage")-1)%></a>
<%End If
' Link alla pagina seguente ...
if CLng(Session("Courrentpage")) <> pagtotali then
If CLng(Session("Courrentpage"))< rs.PageCount Then %>
 
<a href="ricerca.asp?Direction=Ago&rubrica=<%=rubrica%>&annuncio=<%=annuncio%>">vai a Pagina <%=(Session("Courrentpage")+1)%></a>
<%
End If
 
End if
End if
Dim i
For i = 1 To rs.PageSize
%> 

Annunci estratti dal database    

<%
rs.MoveNext
Next
%>

Analizziamo ora le due soluzioni sopra citate per l'amministrazione dei record.

3 pagine in totale: 1 2 3

Attenzione: Questo articolo contiene un allegato.

Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata