Foros del Web » Programando para Internet » PHP »

Se me repiten comentarios

Estas en el tema de Se me repiten comentarios en el foro de PHP en Foros del Web. Hola, decidi hacerle sistema de comentarios a mi noticia, el problema es que no me va :S Si pudierais ayudarme, mira este es el formulario ...
  #1 (permalink)  
Antiguo 10/05/2009, 04:20
Avatar de fcdragons  
Fecha de Ingreso: agosto-2008
Ubicación: echo $_REQUEST['ubicacion'];
Mensajes: 474
Antigüedad: 15 años, 8 meses
Puntos: 13
Se me repiten comentarios

Hola, decidi hacerle sistema de comentarios a mi noticia, el problema es que no me va :S
Si pudierais ayudarme, mira este es el formulario patra enviar el comentario

add-comentario.php
Código PHP:
<?php
// incluimos el archivo de conexion
include ('db-cnx.php');
// recibimos el formulario
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
// comprobamos que el formulario no envie campos vacios
if(!empty($_POST['comWeb']) && $_POST['comTexto']){
// creamos las variables y les asignamos los valores a insertar
$comWeb $_POST['comWeb'];
$comTexto $_POST['comTexto'];
$comAvatar $_COOKIE['uavatar'];
$comPosteador $_COOKIE['unick'];
$comFecha date("d/m/Y");
$comHora date("H:i:s/A");
$comTexto htmlspecialchars($comTexto);
$comWeb htmlspecialchars($comWeb);
// hacemos el INSERT en la BD
$sqlInsertNot mysql_query("INSERT INTO sn_comentarios (comWeb, comTexto, comAvatar, comFecha, comPosteador, comHora)
VALUES ('$comWeb', '$comTexto', '$comAvatar', '$comFecha', '$comPosteador', '$comHora')"
,
$db_link) or die(mysql_error());
// enviamos un mensaje de exito
echo "Los datos fueron gurdados correctamente. <a href='/news/index.php'>Volver a la pagina principal</a>";
}
else{
// si el formulario envia algun campo vacio
// enviamos un mensaje de error
echo "Debe llenar todos los campos del formulario";
}
}
?>
<form name="comentarios" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<b>Sitio web:</b><br />
<input type="text" name="comWeb" maxlength="255" size="40" /><p>
<br />
<b>Comentario:</b><br />
<textarea name="comTexto" cols="40" rows="10"></textarea>
<p>
<input type="submit" value="Enviar" name="enviar" />
</form>


Y este es el codigo que hace que se muestren los comentarios
index.php
Código:
<?php echo "<h1>$titulo</h1>"; ?>
<?php include('db-cnx.php'); ?>

<?php include('list-categoria.php'); ?>
<p>
<table border="0" cellpadding="0" cellspacing="0" bordercolor="#000000" class="tableNoticias"> 
    <?php 
	// verificamos si se ha enviado
// alguna variable via GET
function parrafin($string) { 
$article = explode("\n", $string);  
$parrafo = $article[0]; 
 return( $parrafo );
 }
