Buscar en Asptutor     
Demo Tienda Virtual Tutorcar
 Navegacion->Inicio | Active Server Pages  

La web de los recursos y ejemplos de asp

Versión para imprimir

 

Alojado en:


urbe-networks.com

Recomienda esta pagina a un amigo

Servicios Gratuitos

Articulos relacionados

Utilizar GetRows()

Tienda Virtual - Carrito de compra

Messenger a través de BD en ASP

Miniaplicacion de comercio electronico

Objeto Datagrid de ASP.NET en ASP

Acotación de resultados

Formatos de fecha y hora (Función FormatDateTime)

Leer un fichero de texto del servidor

Configuracion de IIS

Como mostrar la IP, el navegador y el S.O.

Mostrar la fecha en formato gráfico

Descarga del tutorial de ASP

Formatos de fecha y hora (Función FormatDateTime)

Experiencias de un diseñador web

Subir Imágenes a una base de datos

Un Sistema de postales Virtuales en ASP (IV)


Enlaces recomendados

   

Tutorial ASP

Ejemplo de una aplicación de Foros
Este articulo ha sido leído 91.890 veces

Una aplicación de foros sencilla

Antes de liarte con el ejemplo, puedes darte una vuelta por Los foros de la cueva para que te hagas una idea del funcionamiento de la aplicación.

Este ejercicio, sin ser complicado, si requiere de una base minima de formación en HTML y ASP-ADO, asi que no te lies con él antes de haber echado un vistazo a TODOS los ejemplos anteriores.

