Ver la versión completa : Foro ASP
Bueno.... aqui voy a postear mi foro en asp por si a alguien le interesa, y q todo el mundo pueda ver como se hace ( o como no se hace ):D un foro en ASP.
Consideraciones previas:
El foro trabaj con una base de datos Acces uo.mdb, con las siguientes tablas:
Preguntas:
NumPregunta
Titulo
Autor
Fecha
Texto
Respuestas:
NumRespuesta
Titulo
NumPregunta
Autor
Texto
Fecha
Bien... El foro está compuesto por 6 páginas.
anadir y anadir2: añade una respuesta
AnadirPregunta y AnadirPregunta2: añade una Pregunta
ForoUO y ForoUO2
PD: Por Favor, no añadan respuestas a este post hasta q haya añadido todas las páginas (ya q voy a postear las páginas del foro 1 a 1)
AnadirPregunta.asp
[%@ Language=VBScript %]
[META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"]
sub validarForm()
if trim(window.document.forms(0).txtAutor.value)="" then
msgbox "Por favor introduce un nombre"
response.redirect ("anadir.asp")
elseif trim(window.document.forms(0).txtTitulo.value)="" then
msgbox "Por favor introduce un nombre"
elseif trim(window.document.forms(0).TEXTAREA.value)="" then
msgbox "Por favor introduce un nombre"
else
document.forms(0).submit
end if
end sub
Autor
[INPUT id=text1 name=txtAutor]
Titulo Pregunta [INPUT
id=text2 name=txtTitulo]
Pregunta :
[INPUT id=submit1 name=submit1 type=submit value="Preguntar" onclick="validarForm"]
AnadirPregunta2.asp
[%@ Language=VBScript %]
[META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"]
[%
'set conexion=server.CreateObject("adodb.connection")
'conexion.Open "DSNuo"
Set Conexion = Server.CreateObject("ADODB.Connection")
Conexion.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\xxxxxxx\db\uo.mdb")
set rst = server.CreateObject("adodb.recordset")
rst.Open "Preguntas",conexion,3,3
'set rst2 = server.CreateObject("adodb.recordset")
'rst2.Open "Respuestas",conexion,3,3
if rst.recordcount [] 0 then
x=rst.recordcount
rst.MoveLast
if rst.fields("Titulo")=request.form ("txtTitulo") then
response.write ("Ya existe mensaje Con ese titulo)")
response.redirect ("ForoUO.asp")
else
rst.AddNew
rst.Fields("Titulo")=Request.Form ("txtTitulo")
rst.Fields("Autor")=Request.Form ("txtAutor")
rst.Fields("Texto")=Request.Form ("TEXTAREA")
rst.fields("NumPregunta")=x
rst.fields("Fecha")=date
rst.update
rst.close
conexion.close
Response.Redirect ("ForoUO.asp")
end if
else
rst.AddNew
rst.Fields("Titulo")=Request.Form ("txtTitulo")
rst.Fields("Autor")=Request.Form ("txtAutor")
rst.Fields("Texto")=Request.Form ("TEXTAREA")
rst.fields("NumPregunta")=0
rst.fields("Fecha")=date
rst.update
rst.close
conexion.close
Response.Redirect ("ForoUO.asp")
end if
%]
anadir.asp
[%@ Language=VBScript %]
[META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"]
sub validarForm()
if trim(window.document.forms(0).txtAutor.value)="" then
msgbox "Por favor introduce un nombre"
elseif trim(window.document.forms(0).txtTitulo.value)="" then
msgbox "Por favor introduce un nombre"
elseif trim(window.document.forms(0).TEXTAREA.value)="" then
msgbox "Por favor introduce un nombre"
else
document.forms(0).submit
end if
end sub
Autor
[INPUT id=txtAutor maxLength=35 name=txtAutor]
Titulo Pregunta [INPUT
id=txtTitulo maxLength=35 name=txtTitulo]
Respuesta :
[INPUT id=submit1 name=submit1 type=submit value="Responder" onclick="validarForm"]
k kieres decir con todo esto, a k foro t refieres????
anadir2.asp
[%@ Language=VBScript %]
[META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"]
[%
Tit=Request.Form ("txtTitulo")
Aut=Request.Form ("txtAutor")
TEX=Request.Form ("TEXTAREA")
Sess=session("NP")
response.write (Tit)
response.write (Aut)
response.write (TEX)
response.write (Sess)
Set Conexion = Server.CreateObject("ADODB.Connection")
Conexion.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\xxxxxxxxx\db\uo.mdb")
set rst2 = server.CreateObject("adodb.recordset")
rst2.Open "Respuestas",conexion,3,3
if rst2.recordcount []0 then
rst2.MoveLast
if rst2.fields("Titulo")=Tit then
response.write ("Ya existe mensaje Con ese titulo)")
response.redirect ("ForoUO.asp")
conexion.close
else
rst2.AddNew
rst2.Fields("Titulo")=Tit
rst2.Fields("Autor")=Aut
rst2.Fields("Texto")=TEX
rst2.Fields("NumPregunta")=session("NP")
rst2.fields("Fecha")=date
'No creo q hacer esto con una variable de sesión sea lo más seguro, pero a ver q tal va.
rst2.update
rst2.close
conexion.close
end if
else
rst2.AddNew
rst2.Fields("Titulo")=Tit
rst2.Fields("Autor")=Aut
rst2.Fields("Texto")=TEX
rst2.Fields("NumPregunta")=session("NP")
rst2.fields("Fecha")=date
rst2.update
rst2.close
conexion.close
end if
Response.Redirect ("ForoUO.asp")
%]
ForoUO.asp
[%@ Language=VBScript %]
[META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"]
[%
'set conexion=server.CreateObject("adodb.connection")
'conexion.Open "DSNuo"
Set Conexion = Server.CreateObject("ADODB.Connection")
Conexion.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\xxxxxxx\db\uo.mdb")
set rst = server.CreateObject("adodb.recordset")
rst.Open "Preguntas",conexion,3,3
set rst2 = server.CreateObject("adodb.recordset")
'rst2.Open "Respuestas",conexion,3,3
%]
Titulo
Autor
Respuestas
Fecha
Seleccionar
[% if rst.RecordCount=0 then
response.write("N0 hay preguntas0")
rst.close
else
rst.movefirst
while not rst.eof
titulo=rst.Fields("Titulo")
autor=rst.Fields("Autor")
fecha=rst.fields("Fecha")
Num=rst.Fields("NumPregunta")
rst2.Open "Respuestas",conexion,3,3
if rst2.recordcount [] 0 then
rst2.close
rst2.activeconnection=conexion
rst2.Source = "select * from Respuestas " & _
"where NumPregunta='" & Num & "'"
rst2.Open
respuestas=rst2.recordcount
rst2.close
else
respuestas=0
rst2.close
end if
response.write("")
Response.Write ("" & titulo & "")
Response.Write ("" & autor & "")
Response.Write ("" & respuestas & "")
Response.Write ("" & fecha & "")
Response.Write ("[INPUT type=radio id=rad name=rad value=" & Num & "]" & "")
'Response.Write ("[INPUT type=radio id=rad name=rad value=" & titulo & "]" & "")
response.write("")
rst.movenext
wend
rst.close
response.write("")
response.write("")
end if
'conexion.close
%]
[INPUT type="submit" value="Ver" id=submit1 name=submit1]
[%conexion.close%]
Selecciona un Post y pulsa Ver para acceder a un Post y sus respuestas
[param name="movie" value="button11.swf"]
[param name="quality" value="high"]
[param name="base" value="."]
ForoUO2.asp
[%@ Language=VBScript %]
[META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"]
[%
Set Conexion = Server.CreateObject("ADODB.Connection")
Conexion.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\xxxxxxxx\db\uo.mdb")
set rst = server.CreateObject("adodb.recordset")
rst.Open "Preguntas",conexion,3,3
set rst2 = server.CreateObject("adodb.recordset")
'rst2.Open "Respuestas",conexion,3,3
NP=Request.Form("rad")
'response.write (NP)
session("NP")=NP
response.write("")
response.write("")
response.write("")
response.write("")
response.write("Autor")
response.write("Pregunta")
response.write("Fecha")
response.write("")
response.write("")
'rst.close
'rst.Source = "select * from Preguntas where Titulo='" & NP & "'"
'rst.Find "Titulo='" & NP & "'", 0, adSearchForward, 0
'rst.movelast
'rst.Open
While not rst.eof and encontrado [] "True"
if rst.fields("NumPregunta")=NP then
encontrado="True"
else
rst.movenext
end if
wend
'HACIENDO EL BUCLE ARTESANAL
'Session("NP")=rst.fields("NumPregunta")
Aut=rst.Fields("Autor")
Preg=rst.Fields("Texto")
Cad = replace(Preg,chr(13),"[br/]")
NUM2=rst.fields("NumPregunta")
fech=rst.fields("Fecha")
rst.close
Response.Write("" & Aut & "")
Response.Write("" & Cad & "")
Response.Write("" & fech & "")
response.write("")
response.write("")
response.write("")
response.write("")
response.write("")
response.write("")
response.write("")
response.write("Autor")
response.write("Respuesta")
response.write("Fecha")
response.write("")
'rst2 CONSULTA SELECT A LAS RESPUESTAS CON ESE NUM PREG
'E IR haciendo la tabla
rst2.activeconnection=conexion
rst2.Source = "select * from Respuestas " & _
"where NumPregunta='" & Num2 & "'"
'rst2.Source = "select * from Respuestas " & _
'"where TitPregunta='" & NP & "'"
rst2.Open
'rst2.MoveFirst
while not rst2.EOF
aut2=rst2.Fields("Autor")
text=rst2.Fields("Texto")
Cad2 = replace(text,chr(13),"[br/]")
fech2=rst2.fields("Fecha")
Response.Write ("")
Response.Write("" & Aut2 & "")
Response.Write("" & Cad2 & "")
Response.Write("" & fech2 & "")
response.write("")
rst2.MoveNext
wend
response.write ("")
rst2.close
conexion.close
'rst.close
%]
[param name="BGCOLOR" value=""]
[param name="movie" value="button13.swf"]
[param name="quality" value="high"]
[param name="base" value="."]
[param name="BGCOLOR" value=""]
[param name="movie" value="button14.swf"]
[param name="quality" value="high"]
[param name="base" value="."]
Bueno... pues esto es un foro (o algo parecido ):D . Ya se q no es ninguna maravilla, pero ahí está, para q quien como yo esté empezando pueda ver como va.
Puede haber por ahi muchos comentarios en medio del código (precedidos por " ' " sin comillas), no les hagais ni caso, son cosas mías q me daba pereza borrar (aunque a lo mejor alguno hasta es util).
umm... he metido botones en Flash, así q a lo mejor no quedan muy claros los enlaces y tal... así q en el siguiente post va un breve comentario de como funciona el foro....
bien...
La primera página q se supone ha de cargar el foro es ...
ForoUO.asp: Esta página,saca los mensajes del foro (si los hay), junto con info referente a cada mensaje (nº respuestas, fechas...). A partir de aquí hay dos opciones:
1. Si seleccionas un mensaje y le das a ver (es un submit button), pasas a ForoUO2.asp, q saca por pantall (en una tabla) el mensaje seleccionao y todas sus respuestas. Una vez en ForoUO2.asp, tienes 2 opciones:
1.1.Contestar, q es un enlace a la página anadir.asp (podría, mas bien debería ser una pag HTML), en la q el usuario cubre un form q se manda a anadir2.asp q añade la respuesta a la base de datos.
1.2.Regresar, un enlace q te manda a ForoUO.asp
2. Nueva Pregunta. Es un enlace q manda al usuario a la página AnadirPregunta.asp, donde sale un form q depues de ser cubierto por el usuario se manda a AnadirPregunta2.asp (podría, mas bien debería ser una pag HTML) q graba los datos en la base de datos.
uffff... espero q esto valga de algo. Bueno, el tema este basicamente funciona, tendrá algún fallo (todas las páginas están sin título, aunque éste será el menos grave), y sobre todo programación ineficiente y algo chapucera (esa es mi firma ;) ), y alguno + se me ocurre.
De todas formas, aceptaría (es más, me gustaría) oir todo tipo de críticas (constructivas claro).
Cualquier duda, consultarme...
Si en alguna parte de los posts no he sido claro, o me falta algo por explicar decirmelo (lo he escrito todo seguido y no se q tal irá).
Por último, hacer con este amago de foro lo q querais, copiarlo, editarlo, implementarlo en vuestras páginas web, no le hagais ni caso .... etc etc
SPECIAL THANKS TO EXCALIBUR && ERICKPEREZ
Hola jocanor.
Pues, soy novato en programación en gral, y en asp en particular. Hay por ahi otro post con el titulo "Problema foro asp", en el q consultaba una duda q me había surgido mientras programaba un foro (muy básico).
En ese mismo post, prometí q postearía el código del foro cuando estuviera terminado por si a algún principiante como yo le valía de algo.
Adiós.
PD: perdona q no te respondiera antes pero estaba posteando el foro y no vi tu post.
eXcalibur
09-10-2002, 09:44
Yo también los acabé, los tengo colgados en un server, pero no me acuerdo, jajaajja
Saludos
The_chacal
09-10-2002, 23:29
Joder (con perdon) donde habeis aprendido todo esto¿?, es que yo no he encontrado ningun manual decente en internet gratuito :( , alguien me podra dar un link para algun manual que sea bueno, avanzado, etc, y que este en español.
Gracias, y un saludo.
Angeliyo
10-10-2002, 16:15
Es sencillo pero te honra el colaborar en el foro... (muchos no lo harían...) ;) muchas gracias por compartirlo y sigue trabajando para mejorarlo ;).
En las páginas que yo he echo me he inclinado más por el php + mysql (como este foro) a ver si los "dueños" de mis trabajos permiten postear alguno
eXcalibur
10-10-2002, 17:14
Es que yo trabajo con Visual Basic, y la verdad, mezclando eso, con un poco de html y entendiendo los objetos response y request, no tiene misterio.
ahora estoy haciendo una página en ASP con su menu administración y tal.
Por cierto, que tengo que colgar el código del foro que hice aunque no creo que sea mejor que el de Lázaro).
PD: Angeliyo, no dejes que te compren la propiedad interectual ;)
The_chacal... siento no poder ayudarte con lo del manual (yo aprendí por uno q me pasó fotocopiado un colega), pero supongo q por ahí habrá alguno (tb ayuda mirar en foros de asp). De todas formas, eXcalibur está en lo cierto, controlando algo de VB y "mezclando eso, con un poco de html y entendiendo los objetos response y request" la cosa es + facil.
Angeliyo... gracias x tus palabras;) , la verdad no creo q lo mejore pq simplemente lo hice para ver si me salía:D . Tb me gustaría trabajar con PhP y MySQL, y en cuanto esté un poco (bastante :) ) + puesto en C me pondré a ello, aunque solo sea aprender lo básico.
Un saludo a Tod@s.
eXcalibur
17-10-2002, 13:38
Aquí están los foros que hice hace ya algún tiempo, se me había olvidado subirlos
Es lo primero qu ehe tocado en ASP, es decir, no valen mucho
http://www.iespana.es/ForosDeHack/foros.zip
Les he pegado un vistazo y están muy bien eXcalibur (desde luego mejor q el mío), con cookies y todo. Gracias por colgarlo (la espera ha merecido la pena)
PD: recomiendo a tod@s l@s q estén interesad@s en .ASP q lo descarguen , el código tiene una claridad de la q mi foro carece.
Hasta Otra.
eXcalibur
18-10-2002, 12:23
Gracias Lazaro, me vas a hacer sonrojar :D :D :D
Pero bajo mi punto de vista, creo que está algo sucio, porque hice como tu, cuando los acabé, y vi que sabía hacerlo, ahí se quedaron XD
Seguro que me dejo conexiones abiertas y repito código, pero bueno, esto es código libre, que cada uno lo modifique como quiera
;)