if(isset($_GET['id']) && $_GET['categoria']){
// asignamos los valores
// a las variables que usaremos
$cat_ID = $_GET['id'];
$categoria = $_GET['categoria'];
$clausula = "WHERE notCategoriaID = '$cat_ID'";
// tambien armamos el titular de la pagina
$titulo = "Noticias en la categoria $categoria";
}else{
// de lo contrario
// el titulo sera general
$titulo = "Todas las noticias";
}
if(isset($_GET['id']) && $_GET['comentario']){
// asignamos los valores
// a las variables que usaremos
$com_ID = $_GET['id'];
$categoria = $_GET['categoria'];
$clausula = "WHERE notComentarioID = '$com_ID'";
// tambien armamos el titular de la pagina
$titulo2 = "Noticias en la categoria $categoria";
}else{
// de lo contrario
// el titulo sera general
$titulo2 = "Todas las noticias";
}
if(isset($_GET['id']) && $_GET['noticia']){
// asignamos los valores
// a las variables que usaremos
$not_ID = $_GET['id'];
$noticia = $_GET['noticia'];
$rowNot[notFecha] = date("Y-m-d");
$clausula = "WHERE not_ID = '$not_ID'";
// tambien armamos el titular de la pagina
$con2 = "$rowNot[notTexto]";
}else{
// de lo contrario
// el titulo sera general
$con3 = "$string";
}
// armamos la consulta
$sqlQueryNot = mysql_query("SELECT notTitulo, notTexto, not_ID, notImagen, notFecha, notPosteador, notHora, comTexto, comHora, comFecha, comPosteador, comWeb, comAvatar FROM sn_noticias, sn_comentarios
$clausula", $db_link)
or die(mysql_error());
	require_once 'PHPPaging.lib.php';
     
        // Apertura de la conexión a la base de datos e Inclusión del script 
         
        // Instanciamos el objeto 
        $paging = new PHPPaging; 
         
        // Indicamos la consulta al objeto  
        $paging->agregarConsulta("SELECT * FROM sn_noticias, sn_comentarios ORDER BY notFecha, notHora, comFecha, comHora DESC"); 
         
        // Ejecutamos la paginación 
        $paging->ejecutar();   
         
        // Imprimimos los resultados, para esto creamos un ciclo while 
        // Similar a while($datos = mysql_fetch_array($sql)) 
        while($datos = $paging->fetchResultado() && $rowNot = mysql_fetch_array($sqlQueryNot)) {  
            echo "<tr>";  
            echo "<td rowspan='4'><img src='".$rowNot['notImagen']."' class='imagenNoticia'></td>";  
            echo "<td><h1>".$rowNot['notTitulo']."</h1></td></tr>";  
            echo "<tr><td> Enviado el ".$rowNot['notFecha']." a las ".$rowNot['notHora']." por ".$rowNot['notPosteador']."</td></tr>";
            echo "<tr><td>".BBcode(nl2br(substr($rowNot['notTexto'], 0, 150)))."</td></tr>"; 
			echo "<tr><td><a href='mas.php?not_ID=".$rowNot['not_ID']."&categoria=".$rowNot['notCategoriaID']."' title=".$rowNot['notTitulo'].">Seguir leyendo ".substr($rowNot['notTitulo'], 0, 10)."...</a></td>";
			echo "</tr><tr><td colspan='2'><h1>Comentarios</h1><br></tr><tr><td><a href='".$rowNot['comWeb']."'>".$rowNot['comPosteador']."</a><p>Enviado el ".$rowNot['comFecha']." a las ".$rowNot['comHora']."<p>".BBcode(nl2br($rowNot['comTexto']))."</td></tr><tr><td colspan='2'><a href='add-comentario.php'>A&ntilde;adir un comentario</a></td>";
            echo "</tr>";
        }  
     
    ?> 
    </table>
    <?php 
    // Imprimimos la barra de navegación 
    echo "<p><b>Navegación</b>: ".$paging->fetchNavegacion(); 
?>

Ademas los datos no se guarda en mysql :(

La parte de comentarios esta marcada en rojo :S

Aver si me pueden ayudar, envio el comentario pero no se me ve
__________________
SumarioWeb
@sumarioweb
BasicNews

Última edición por fcdragons; 10/05/2009 a las 08:37
  #2 (permalink)  
Antiguo 10/05/2009, 04:43
Avatar de delarub  
Fecha de Ingreso: mayo-2009
Mensajes: 20
Antigüedad: 15 años
Puntos: 2
Respuesta: Sistema comentarios no me va :S

El problema está en el formulario. Revisa los campos que has puesto ya que no coinciden con los que el archivo PHP busca.

Suerte
  #3 (permalink)  
Antiguo 10/05/2009, 05:10
Avatar de fcdragons  
Fecha de Ingreso: agosto-2008
Ubicación: echo $_REQUEST['ubicacion'];
Mensajes: 474
Antigüedad: 15 años, 8 meses
Puntos: 13
Ya esta, lo malo es que ahora, el mismo comentario se me muestra en todas las noticias, aver si encuentro como arreglarlo, ahora cree una nueva tabla para poner la fila que sean de comentarios, es decir cree una nueva tabla llamada sn_comentarios, y ahora estan ahi los campos comTexto, comWeb, etc, antes estaban en la misma tabla que en la de las noticias.

Mira actualizo el codigo del 1r post

y cuando pongo mas de 1 comentario se me van alternando en las noticias :S

y aveces ni se me ven los comentarios que envio :S



He pensado en hacer que en una pagina se muestren los comentarios con su respectivo ID, pero nose si va a funcionar.
Con las noticias hacer eso me funciona, asique supongo que tambien funcionara con los comentarios :S

Pero, como puedo hacer una consulta en la base de datos y decir en numero los comentarios que hay, por ejemplo, un link que lleve a los comentarios.
y ponga
Comentarios(5)

El 5 es el numero de comentarios que hay

Nose si em explico, sino me intentare explicar mejor S:

me podeis ayudar por favor :S esque ya que es mi ultimo dia de fiesta, y es lo ultimo de lo ultimo que le queda a mi sistema, :( quiero acabrlo hoy, probe con hacer la nueva pagina, pero nada no me va :S
__________________
SumarioWeb
@sumarioweb
BasicNews

Última edición por GatorV; 11/05/2009 a las 10:54
  #4 (permalink)  
Antiguo 10/05/2009, 15:22
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Se me repiten comentarios

Cita:
Iniciado por fcdragons Ver Mensaje
el problema es que no me va :S


Y qué significa eso? Sé más específico y concreto por favor. Tienes problemas al insertar o al mostrar?

  #5 (permalink)  
Antiguo 10/05/2009, 15:25
Avatar de fcdragons  
Fecha de Ingreso: agosto-2008
Ubicación: echo $_REQUEST['ubicacion'];
Mensajes: 474
Antigüedad: 15 años, 8 meses
Puntos: 13
Respuesta: Se me repiten comentarios

al mostrar, lo que me pasa es que en todas las noticias si envio un comentario se me ve en todas las noticias, probe en apartar los comentarios en una pagina y nada, y solo se me muestra 1 comenytario, mira un ejemplo aqui:
http://tutosyscripts.comyr.com/news

Ya probe poniendo id de comentario, nose si deberia poner un campo en la base llaamdo comNoticiaID, que concuerde con el id de la noticia a la qual se pone
__________________
SumarioWeb
@sumarioweb
BasicNews
  #6 (permalink)  
Antiguo 10/05/2009, 15:27
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Se me repiten comentarios

Cita:
Ya esta, lo malo es que ahora, el mismo comentario se me muestra en todas las noticias, aver si encuentro como arreglarlo, ahora cree una nueva tabla para poner la fila que sean de comentarios, es decir cree una nueva tabla llamada sn_comentarios, y ahora estan ahi los campos comTexto, comWeb, etc, antes estaban en la misma tabla que en la de las noticias.
Me huele a que tienes que rediseñar la base de datos de tu sistema de noticias + comentarios.

Cita:
He pensado en hacer que en una pagina se muestren los comentarios con su respectivo ID, pero nose si va a funcionar.
Con las noticias hacer eso me funciona, asique supongo que tambien funcionara con los comentarios :S
No vale la pena, nadie quiere ver 1 comentario a la vez. Ademas, usualmente los comentarios no suelen ser tan largos.

Cita:
Pero, como puedo hacer una consulta en la base de datos y decir en numero los comentarios que hay, por ejemplo, un link que lleve a los comentarios.
y ponga
Comentarios(5)
SELECT COUNT(*) FROM tabla WHERE id_noticia = 5
//Solo un ejemplo eh ...
  #7 (permalink)  
Antiguo 10/05/2009, 15:34
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Se me repiten comentarios

Cita:
Iniciado por fcdragons Ver Mensaje
Ya probe poniendo id de comentario, nose si deberia poner un campo en la base llaamdo comNoticiaID, que concuerde con el id de la noticia a la qual se pone
Bueno, claro que cada comentario debe tener una referencia a la noticia a la cuál pertenece. Cada noticia debe tener un id, y cada comentario para esa noticia debe hacer referencia a ese id. Si no como sabrá tu sistema cuáles mostrar en cada noticia? Piensa un poco mejor en la lógica de tu sistema antes de armar código. Si haces ambas cosas simultáneamente tendrás muchos problemas como este, de haber hecho y luego no saber si falta algo o dónde hay errores de lógica.

  #8 (permalink)  
Antiguo 10/05/2009, 15:46
Avatar de fcdragons  
Fecha de Ingreso: agosto-2008
Ubicación: echo $_REQUEST['ubicacion'];
Mensajes: 474
Antigüedad: 15 años, 8 meses
Puntos: 13
Respuesta: Se me repiten comentarios

Si, pero yo no se hacer el insert en el formulario para que quede en la base, y salga en la noticia.
Se hacerlo, pero con un <select> (no el de PHP, el de formularios) pero entonces el usuario tendria que buscar la noticia entre los select y eso.

claro que cada noticia tiene su ID, igual que cada categoria y comentario. Pero no se hacer para que el comNoticiaID haga referencia al ID de la noticia

Gracias
__________________
SumarioWeb
@sumarioweb
BasicNews
  #9 (permalink)  
Antiguo 10/05/2009, 15:59
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Se me repiten comentarios

Se supone que para insertar un comentario el usuario debe estar viendo la noticias en cuestión. Tomas el id que tienes para mostrar la noticia y lo usas para crear el nuevo comentario (Digamos, que lo pones en un input hidden en el formulario para insertar comentarios, y ya lo tomas al procesar el form).

  #10 (permalink)  
Antiguo 10/05/2009, 16:34
Avatar de fcdragons  
Fecha de Ingreso: agosto-2008
Ubicación: echo $_REQUEST['ubicacion'];
Mensajes: 474
Antigüedad: 15 años, 8 meses
Puntos: 13
Respuesta: Se me repiten comentarios

mmm me hago un poco a la idea
lo intento y si no lo consigo posteo aqui el error

seria algo asi:
<input type="hidden" name="comNoticiaID">

y despues se usa el insert y el
$comNoticiaID = $_POST['comNoticiaID'];
__________________
SumarioWeb
@sumarioweb
BasicNews
  #11 (permalink)  
Antiguo 10/05/2009, 16:35
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Se me repiten comentarios

Código html:
Ver original
  1. <input type="hidden" name="comNoticiaID" value="el_id_de_tu_noticia">
  #12 (permalink)  
Antiguo 10/05/2009, 16:57
Avatar de fcdragons  
Fecha de Ingreso: agosto-2008
Ubicación: echo $_REQUEST['ubicacion'];
Mensajes: 474
Antigüedad: 15 años, 8 meses
Puntos: 13
echo "formulario y demas
<campo hidden,etc value="$rowNot['not_ID']" />
acabamos formulario
";

perdon por el etcetera, escribo desde el ipod ahora mismo y eslento

Código php:
Ver original
  1. <?php
  2. // incluimos el archivo de conexion
  3. include ('db-cnx.php');
  4. include ('db-cnx2.php');
  5. // recibimos el formulario
  6. if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
  7. // comprobamos que el formulario no envie campos vacios
  8. if(!empty($_POST['comWeb']) && $_POST['comTexto']){
  9. // creamos las variables y les asignamos los valores a insertar
  10. $comWeb = $_POST['comWeb'];
  11. $comNoticiaID = $_POST['comNoticiaID'];
  12. $comTexto = $_POST['comTexto'];
  13. $comAvatar = $_COOKIE['uavatar'];
  14. $comPosteador = $_COOKIE['unick'];
  15. $comFecha = date("d/m/Y");
  16. $comHora = date("H:i:s/A");
  17. $comTexto = htmlspecialchars($comTexto);
  18. $comWeb = htmlspecialchars($comWeb);
  19. // hacemos el INSERT en la BD
  20. $sqlInsertNot = mysql_query("INSERT INTO sn_comentarios (comWeb, comTexto, comAvatar, comFecha, comPosteador, comHora, comNoticiaID)
  21. VALUES ('$comWeb', '$comTexto', '$comAvatar', '$comFecha', '$comPosteador', '$comHora', '$comNoticiaID')",
  22. $db_link) or die(mysql_error());
  23. // enviamos un mensaje de exito
  24. echo "Los datos fueron gurdados correctamente. <a href='/news/index.php'>Volver a la pagina principal</a>";
  25. }
  26. else{
  27. // si el formulario envia algun campo vacio
  28. // enviamos un mensaje de error
  29. echo "Debe llenar todos los campos del formulario";
  30. }
  31. }
  32. ?>
  33. <form name="comentarios" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
  34. <input type="hidden" name="comNoticiaID" value="<?php $rowNot['not_ID'] ?>" /><br />
  35. <b>Sitio web:</b><br />
  36. <input type="text" name="comWeb" maxlength="255" size="40" /><p>
  37. <br />
  38. <b>Comentario:</b><br />
  39. <textarea name="comTexto" cols="40" rows="10"></textarea>
  40. <p>
  41. <input type="submit" value="Enviar" name="enviar" />
  42. </form>

Lo ago asi, me da error mysql :S
mira el db-cnx2.php:
Código php:
Ver original
  1. <?
  2. include ('db-cnx.php');
  3. $sqlQueryNot = mysql_query("SELECT notTitulo, notTexto, not_ID, notCategoriaID, notPosteador, notHora, comWeb, comNoticiaID, comTexto, comFecha, comHora, comPosteador, com_ID FROM sn_noticias, sn_comentarios WHERE not_ID = $not_ID", $db_link)or die(mysql_error);
  4. $rowNot = mysql_fetch_array($sqlQueryNot)
  5. ?>


_Me da error en el add-comentario.php (el primero codigo que puse :S)
__________________
SumarioWeb
@sumarioweb
BasicNews

Última edición por GatorV; 11/05/2009 a las 10:55
  #13 (permalink)  
Antiguo 11/05/2009, 10:17
 
Fecha de Ingreso: febrero-2009
Ubicación: cancun!
Mensajes: 898
Antigüedad: 15 años, 2 meses
Puntos: 15
Respuesta: Se me repiten comentarios

$tabla = mysql_query('SELECT * FROM usuarios order by abogado');
while($row=mysql_fetch_array($tabla))}
prueba asi
sin el link
__________________
WHERE IS MY BLUE SUNNY SKY??
pd: todos los karmas son bienvenidos :D
  #14 (permalink)  
Antiguo 11/05/2009, 12:25
Avatar de fcdragons  
Fecha de Ingreso: agosto-2008
Ubicación: echo $_REQUEST['ubicacion'];
Mensajes: 474
Antigüedad: 15 años, 8 meses
Puntos: 13
Respuesta: Se me repiten comentarios

emmm la cosa
es que de donde sale el } del final dl while
__________________
SumarioWeb
@sumarioweb
BasicNews
  #15 (permalink)  
