Duda php

Huevo276

Tengo un sistema de comentarios, y quiero que cuando alguien postee salga la id como en mv, mi problema reside en que he conseguido que salga pero sale el comentario en general, es decir si en la primera noticia la id del comentario es #1 y en una segunda noticia ponen un primer comentario su id es #2. Alguna sugerencia ? las noticias las tengo clasificadas en la bd con ids pero no sé como hacer para que coja sólo los comentarios de la id 1 etc. Gracias.

Whose

mysql_query("SELECT * FROM comentarios WHERE nid = '{$_GET['id']}' ORDER BY id DESC");

nid seria un campo donde almacenar la id de la noticia, para al insertar el comentario decirle a que noticia se refiere ese comentario, $_GET['id'] es para seleccionar los comentarios de la noticia a la que se refiere la id, la URL podria ser comentarios.php?nid=X

Si no has entendido algo o tienes alguna duda mas, pregunta :P

LupiN-

Yo ahí también me lio, que deberia poner para que mostrase la id de los comentarios ? he probado y me sale la id, pero de las noticias y no sé como hacer que la primera función que es conseguir el nº de comentario eliga sólo los de la id de la noticia :(

Chulla

jue que tarde es ya :)

LupiN- mira este post , habla sobre enlazar las noticias con los comentarios y tal

http://www.media-vida.net/vertema.php?fid=9&tid=1828843311

Lo que no entiendo muy bien es lo que dices Huevo276.

Estás hablando de la enumeracion que hay en los comentarios de una determinada noticia no ?

es decir :

noticia_id = 20

#1 ola

#2 lal..
..
#222

es eso ?

pues con un while a tuti plen :)

$comentario_numeracion = 0;

while( mysql_query("SELECT * FROM comentarios WHERE nid = '{$_GET['id']}' ORDER BY id DESC") )

$comentario_numeracion ++ ; // ó $comentario_numeracion = $comentario_numeracion +1 ;

....... ...

finalmente muestras el valor de dicha variable

aunque mv no lo hace de esta manera, como puedes notar cuando algun admin borra un comentario o post.

que utiliza ?

pa mi que un nuevo campo en la db de comentarios ( numero_de_comentario) , el cual se vá actualizando conforme la gente postea

whose me gusta tu avatar :=)

c0ca

Whose tiene clase : D

BrOkeR

El problema que tiene el chaval es que usa el identificador unico del comentario, y son cosas distintas. Por eso en la segunda noticia no empieza desde 1.

Una cosa es el identificador unico del comentario y otra es la posicion en la que ha sido publicado. Esa posicion hay que calcularla a mano y meterla a mano en la BD, y ya luego muestras eso.

IS4kO

Yo creo lo hago mas facil aunque mucho mas cutre :D

$dbcomentario = mysql_db_query("...","SELECT * FROM comentarios where idnoticia='$noticiaquesolicitas'");

$n=1;
while ($row=mysql_fetch_array($dbcomentario))
{
echo '< b >$n' .$row["comentario"]. '< /b >';
$n=$n+1;

}

Tal vez sea algo cutre pero yo siempre lo he echo asinn :) como ves siempre que entres a ver comentarios el primer comentario valdra 1 y el resto se iran incrementando solitos. Se me olvidaba, en la select tendras que ordenar por idnoticia para no ponerle el #1 al ultimo comentario.

Debes de tener un campo de la tabla comentarios asi como de la de noticias en comun de tal forma que las dos tengan una misma columna, en este caso idnoticia Nose si me he explicado bien o te he liado mas pero bueno ;) sino entienes, lo que decia whose, pregunta :P

edit: Ahora que leo un poko mas el chulla creo que lo hace similar :P

BrOkeR

El problema de ese sistema, es que si se borra un post, no hay constancia en los siguientes de que se ha borrado. Pero para gustos, los colores.

LupiN-

Yo ya he solucionado mi problema, pero ahora tengo otro y es que ahora el primer comentario puesto ( por ejemplo a las 15.11 ) le pone id #3 y al última comentario ( 16.00 ) le pone id #1 sorry si pregunto demasiado pero no se mucho de php xd

IS4kO

es lo que te comentaba en mi post, tienes que ordenar el resultado a traves de un desc

ejem:
select * from comentarios where idnoticia=$noticia ORDER BY idcomentario DESC

Whose

DESC = Descendente, se ordenan de nuevos(arriba) a mas antiguos(abajo)
ASC = Ascendente, se ordenan de mas antiguos(arriba) a nuevos(abajo)

Saludos!

LupiN-

Eso es lo que he hecho pero nada me sigue saliendo el más nuevo con id #1 y el más antiguo con id mayor.

Whose

si usaste lo que dijo isako en la id #7 prueba a cambiar $n=$n+1; por $n=$n-1;

LupiN-

Lo hice como dijo Chulla, y ya he probado a cambiar
$comentario_numeracion = $comentario_numeracion +1
por
$comentario_numeracion = $comentario_numeracion -1 y me salen de ids: #-1 #-2,etc :(

IS4kO

pega el codigo y lo vemos mejor :)

r2d2rigo

Quiza sea de la base de datos. Tienes el campo de id del mensaje definido como PRIMARY KEY y AUTO_INCREMENT?

Usuarios habituales

  • r2d2rigo
  • IS4kO
  • LupiN-
  • Whose
  • BrOkeR
  • c0ca
  • Huevo276