Ciao a tutti,
mi trovo davanti ad un progettino, cioè la creazione di una specie di modulo rewrite sull'url.
Funzionamento:
Passo le variabili da un form ad una pagina asp che li elabora, tramite una Regula Expression sostituisco gli spazi con un carattere, creo una pagina .asp contenente una query che mi permette di visualizzare il contenuto di quella news, una volta cliccato sul link inerente alla news scelta visualizzo le informazioni della news selezionata.
form.asp
Codice PHP:
<form action="aggiungi.asp" method="POST">
TITOLO <input name="titolo" type="text">
CONTENUTO <textarea name="contenuto" cols="" rows=""></textarea>
PAGINA <input type="text" name="link_news">
<input name="ok" type="submit" value="OK">
</form>
Niente di speciale, il form trasmette i dati alla pagina aggiungi.asp, il campo che andrà a comporre il link sarà link_news
aggiungi.asp
Codice PHP:
<%
dim Titolo, Contenuto, Data, Pagina
Titolo = Replace(Request.Form("titolo"),"'", "''")
Contenuto = Replace(Request.Form("contenuto"),"'", "''")
Pagina = Replace(Request.Form("link_news"),"'", "''")
Data = date()
Function NoHTML(Stringa)
Set RegEx = New RegExp
RegEx.Pattern = "<[^>]*>"
RegEx.Global = True
RegEx.IgnoreCase = True
NoHTML = RegEx.Replace(Stringa, "")
End Function
Function ConvertiTitoloInNomeScript(Pagina)
Pagina = Pagina
Pagina = NoHTML(Pagina)
Pagina = LCase(Pagina)
Pagina = Replace(Pagina, " ", "-")
Pagina = Replace(Pagina, "\", "-")
Pagina = Replace(Pagina, "/", "-")
Pagina = Replace(Pagina, ":", "-")
Pagina = Replace(Pagina, "*", "-")
Pagina = Replace(Pagina, "?", "-")
Pagina = Replace(Pagina, "<", "-")
Pagina = Replace(Pagina, ">", "-")
Pagina = Replace(Pagina, "|", "-")
Pagina = Replace(Pagina, """", "")
Pagina = Replace(Pagina, "'", "-")
Pagina = Pagina & ".asp"
ConvertiTitoloInNomeScript = Pagina
End Function
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Documento = FSO.OpenTextFile(Server.MapPath("../partito/news/") & "\" & ConvertiTitoloInNomeScript(Pagina), 2, True)
ContenutoFile = ""
ContenutoFile = ContenutoFile & "<" & "%" & vbCrLf
ContenutoFile = ContenutoFile & "dim link_news" & vbCrLf
ContenutoFile = ContenutoFile & "link_news = "" "&Pagina&" "" "
ContenutoFile = ContenutoFile & "%" & ">" & vbCrLf
ContenutoFile = ContenutoFile & " "
Documento.Write ContenutoFile
sql_insert = "INSERT INTO informazioni (titolo, contenuto, data_invio, link_news) values"&_
"('"&Titolo&" ',' "&Contenuto&" ',' "&Data&" ',' "&Pagina&"')"
Set rs = Server.CreateObject("ADODB.Recordset")
conn.execute(sql_insert)
Set FSO = nothing
conn.close
set rs= nothing
Set conn=Nothing
%>
Questa pagina elabora i dati passati dal form, tramite una regular expression elabora la variabile link_news eseguendo un replace sugli spazi sostituendoli con il carattere "-". Infine crea un file con estensione .asp, inserendo all'interno un include e la dichiarazione della variabile link_news
inc_pagina.asp
Codice PHP:
<html>
<head>
<title></title>
</head>
<body>
<%
sql = "SELECT * FROM news WHERE link_news='" &Pagina& "'"
Set RS = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, Conn, 3, 3
%>
[b]<%=rs("titolo")%>[/b]
</body>
<%
set RS = nothing
conn.Close
set conn = Nothing
%>
</html>
In sostanza ecco il risultato
1. Passo i dati dal form alla pagina aggiungi.asp, inserisco nel db i parametri passati
(FUNZIONA)
2. Tramite la regular expression elaboro la variabile link_news sostituendo gli spazi con il carattere "-"
(FUNZIONA)
3. Creo il file .asp inserendo nel contenuto la dichiarazione della variabile link_news e il file include inc_pagina.asp
(Funziona)
4. Estraggo il contenuto del db nella homepage, inserisco un link Leggi contenente l'URL link_news
(FUNZIONA)
Il problema sta nella visualizzazione della singola news, cioè quando clicco sulla news "titolo-della-news.asp" dovrei vedere tutte le informazioni inerenti al record "titolo-della-news.asp". Ma con la query postata (nella pagina inc_pagina.asp) visualizzo una pagina bianca.
Procedo a postare la pagina titolo-della-news.asp
titolo-della-news.asp
Codice PHP:
<%
dim link_news
link_news = " titolo-della-news.asp "
%>
Dove sbaglio