Antiguo 11/05/2009, 12:26
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Se me repiten comentarios

Fue un simple error xD Es un simple error de sintaxis, si ya te diste cuenta, corrigelo.
  #16 (permalink)  
Antiguo 11/05/2009, 12:51
 
Fecha de Ingreso: febrero-2009
Ubicación: cancun!
Mensajes: 898
Antigüedad: 15 años, 2 meses
Puntos: 15
Respuesta: Se me repiten comentarios

Cita:
$tabla = mysql_query('SELECT * FROM usuarios order by abogado');
while($row=mysql_fetch_array($tabla))
perdon copie y se me fue el corchete jejeje saludines!!!
__________________
WHERE IS MY BLUE SUNNY SKY??
pd: todos los karmas son bienvenidos :D
  #17 (permalink)  
Antiguo 11/05/2009, 13:29
Avatar de fcdragons  
Fecha de Ingreso: agosto-2008
Ubicación: echo $_REQUEST['ubicacion'];
Mensajes: 474
Antigüedad: 15 años, 8 meses
Puntos: 13
Respuesta: Se me repiten comentarios

nada me sigue danbdo mysql_error :S joer nose porque es, estan bien los datos de conexion porque estan en un archivo y me va bien :S
__________________
SumarioWeb
@sumarioweb
BasicNews
  #18 (permalink)  
Antiguo 11/05/2009, 15:34
 
Fecha de Ingreso: febrero-2009
Ubicación: cancun!
Mensajes: 898
Antigüedad: 15 años, 2 meses
Puntos: 15
Respuesta: Se me repiten comentarios

pero q error te muestra??
puedes poner como haces tu conexion ?
__________________
WHERE IS MY BLUE SUNNY SKY??
pd: todos los karmas son bienvenidos :D
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 20:39.