Foros del Web » Programando para Internet » ASP Clásico »

Comentarios para sistema de noticias (otra vez)

Estas en el tema de Comentarios para sistema de noticias (otra vez) en el foro de ASP Clásico en Foros del Web. Hola, tengo un sistema de noticias y me gustaría saber qué puedo hacer para que los visitantes puedan añadir comentarios a las noticias. Se supone ...
  #1 (permalink)  
Antiguo 19/11/2007, 16:08
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 17 años, 5 meses
Puntos: 0
Comentarios para sistema de noticias (otra vez)

Hola, tengo un sistema de noticias y me gustaría saber qué puedo hacer para que los visitantes puedan añadir comentarios a las noticias. Se supone que la web que muestre la noticia debe tener añadido un formualrio de envio de respuesta , lo cual va a ir a una tabla de una base de datos que está relacionada con la id de la noticia. Pero no sé cómo relacionarlas. ¿Qué parámetros tengo que poner en la base datos para relacionarlas? y en la página de asp. Gracias
  #2 (permalink)  
Antiguo 19/11/2007, 21:23
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Re: Comentarios para sistema de noticias (otra vez)

disculpas... ¿sabés relacionar dos tablas mediante un campo identificador?
__________________
...___...
  #3 (permalink)  
Antiguo 20/11/2007, 04:34
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Comentarios para sistema de noticias (otra vez)

Mmmm, pues no. ¿Debería poner el campo "id" (que es el de la noticia) en la bd de los comentarios? Pero es autonumber y sólo puedo poner uno por tabla y si pongo el id del comentario en autonumber ya no puedo poner el de la noticia... vamos, que no sé cómo hacerlo
  #4 (permalink)  
Antiguo 20/11/2007, 10:37
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Re: Comentarios para sistema de noticias (otra vez)

- tabla_noticias:
id_noticia (autonumérico) *
titulo (text)
... otros campos necesarios

- tabla_comentarios:
id_comentario (autonumérico)
id_noticia (numérico) *
... otros campos necesarios

Obviamente los marcados con asteriscos son los campos a relacionar.
__________________
...___...
  #5 (permalink)  
Antiguo 20/11/2007, 11:07
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Comentarios para sistema de noticias (otra vez)

Gracias, pero ahora cómo hago para sacar de la bd la noticia y el comentario en la misma página... Si tengo esto para llamar a la bd
<%
Set con = Server.CreateObject("ADODB.Connection")
Con.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Server.MapPath("david.mdb"))
sql = "SELECT * FROM david2 WHERE id=" & Request.QueryString("id") & ""

'Ejecuta un sentencia SQL de consulta
'Recorre todas las filas del resultado
set result = Con.Execute(sql)
%>

Suponiendo que he llamado comentariod a la tabla de los comentarios... tengo que meter el id_comentario por algún lado o cómo. Gracias!!
  #6 (permalink)  
Antiguo 20/11/2007, 12:29
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 7 meses
Puntos: 2
Re: Comentarios para sistema de noticias (otra vez)

Cita:
Iniciado por werewe Ver Mensaje
Gracias, pero ahora cómo hago para sacar de la bd la noticia y el comentario en la misma página... Si tengo esto para llamar a la bd
<%
Set con = Server.CreateObject("ADODB.Connection")
Con.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Server.MapPath("david.mdb"))
sql = "SELECT * FROM david2 WHERE id=" & Request.QueryString("id") & ""

'Ejecuta un sentencia SQL de consulta
'Recorre todas las filas del resultado
set result = Con.Execute(sql)
%>

Suponiendo que he llamado comentariod a la tabla de los comentarios... tengo que meter el id_comentario por algún lado o cómo. Gracias!!

Hola.
Para traer la noticia y los comentarios abajo vas a necesitar hacer dos consultas.
Ambas condicionadas según el id de noticia y ya!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #7 (permalink)  
Antiguo 20/11/2007, 14:51
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Comentarios para sistema de noticias (otra vez)

Ya siento ser tan inútil pero cómo hago para que estén condicionadas las dos según la id de la noticia y no me dé error...
  #8 (permalink)  
Antiguo 20/11/2007, 15:04
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 7 meses
Puntos: 2
Re: Comentarios para sistema de noticias (otra vez)

No te sientas inútil, a todos nos han pasado cosas similares alguna vez.

La idea es esta:

<%
Set con = Server.CreateObject("ADODB.Connection")
Con.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Server.MapPath("david.mdb"))
sql = "SELECT * FROM david2 WHERE id=" & Request.QueryString("id") & ""