La base de datos sobre la que esta elaborado es ACCESS y utiliza la alocación directa del Driver sin usar DSN (esta es la forma de declaración a la que te obligan la mayoria de los servidores gratuitos al no dejarte definir DSN's de sistema)

Definición de la base de datos

Nombre de la Base de Datos:  PyR.mdb

Consta de 3 tablas:

Tabla FOROS

forosforosdef.jpg (9393 bytes)

Tabla PREGUNTAS

forospreguntasdef.jpg (14461 bytes)

Tabla RESPUESTAS

forosrespuestasdef.jpg (12744 bytes)

 

Relaciones entre las tablas:

forosrelaciones.jpg (20279 bytes)
       

 

Modulos y paginas estaticas de la aplicación

La aplicación consta de 8 paginas asp y 1 html estatico. Se podria reducir el numero de modulos reutilizando parte del codigo de estos, pero por claridad he preferido plantearlo de esta forma.

addforo.asp Modulo de inclusión de un nuevo foro en la tabla Foros
addpregunta.asp Modulo de inclusión de una nueva pregunta en la tabla Preguntas
addrespuesta.asp Modulo de inclusión de una nueva respuesta en la tabla Respuestas
foros.asp Modulo de presentación, listado de todos los foros 
insertarforo.htm Formulario de inserción de un nuevo foro
insertarpregunta.asp Formulario para insertar una nueva pregunta
pyr.asp Modulo de visualización de todas las preguntas de un determinado foro
responder.asp Formulario para insertar una respuesta a una pregunta
vr.asp Modulo de visualización de todas las respuestas a una determinada pregunta.

addforo.asp

<%
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4%>
<%foro=request.form("foro")
if foro="" then %>

<html>

<head>
<title>Error al insertar pregunta</title>
</head>

<body bgcolor="#CCFFCC">

<p align="center"><img border="0" src="images/titulo.jpg"></p>

<p align="center">Ningun campo puede estar en blanco,
<a href="insertarforo.htm">
inténtalo otra vez</a></p>
</body>

</html>

<%else
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\ewebcity\db\pyr.mdb"))


set rs=createobject("ADODB.Recordset")
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic

rs.open "foros",conn
rs.addnew
rs("foro")=foro
rs.update
rs.close
response.redirect "foros.asp"
end if%>

 

addpregunta.asp

<%
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4%>
<%autor=request.form("autor")
nforo=request.form("nforo")
pregunta=request.form("pregunta")
if autor="" or pregunta="" or nforo="" then %>

<html>

<head>

<title>Error al insertar pregunta</title>
</head>

<body bgcolor="#CCFFCC">

<p align="center"><img border="0" src="images/titulo.jpg"></p>

<p align="center">Ningun campo puede estar en blanco,
<a href="insertarpregunta.asp?nforo=<%=nforo%>">
inténtalo otra vez</a></p>
</body>

</html>

<%else
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\ewebcity\db\pyr.mdb"))

set rs=createobject("ADODB.Recordset")
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic

rs.open "preguntas",conn
rs.addnew
rs("foro")=nforo
rs("autor")=autor
rs("fecha")=now()
rs("pregunta")=pregunta
rs.update
rs.close
donde="pyr.asp?nforo="&nforo
response.redirect donde
end if%>

addrespuesta.asp

<%
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4%>
<%nombre=request.form("nombre")
nforo=request.form("nforo")
respuesta=request.form("respuesta")
numero=request.form("numero")
if nombre="" or respuesta="" or numero="" or nforo="" then %>

<html>

<head>

<title>Error al insertar pregunta</title>
</head>

<body bgcolor="#CCFFCC">

<p align="center"><img border="0" src="images/titulo.jpg"></p>

<p align="center">Ningun campo puede estar en blanco,
<a href="responder.asp?numero=<%=numero%>&nforo=<%=nforo%>">
inténtalo otra vez</a></p>
</body>

</html>

<%else
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\ewebcity\db\pyr.mdb"))


set rs=createobject("ADODB.Recordset")
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic

rs.open "respuestas",conn
rs.addnew
rs("numero")=numero
rs("autor")=nombre
rs("fecha")=now()
rs("respuesta")=respuesta
rs.update
rs.close
donde="vr.asp?numero="&numero&"&nforo="&nforo
response.redirect donde
end if%>

foros.asp

<html>
<%sqltxt="select * from foros order by foro"
Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\ewebcity\db\pyr.mdb"))

set rs=createobject("ADODB.Recordset")
set rsr=createobject("ADODB.Recordset")
rs.open sqltxt,conn%>


<head>
<title>La Cueva de Smaug Foros</title>
</head>

<body bgcolor="#CCFFCC">



<p align="center"><img border="0" src="images/titulo.jpg"></p>

<p align="center">&nbsp;</p>
<div align="center">
<center>
<table border="0" width="575">
<tr>
<td colspan="2" align="center" bordercolor="#008000" bgcolor="#008000" width="565"><font face="Verdana" color="#FFFFFF" size="2">Los
Foros de la Cueva TEMAS LIBRES</font></td>

</tr>
<%if rs.eof then%>
<tr><td colspan="2" width="565" bgcolor="#FFCCCC">No hay foros disponibles</td></tr>
<%else
do while not rs.eof%>

<tr>
<td width="470" bgcolor="#FFCCCC"><font face="Verdana" size="1"><%=rs("foro")%></font></td>
<td width="89" bgcolor="#FFCCCC">
<p align="center"><font face="Verdana" size="1"><a href="pyr.asp?nforo=<%=rs("codigof")%>"><img border="0" src="images/ir.gif" WIDTH="13" HEIGHT="13"></a></font></p>
</td>


<%rs.movenext
        loop
rs.close
end if%>


</table>
</center>
</div>
<br>
<div align="center">
<center>
<table border="0" width="50%" bgcolor="#FFFFFF">
<tr>
<td width="30%" align="center"><font face="Verdana" size="1"><a href="insertarforo.htm">Crear
un nuevo Foro</a></font></td>
</tr>
</table>
</center>
</div>

</body>

</html>

Insertarforo.htm

<html>

<head>

<title>Crear un Nuevo Foro</title>
</head>

<body bgcolor="#CCFFCC">

<p align="center"><img border="0" src="images/titulo.jpg" width="450" height="75"></p>

<p align="center"><font face="Verdana">Crear un nuevo Foro</font></p>

<form method="POST" action="addforo.asp">
<table border="1" width="100%">
<tr>
<td width="100%" bgcolor="#008000"><font color="#FFFFFF">Nombre del Foro</font></td>
</tr>
<tr>
<td width="100%">
<p align="center"><input type="text" name="foro" size="50">
</p>
</td>
</tr>

</table>
<p align="center"><input type="hidden" name="nforo" value="<%=nforo%>">
<input type="submit" value="Enviar" name="B1"><input type="reset" value="Restablecer" name="B2"></p>
</form>

</body>

</html>

 

Insertarpregunta.asp

<%nforo=request.querystring("nforo")%>
<html>

<head>

<title>Insertar una pregunta</title>
</head>

<body bgcolor="#CCFFCC">

<p align="center"><img border="0" src="images/titulo.jpg"></p>

<p align="center"><font face="Verdana">Insertar una pregunta</font></p>

<form method="POST" action="addpregunta.asp">
<table border="1" width="100%">
<tr>
<td width="100%" bgcolor="#008000"><font face="Verdana" size="2" color="#FFFFFF">Pregunta</font></td>
</tr>
<tr>
<td width="100%">Pregunta insertada por: <input type="text" name="autor" size="20">
</td>
</tr>
<tr>
<td width="100%">
<p align="center"><textarea rows="5" name="pregunta" cols="50"></textarea></td>
</tr>
</table>
<p align="center"><input type="hidden" name="nforo" value="<%=nforo%>">
<input type="submit" value="Enviar" name="B1"><input type="reset" value="Restablecer" name="B2"></p>
</form>

</body>

</html>

pyr.asp

<%nforo=request.querystring("nforo")
if nforo="" then
response.redirect "foros.asp"
end if
sqltxt="select * from foros where codigof="&nforo
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\ewebcity\db\pyr.mdb"))
set rs=createobject("ADODB.Recordset")
set rsr=createobject("ADODB.Recordset")
rs.open sqltxt,conn
if rs.eof then
response.redirect "foros.asp" 'evitamos el error de foro borrado
end if
nombredelforo=rs("foro")
rs.close

sqltxt="select * from preguntas where foro="&nforo
rs.open sqltxt,conn%>

<html>

<head>
<title>La Cueva de Smaug&nbsp; (Foros)</title>
</head>

<body bgcolor="#CCFFCC">



<p align="center"><img border="0" src="images/titulo.jpg"></p>



<p align="center"><font face="Verdana"><font size="4">Foro: </font>&nbsp;<%=nombredelforo%>
<div align="center">
<center>
<table border="0" width="575">
<tr>
<td width="62" align="center" bordercolor="#008000" bgcolor="#008000"><font face="Verdana" size="1" color="#FFFFFF">Fecha</font></td>
<td width="254" align="center" bordercolor="#008000" bgcolor="#008000"><font face="Verdana" size="1" color="#FFFFFF">Pregunta</font></td>
<td align="center" bordercolor="#008000" bgcolor="#008000" width="82"><font face="Verdana" size="1" color="#FFFFFF">Numero
de Respuestas</font></td>
<td width="94" align="center" bordercolor="#008000" bgcolor="#008000">
<p align="center"><font face="Verdana" size="1" color="#FFFFFF">Ver
Respuestas</font></td>
<td width="49" align="center" bordercolor="#008000" bgcolor="#008000">
<p align="center"><font face="Verdana" size="1" color="#FFFFFF">Responder</font></p>
</td>
</tr>
<%if rs.eof then%>
<tr><td colspan=5 width="565" bgcolor="#FFCCCC">No hay preguntas</td></tr>
<%else
do while not rs.eof%>

<tr>
<td width="62" bgcolor="#FFCCCC"><font face="Verdana" size="1"><%=formatdatetime(rs("fecha"),2)%></font></td>
<td width="254" bgcolor="#FFCCCC" valign="middle">
<font face="Verdana" size="1"><%=rs("pregunta")%></font></td>
<%sqltxt2="select count(*) from respuestas where numero ="&rs("numero")
rsr.open sqltxt2,conn %>

<td width="82" bgcolor="#FFCCCC">
<p align="center"><font face="Verdana" size="1"><%=rsr(0)%></font></td>

<td width="94" valign="middle" align="center" bgcolor="#FFCCCC">
<%if rsr(0)<> 0 then%>
<a href="vr.asp?numero=<%=rs("numero")%>&nforo=<%=nforo%>"><font face="Verdana" size="1"><img border="0" src="images/ir.gif" width="13" height="13"></font></a>
<font face="Verdana" size="1">
<%else%>
&nbsp; <%end if
rsr.close%>

</font>
</td>
<td width="49" align="center" bgcolor="#FFCCCC">
<p align="center"><font face="Verdana" size="1"><a href="responder.asp?numero=<%=rs("numero")%>&amp;nforo=<%=nforo%>"><img border="0" src="images/ir.gif" width="13" height="13"></a></font></p>
</td>
</tr>
<%rs.movenext
loop
rs.close
end if%>

</table>
</center>
</div>
<p align="center">&nbsp;</p>
<div align="center">
<center>
<table border="0" width="50%" bgcolor="#FFFFFF">
<tr>
<td width="30%" align="center"><font face="Verdana" size="1"><a href="insertarpregunta.asp?nforo=<%=nforo%>">Insertar
una pregunta</a></font></td>
</tr>
</table>
</center>
</div>
<br>
<div align="center">
<center>
<table border="0" width="50%" bgcolor="#FFFFFF">
<tr>
<td width="30%" align="center"><font face="Verdana" size="1"><a href="foros.asp">Volver a Foros</a></font></td>
</tr>
</table>
</center>
</div>
</body></html>

 

responder.asp

<%numero=request.querystring("numero")
nforo=request.querystring("nforo")
if numero="" or nforo="" then
response.redirect "pyr.asp"
end if
sqltxt="select * from preguntas where numero="&numero
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\ewebcity\db\pyr.mdb"))

set rs=createobject("ADODB.Recordset")
rs.open sqltxt,conn%>


<html>

<head>
<title>Responder a una pregunta</title>
</head>

<body bgcolor="#CCFFCC">

<p align="center"><img border="0" src="images/titulo.jpg"></p>

<p align="center"><font face="Verdana">Responder
a una pregunta</font></p>
<table border="0" width="100%">
<tr>
<td width="100%" bgcolor="#008000"><font face="Verdana" color="#FFFFFF" size="2">Pregunta
realizada por <%=rs("autor")%> el dia <%=formatdatetime(rs("fecha"),2)%></font></td>
</tr>
<tr>
<td width="100%" bgcolor="#FFFFFF"><%=rs("pregunta")%></td>
<%rs.close%>
</tr>
</table>

<p>&nbsp;</p>
<form method="POST" action="addrespuesta.asp?nforo=<%=nforo%>">
<table border="1" width="100%">
<tr>
<td width="100%" bgcolor="#008000"><font face="Verdana" size="2" color="#FFFFFF">Respuesta</font></td>
</tr>
<tr>
<td width="100%">Respuesta elaborada por: <input type="text" name="nombre" size="20">
</td>
</tr>
<tr>
<td width="100%">
<p align="center"><textarea rows="5" name="respuesta" cols="50"></textarea></td>
</tr>
</table>
<p align="center"><input type="hidden" name="numero" value="<%=numero%>">
<input type="hidden" name="nforo" value="<%=nforo%>">
<input type="submit" value="Enviar" name="B1"><input type="reset" value="Restablecer" name="B2"></p>
</form>

</body>

</html>

vr.asp

<%numero=request.querystring("numero")
nforo=request.querystring("nforo")
if numero="" then
response.redirect "pyr.asp"
end if
sqltxt="select * from preguntas where numero="&numero
sqltxt2="select * from respuestas where numero="&numero
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\ewebcity\db\pyr.mdb"))

set rs=createobject("ADODB.Recordset")
rs.open sqltxt,conn%>

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Respuestas a una pregunta</title>
</head>

<body bgcolor="#CCFFCC">

<p align="center"><img border="0" src="images/titulo.jpg"></p>

<%if rs.eof then
response.write "no hay respuestas para esta pregunta"

else%>


<table border="1" width="100%">
<tr>
<td width="100%" bgcolor="#008000"><font face="Verdana" color="#FFFFFF" size="2">Pregunta
realizada por</font><font face="Verdana" color="#00FFFF" size="2"> <%=rs("autor")%>
</font><font face="Verdana" color="#FFFFFF" size="2">el dia</font><font face="Verdana" color="#00FFFF" size="2"> <%=formatdatetime(rs("fecha"),2)%></font></td>
</tr>
<tr>
<td width="100%" bgcolor="#FFFFFF"><%=rs("pregunta")%></td>
<%rs.close%>
</tr>
</table>
<%rs.open sqltxt2,conn%>
<%if not rs.EOF then
nrespu=0%>

<p>&nbsp;</p>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<%do while not rs.EOF
nrespu=nrespu+1%>

<tr>
<td width="25%" bgcolor="#008000"><font face="Verdana" size="2"><font color="#FFFFFF">Respuesta nº </font><font color="#FFFF00"><%=nrespu%></font></font></td>
<td width="42%" bgcolor="#008000"><font face="Verdana" size="2"><font color="#FFFFFF">autor&nbsp; </font><font color="#FFFF00"><%=rs("autor")%></font></font></td>
<td width="33%" bgcolor="#008000"><font face="Verdana" size="2"><font color="#FFFFFF">el dia </font><font color="#FFFF00"><%=formatdatetime(rs("fecha"),2)%></font></font></td>
</tr>
<tr>
<td width="100%" bgcolor="#FFFFFF" colspan="3"><%=rs("respuesta")%>
</td>
</tr>
<%rs.movenext
loop
end if%>

</table>

<p>&nbsp;</p>

<div align="center">
<center>
<table border="0" width="61%">
<tr>
<td width="50%" bgcolor="#FFFFFF">
<p align="center"><a href="responder.asp?numero=<%=numero%>&nforo=<%=nforo%>"><font face="Verdana" size="1">Insertar
Respuesta</font></a></td>
<td width="50%" bgcolor="#FFFFFF">
<p align="center"><font face="Verdana" size="1"><a href="pyr.asp?nforo=<%=nforo%>">Volver
al Foro</a></font></td>
</tr>
</table>
</center>
</div>
<%end if%>

</body></html>

Atras


 

¿Estas empezando y este articulo es muy complejo para tí?
Empieza por el principio, visita Ejemplos Básicos

Puedes obtener un listado completo de todos los artículos y ejemplos de ASP en http://www.asptutor.com/asp/todoslosarticulos.asp
 

Valora este articulo   Malo Excelente  
194 usuarios han valorado este articulo. Valoracion media:

Nota: Para cualquier consulta u opinión sobre este articulo puedes usar los foros

 

 

AspTutor lo hacemos entre todos ¿Como vas a colaborar hoy?


Google

 

Descargas de manuales¦ Ejemplos de código ¦ Artículos mas visitados ¦ Envía tu articulo ¦ Foros ¦
  Libro de visitas ¦Crea un enlace con ASPTutor 
 

    © 2001-Hasta hoy  Pedro Rufo Martín  contactar