| |||
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 |
| |||
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 ![]() |
| |||
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!! |
| ||||
Re: Comentarios para sistema de noticias (otra vez) Cita:
Iniciado por werewe ![]() 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! |
| ||||
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. |
| |||
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 |
| ||||
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! |
| |||
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. |
| |||
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 |
| ||||
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. |
| |||
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... |
| ||||
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! |
| |||
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 ![]() |
| ||||
Re: Comentarios para sistema de noticias (otra vez) Entendamos el codigo Cita: tu tienes esto: Cita: que esta mal, cosa que te explicaba verinchiif result2.EOF And result2.BOF Then Cita: puedes ponerlo asi Cita: y preguntarias si es el principio, o el finalif result2.EOF or result2.BOF Then un ejemplo de como evitarte este tipo de problemas es solo preguntar si es el final Cita: esta base puede servirte para otras operaciones de consultaCódigo PHP: ![]()
__________________ "Eres parte del problema, parte de la solucion o parte del paisaje" Un Saludo desde Desierto de Altar, Sonora, MX. Shiryu_libra |
| |||
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. |
| ||||
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! |
| |||
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 " " 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. |
| ||||
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 |
| |||
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 ![]() |
| |||
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 |