'Ejecuta un sentencia SQL de consulta
'Recorre todas las filas del resultado
set result1 = Con.Execute(sql)
set result2 = Con.Execute(sql2) 'sql2 debe llamar a los detalles de la noticia where idnoticia="&Request.QueryString("id")
%>

Obviamente, teniendo en cuenta que tenés armadas las tablas como te sugirieron arriba.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #9 (permalink)  
Antiguo 21/11/2007, 05:16
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Comentarios para sistema de noticias (otra vez)

Me sigue dando error... a ver, he hecho esto:

<%Set con = Server.CreateObject("ADODB.Connection")
Con.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Server.MapPath("david.mdb"))
sql = "SELECT * FROM david2 WHERE id=" & Request.QueryString("id") & ""
sql2 = "SELECT * FROM comentariod WHERE id_comentario=" & Request.QueryString("id") & ""
'Ejecuta un sentencia SQL de consulta
'Recorre todas las filas del resultado
set result1 = Con.Execute(sql)
set result2 = Con.Execute(sql2)
%>

Que creo que es lo que dijiste que hiciera (he cambiado algo, porque el where de david2, es la id de la noticia... bueno, el caso es que ahora eso no me da error sino unas lineas más abajo que es la parte que muestra la noticia... algo que antes no me daba error, es decir:

td width="568" height="442" valign="top"><p><font face="Arial" size="5" color="#000000"><%=result("noticia")%></font></p>
<p><b><font face="Arial" size="2" color="#009933"><strong><%=result("autor")%></strong></font></b></p>
<p><font color=""#000000""size=2>•<%=result("fecha")%>
<p><font face="Arial" size="2"><%=result("noticia")%></font></p>

Esa es la parte que me da error ahora, pero no lo entiendo. ¿He hecho algo mal al principio? ¿tengo que hacer alguna otra cosa más? Gracias
  #10 (permalink)  
Antiguo 21/11/2007, 07:04
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 7 meses
Puntos: 2
Re: Comentarios para sistema de noticias (otra vez)

Hola!
Bueno, el tema es: El id que mandás por QueryString es el de la noticia o el del comentario? porque estás condicionando las dos tablas por el mismo id, e indicando que en una ese id pertenece al comentario y en la otra a la noticia.
Cerciorate bien y la idea es: con el id de noticia debes traer los datos de las dos tablas, pero en las dos tablas debes tener cargado el id de noticia.
En la de comentarios se va a repetir, y lo que va a darle unicidad al comentario es el id de comentario que también debe estar.
Se entiende? bueno, espero que si =)
Saludos y suerte con eso!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #11 (permalink)  
Antiguo 21/11/2007, 08:20
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Comentarios para sistema de noticias (otra vez)

Sí, sí, si creo que lo he entendido, el problema es que algo hago mal porque no funciona...
El id que mando por el QueryString es el de la noticia y las tablas las tengo hechas como, o eso creo, me dijo Al Zuwaga. El asunto es que después de añadir lo de sql2... el error me ha pasado a otro lado, que es la parte que recoge los datos de titula, autor, noticia.
  #12 (permalink)  
Antiguo 21/11/2007, 08:59
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Comentarios para sistema de noticias (otra vez)

Por cierto, este es el error que me da ahora:

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'result'

/werewe/dopinion.asp, line 50
  #13 (permalink)  
Antiguo 21/11/2007, 09:32
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 7 meses
Puntos: 2
Re: Comentarios para sistema de noticias (otra vez)

ya lo veo...
<%=result("noticia")%> deberías cambiarlo por result1("noticia")
y para mostrar los comentarios, haces referencia a result2

Ahora son dos los objetos recordset que tenés cargados en memoria y que tenés que mostrar en la página.
Presta atención a esos detalles.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #14 (permalink)  
Antiguo 21/11/2007, 14:35
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Comentarios para sistema de noticias (otra vez)

Joder, tienes razón. Gracias. Ahora tengo una última consulta, ¿cómo puedo usar el BOF y el EOF? Es que me da error...
Tengo algo como esto
<% if result2.EOF And result2.BOF Then
"No hay come"

End If %>

Pero es evidente que no es así. ¿Cómo es? Es que no tengo ni idea...
  #15 (permalink)  
Antiguo 21/11/2007, 14:57
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 7 meses
Puntos: 2
Re: Comentarios para sistema de noticias (otra vez)

