Torniamo al programma News.asp. Ok, ci permette di inserire una nuova notizia ma cos'altro?
Bisognerebbe anche averne uno che ci permette di modificarla. Diciamo che siamo a letto e guardando il sito vediamo che abbiamo fatto un errore in un News, come lo accomodiamo?
Vediamo di modificare questa News e farla un po' più utile. Bisognerebbe essere in grado di
aggiungere una nuova - lo facciamo già
cambiare una esistente
cancellare una esistente
Tutto qui? Tu forse ne sai più di me adesso ma io, al momento, non riesco a pensare ad altro.
Facciamolo in una maniera semplice. Creiamo un'altra entrata nel nostro ufficio:
<a href="mantieni_news.asp"><font color="teal">Mantieni le News</font></a>
e una fila chiamata mantieni_news.asp:
<%
Option Explicit
'--------------------------------------------------------
'Purpose: mostra le news per cambiarle
'Date: 7 Aprile 2001
'Commenti:
'--------------------------------------------------------
%>
<!--#include file="adovbs.inc"-->
<%
Dim objConn, strConn, objRs, strsql
'abbiamo le chiavi?
If Session("login") then
strConn = Application("dbconn")
strsql = "Select * from tbl_news order by data_morto Asc"
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConn
Set objRs = Server.CreateObject("ADODB.Recordset")
set objRs = objConn.Execute(strsql)
'controla per errori da solo
response.write "<div align=center>"
response.write "<table border='1' width='80%' cellpadding='4' cellspacing='4' bgcolor='bisquè>"
response.write "<tr><th colspan='4' align='center'><font size='+2' color='firebrick'>Mantieni le News</font></th</tr>"
'ricordati di passare l'id del record nella querystring
Do while Not objRs.EOF
%>
<tr>
<td width="5%"><font color='teal'><%= objRs("id") %></font></td>
<td width="75%"><font color='teal'><%= objRs("titolo") %></font></td>
<td width="10%"><a href="cambia_news.asp?id=<%= objRs("id") %>">cambia</a></td>
<td width="10%"><a href="cancella_news.asp?id=<%= objRs("id") %>">cancella</td>
</tr>
<%
objRs.MoveNext
Loop
Response.write "</table></div>"
else
'quando hai tempo, metti queste linee in un .inc e formattale con un bel messaggio
'poi la puoi mettere dappertutto nell'ufficio
response.write "Mi dispiace ma questo è il mio ufficio e tu non hai la chiave..."
end if
%>
Con questa file vediamo tutte le nostre news, un titolo alla volta. Poi ad ogni titolo mettiamo un option per cambiare o cancellare quella specifica entrata.
Quando clicchiamo su "cambia" chiamiamo un'altra fila cambia_news.asp che ci permette di farlo.
Come? così:
<%
Option Explicit
Dim strConn, objConn, objRs, strsql, submitted
Dim id, titolo, sottotitolo, testo, vivo, morto,url
'abbiamo le chiavi per l'ufficio?
If Session("login") then
strConn = Application("dbconn")
submitted = Request.QueryString("submitted")
'si, ma è clickata la Form?
If submitted then
'si, è clickata quindi cambiamo i dati
id = Request.QueryString("id")
'raccogliamo I dati dall nostra form
titolo = Request.Form("titolo")
sottotitolo = Request.Form("sottotitolo")
testo = Request.Form("testo")
vivo = Request.Form("vivo")
morto = Request.Form("morto")
url = Request.Form("url")
'costruiamo la query
strsql = "Update tbl_news "
strsql = strsql & " SET ("
strsql = strsql & "titolo = '" & titolo & "',"
strsql = strsql & "sottotitolo = '" & sottotitolo & "',"
strsql = strsql & "testo = '" & testo & "',"
strsql = strsql & "data_vivo = #" & vivo & "#,"
strsql = strsql & "data_morto = #" & morto & "#,"
strsql = strsql & "url = '" & url & "') "
strsql = strsql & "Where id = " & id
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConn
Set objRs = Server.CreateObject("ADODB.Recordset")
set objRs = objConn.Execute(strsql)
'guarda per errori da solo, come abbiamo già fatto
objConn.Close
Set objConn = Nothing
else
'ancora non abbiamo clickato niente e vogliamo solo vedere
id = Request.QueryString("id")
strsql = "Select * from tbl_news where id = " & id
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConn
Set objRs = Server.CreateObject("ADODB.Recordset")
set objRs = objConn.Execute(strsql)
'vendemmia il recorset
titolo = objRs("titolo")
sottotitolo = objRs("sottotitolo")
testo = objRs("testo")
morto = objRs("data_morto")
vivo = objRs("data_vivo")
url = objRs("url")
%>
'mostra la forma con I valori che sono nelil database
<FORM ACTION="cambia_news.asp?submitted=true&id=<%= id %>" METHOD="post">
<div align="center">
<table border="0" width="95%" celpadding="2" cellspacing="2">
<tr>
<td><h1>Cambia quello che vuoi...<hr align="LEFT" size="1" width="100%" color="navy"></h1></td>
</tr>
<td align="center"><br><br>
<table width="80%" border="0" celpadding="2" cellspacing="2">
<tr>
<td>Titolo</td>
<td><INPUT NAME="titolo" TYPE="TEXT" Value="<%= titolo %>" size="80" MAXLENGTH="80"></td>
</tr>
<tr>
<td>Sottotitolo</td>
<td valign="top"><TEXTAREA NAME="sottotitolo" ROWS="3" COLS="60"><%= sottotitolo %></TEXTAREA></td>
</tr>
<tr>
<tr>
<td valign="top">News</td>
<td valign="top"><TEXTAREA NAME="testo" ROWS="10" COLS="60"><%= testo %></TEXTAREA></td>
</tr>
<tr>
<td nowrap>Data di entrata</td>
<td valign="top"><INPUT NAME="vivo" TYPE="TEXT" Value="<%= vivo %>" size="24" MAXLENGTH="24"></td>
</tr>
<tr>
<td nowrap>Data di scadenza</td>
<td valign="top"><INPUT NAME="morto" TYPE="TEXT" Value="<%= morto %>" size="24" MAXLENGTH="24"></td>
</tr>
<tr>
<td nowrap>URL</td>
<td valign="top"><INPUT NAME="url" TYPE="TEXT" Value="<%= url %>" size="24" MAXLENGTH="100"></td>
</tr>
<tr>
<td valign="top"><b> </b></td>
<td>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<table width="40%" border="0" celpadding="6" cellspacing="2">
<tr>
<td align="right"><INPUT TYPE="submit" NAME="submit" VALUE="Entra"></td>
<td align="left"><INPUT TYPE="reset" NAME="Reset" VALUE="Reset"></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</FORM>
<%
end if
end if
%>
Tutto qui. Adesso possiamo cambiare quello che vogliamo, quando vogliamo e da dove vogliamo.
Nella stessa maniera puoi implementare il bottone che cancella, con un file cancella_new.asp. Questa è ancora più semplice. Tutto quello che devi fare è attivare una Delete query quando il bottone è cliccato.
Qui abbiamo usato una soluzione molto semplice ma si potrebbe/dovrebbe fare un po' più elegante e con meno file. Queste sono questioni di preferenza. Avremmo potuto usare lo stesso file con un Select statement. La logica diventa un po' più complicata ma di sicuro lo sapresti fare adesso.
Finisci questa applicazione da solo e vedrai che la troverai utile. Una volta che hai imparato a fare:
Insert
Select
Update
hai imparato a fare tutto ;o) Il resto è questione di pazienza, di stile, di sintassi. Non si finisce mai di imparare. In più come ti ho detto, ci sono molte maniere per spellare un gatto, molto più efficienti di quello che ti ho fatto vedere. Di sicuro troverai le tue.