PDA

Ver la versión completa : Foro ASP



Lazaro
08-10-2002, 18:41
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)

Lazaro
08-10-2002, 18:43
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"]
 

Lazaro
08-10-2002, 18:45
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

%]

Lazaro
08-10-2002, 18:47
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"]
 

jocanor
08-10-2002, 18:49
k kieres decir con todo esto, a k foro t refieres????

Lazaro
08-10-2002, 18:49
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")
%]

Lazaro
08-10-2002, 18:52
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="."]

Lazaro
08-10-2002, 18:55
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="."]

Lazaro
08-10-2002, 19:03
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....

Lazaro
08-10-2002, 19:18
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

Lazaro
08-10-2002, 19:23
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 ;)

Lazaro
10-10-2002, 18:13
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

Lazaro
17-10-2002, 19:20
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
;)