Bueno! me alegra que vayas llegando a buen puerto!
Lo del EOF y BOF te da error porque la comparación es una contradicción. Estás intentando que result2 sea Fin de Archivo y Principio de Archivo al mismo tiempo. Es una contradicción.
El EOF Representa End of File, o para el caso, fin del recordset
El BOF Representa Begin of File, o Principio del recordset. La F debe ser por analogía a tratamiento de archivos :P
result2 es EOF cuando terminaste de recorrer el objeto.
result2 es BOF cuando la consulta no devuelve resultados.

:) Suerte!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #16 (permalink)  
Antiguo 21/11/2007, 15:32
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Comentarios para sistema de noticias (otra vez)

Mmmm, no entendí. Sería entonces, si terminaste de recorrer el objeto y no encontraste resultados entonces... Y eso es lo que he puesto yo, ¿no?
Lo siento pero no te he entendido
Y es que he probado varias formas de poner el código y ná de ná.
Por cierto, gracias por todo, eh, que si no fuera por ti no habría avanzado nada
  #17 (permalink)  
Antiguo 21/11/2007, 16:34
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Re: Comentarios para sistema de noticias (otra vez)

Entendamos el codigo
Cita:
Iniciado por werewe Ver Mensaje
.....
<% if result2.EOF And result2.BOF Then
"No hay come"
End If %>
Pero es evidente que no es así. ¿Cómo es? Es que no tengo ni idea...
tu tienes esto:
Cita:
if result2.EOF And result2.BOF Then
que esta mal, cosa que te explicaba verinchi
Cita:
Iniciado por verinchi Ver Mensaje
.....
Lo del EOF y BOF te da error porque la comparación es una contradicción. Estás intentando que result2 sea Fin de Archivo y Principio de Archivo al mismo tiempo.
puedes ponerlo asi
Cita:
if result2.EOF or result2.BOF Then
y preguntarias si es el principio, o el final

un ejemplo de como evitarte este tipo de problemas es solo preguntar si es el final
Cita:
Código PHP:
set Buscar=conexion.execute(BuscarSQL)
'VERIFICAMOS QUE NO TENGAMOS ERRORES DE CONSULTA
if Err=0 then
    '
VERIFICAMOS QUE NO SEA EL FINAL DE LA TABLA
    
if Buscar.EOF=FALSE then
        
'EJECUTAMOS NUESTRA ACTUALIZACION
        ArregloBuscar=Buscar.GetRows
        response.Write "<table border=1>"
        for I = 0 to UBound(ArregloBuscar,2) 
            '
Abrimos una nueva fila
            response
.Write "<tr><td>" "</td>"
            'Desde el primero hasta el último "campo"...
            for J = 0 to Ubound(ArregloBuscar, 1)
                '
Imprimo una celda para cada campo
                response
.Write "<td>"
                
if isnull(ArregloBuscar(JI)) then
                    response
.Write "&nbsp;"
                
else
                    
response.Write ArregloBuscar(JI)
                
end if
                
response.Write "</td>"
                
response.Flush()
            
next
            Response
.Write("</tr>")
        
next
        response
.Write "</table>"
    
else
        
'EN CASO DE NO ENCONTRAR EL ID
        response.Write "Error. No se encontro parametro a consultar"
    end if
else
    '
EN CASO DE ERROR DE ESTRUCTURA DE LA BUSQUEDA
    response
.Write "Error. No se puede realizar. "&BuscarSQL
end 
if 
esta base puede servirte para otras operaciones de consulta
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #18 (permalink)  
Antiguo 22/11/2007, 06:33
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Comentarios para sistema de noticias (otra vez)

Mmmm, lo he cambiado y ahora me da este erro:

Microsoft VBScript compilation error '800a0400'

Expected statement

/werewe/dopinion.asp, line 13

"No hay come"
^

Shiryu tu ejemplo tiene buena pinta pero es que no sé ni por dónde empezar para ponerlo... El caso es que el código que pongo o está incompleto o no lo pongo donde debo... a qué e debe? Gracias.
  #19 (permalink)  
Antiguo 22/11/2007, 07:37
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 7 meses
Puntos: 2
Re: Comentarios para sistema de noticias (otra vez)

Werewe, yo te recomendaría que trates de probar el código que te pasó Shiryu ya que es muy bueno.
Además, si ahora, después de haberlo modificado algunas veces, te da error, poné la línea de código donde marca el error o el código nuevamente para que podamos tener una idea de cuál es el error. Por lo que se ve, debe faltarte alguna comilla o tenés un if sin cerrar, porque el error dice que está esperando una sentencia.

De todas formas, aunque sea en una página extra (test.asp) probá el código de Shiryu y fijate como funciona para tener una idea mas clara de lo que estás haciendo.

Saludos!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #20 (permalink)  
Antiguo 23/11/2007, 05:33
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Comentarios para sistema de noticias (otra vez)

Ains, hola de nuevo, sigo con lo mismo... A ver, este es el código asp de la página (en negrita la parte de eof, bof):

<%Set con = Server.CreateObject("ADODB.Connection")
Con.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Server.MapPath("david.mdb"))
sql = "SELECT * FROM david2 WHERE id=" & Request.QueryString("id") & ""
sql2 = "SELECT * FROM comentariod WHERE id_comentario=" & Request.QueryString("id") & ""
'Ejecuta un sentencia SQL de consulta
'Recorre todas las filas del resultado
set result1 = Con.Execute(sql)
set result2 = Con.Execute(sql2)
%>

<% if result2.EOF or result2.BOF Then
"No hay comentarios"%>
<%End If %>

<td width="568" height="442" valign="top"><p><font face="Arial" size="5" color="#000000"><%=result1("titular")%></font></p>
<p><b><font face="Arial" size="2" color="#009933"><strong><%=result1("autor")%></strong></font></b></p>
<p><font color=""#000000""size=2>•<%=result1("fecha")%>
<p><font face="Arial" size="2"><%=result1("noticia")%></font></p>

<td width="568" height="442" valign="top"><p><font face="Arial" size="5" color="#000000"><%=result2("titulo")%></font></p>
<p><b><font face="Arial" size="2" color="#009933"><strong><%=result2("nombre")%></strong></font></b></p>
<p><font color=""#000000""size=2>•<%=result2("fecha")%>
<p><font face="Arial" size="2"><%=result2("comentario")%></font></p>

Y el error que me da es:

Microsoft VBScript compilation error '800a0400'

Expected statement

/werewe/dopinion.asp, line 13

"No hay comentarios"
^

Vamos, el mismo de antes pero es que no sé dónde puede falta el cierre de un if o una coma... Luego he probado el código de Shiryu y me sale el error inicial

ADODB.Field error '80020009'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/werewe/dopinion.asp, line 0

En este caso supongo que habré cambiado algo que no debía (bueno, hay un "end if" que no viene precedido de un if, igual eso tiene algo que ver)... el código cambiado:

<%if Err=0 then
'VERIFICAMOS QUE NO SEA EL FINAL DE LA TABLA
if result2.EOF=FALSE then
'EJECUTAMOS NUESTRA ACTUALIZACION
Arregloresult2=result2.GetRows
response.Write "<table border=1>"
for I = 0 to UBound(Arregloresult2,2)
'Abrimos una nueva fila
response.Write "<tr><td>" & i & "</td>"
'Desde el primero hasta el ltimo "campo"...
for J = 0 to Ubound(Arregloresult2, 1)
'Imprimo una celda para cada campo
response.Write "<td>"
if isnull(Arregloresult2(J, I)) then
response.Write "&nbsp;"
else
response.Write Arregloresult2(J, I)
end if
response.Write "</td>"
response.Flush()
next
Response.Write("</tr>")
next
response.Write "</table>"
else
'EN CASO DE NO ENCONTRAR EL ID
response.Write "Error. No se encontro parametro a consultar"
end if
else
'EN CASO DE ERROR DE ESTRUCTURA DE LA BUSQUEDA
response.Write "Error. No se puede realizar. "&result2SQL
end if %>

Gracias por todo.
  #21 (permalink)  
Antiguo 23/11/2007, 11:50
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Re: Comentarios para sistema de noticias (otra vez)


Cita:
<% if result2.EOF or result2.BOF Then
response.write "No hay comentarios"%>
<%End If %>
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #22 (permalink)  
Antiguo 23/11/2007, 12:03
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Comentarios para sistema de noticias (otra vez)

No, si pongo el response.write me sale el error del principio

ADODB.Field error '80020009'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/werewe/dopinion.asp, line 0

Asi que no sé, sigo atascado
  #23 (permalink)  
Antiguo 23/11/2007, 12:04
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Comentarios para sistema de noticias (otra vez)

De hecho, ahora que me fijo, me sale lo de "no hay comentarios" pero no dónde debería sino donde le da la gana (perdido encima de la cabecera) y persiste el error de
ADODB.Field error '80020009'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/werewe/dopinion.asp, line 0
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:01.