[TUTORIAL] Crear sistema de novedades/noticias del tipo pagina.php?id=

Bueno pues después de todo esto tiempo y lo que he aprendido, he creado este simple sistema de noticias con posibilidad de que los lectores puedan poner comentarios y he decidido compartirlo con vosotros para que podáis modificarlo (está sin estilos css así que hay un mundo que mejorar xD) y para que los nuevos vayan aprendiendo cómo funciona :)
Al final del post he dejado una descarga de una carpeta que contiene todos los archivos publicados en este tema.

AVISO: TEMA EDITADO A MEDIAS, LOS ARCHIVOS DE LOS DOS PRIMEROS PUNTOS HAN SIDO ACTUALIZADOS Y SU DESCARGA YA ESTÁ DISPONIBLE, CUANDO PUEDA ACABARÉ EL RESTO.

Aquí os dejo de lo que consta este tutorial:
1# Creación de una página en la que se visualizarán todas las noticias de la base de datos
2# Creación de una página en la que se verá la noticia que el usuario seleccione, y podrá comentarla y ver los comentarios de la noticia seleccionada
3# Creación de un panel para publicar las noticias
4# Creación de un panel para administrar las noticias (editarlas/borrarlas)
---------------------------------------------------------------------------------------------------------------------------

1#

1º) Tenemos que crear en la base de datos una tabla llamada noticias y de campos, los pondremos como están en la siguiente imagen:
[contenido no disponible]

2º) Ahora vamos a crear la página donde se visualizarán todas las noticias publicadas, la llamaremos noticias.php y su código será el siguiente:
<!DOCTYPE html>
<html lang="es">
  <head>
    <title>Lista de noticias publicadas</title>
    <meta charset="iso-8859-1" />
  </head>
  <body>

<?php

include_once("config.php");

$result = mysql_query("SELECT * FROM $tabla ORDER BY id_noticia DESC") or die(mysql_error());
if(!mysql_num_rows($result)){
echo "Todavía no ha sido publicada ninguna noticia";
} else {

while($qry = mysql_fetch_array($result)){

echo "$qry['titulo']<br/><small>Publicado por $qry['autor'] el día $qry['fecha']</small><br/>$qry['novedad']<br/><small>Publicado en $qry['categoria'] / <a href='noticia.php?id=".$qry['id_noticia']."'>Dejar un comentario</a></small>";
echo "<hr/>";

}
}
?>

  </body>
</html>

3º) Ahora creamos un archivo llamado config.php que será el que almacene la información de la base de datos y tendrá el siguiente código:
<?php
# Sistema de noticias por Doodleo para la comunidad de CCTW. Todas las líneas con # al principio pueden ser borradas ya que son solamente comentarios.

# Servidor donde se aloja la base de datos
$servidor = "localhost";
# Base de datos
$db = "db";
# Usuario de la base de datos
$usuario = "root";
# Contraseña del usuario
$pass = "contraseña";
# Tabla donde se guardan las noticias
$tabla = "noticias";

# Selección y conexión a la base de datos
mysql_connect($servidor, $usuario, $pass) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());

?>

Bien, un poco más tarde crearemos una especie de panel con el que podremos publicar noticias, pero de momento para publicarlas vamos al PhpMyAdmin, le damos a la pestaña Insert y ahí publicaremos las noticias (de momento). Podéis publicar una de prueba si queréis para ver cómo va la cosa.
2#

Si os fijasteis pusimos un enlace en el que si pinchamos accederemos a una página llamada noticia.php?id=id de la noticia
Aquí se verá la noticia seleccionada donde podremos dejar y ver los comentarios puestos en esta.

Ahora, en la misma base de datos en la que pusimos la tabla noticias, creamos otra tabla llamada comentarios, y los campos deben quedar así:
[contenido no disponible]

Ahora que ya tenemos la tabla donde almacenaremos todos los comentarios, crearemos el archivo noticia.php para ver cada una de las noticias que el usuario quiera y poder comentarlas y ver sus comentarios, así que creamos el archivo noticia.php con el código:
<!DOCTYPE html><html lang="es">  <head>    <title>Comentarios de la noticia</title>    <meta charset="iso-8859-1" />  </head>  <body><?php
include_once("config.php");
// Almacenamos en la variable la ID de la noticia que queremos ver y comprobamos que es válido$id = strip_tags($_GET["id"]);if(!is_numeric($id) OR $id<=0){header("location: noticias.php");return false;}
$result = mysql_query("SELECT * FROM $tabla WHERE id_noticia=$id") or die(mysql_error());
if(mysql_num_rows($result)){while($qry = mysql_fetch_array($result)){
echo "$qry['titulo']<br/><smal>Publicado por $qry['autor'] el día $qry['fecha']</small><br/><br/>$qry['novedad']<br/><h1><u>Comentarios</u></h1>";
$comentarios = mysql_query("SELECT * FROM comentarios WHERE id=$id") or die(mysql_error());if(mysql_num_rows($comentarios)){while($infocoment = mysql_fetch_array($comentarios){
$nick = strip_tags($infocoment["nick"]);$comentario = strip_tags($infocoment["comentario"]);$fecha = $infocoment["fecha"];$hora = $infocoment["hora"];
echo "$nick dijo...<br/>$comentario<br/><small>Publicado el día $fecha a las $hora</small><hr/>";
}}
echo "<br/><br/><form method='post' action='comentar.php'><input type='hidden' name='id' id='id' value='$id'><label>Nick<br/><input type='text' name='nick' id='nick' maxlength='20' /></label><br/><label>Tu email (No será publicado)<br/><input type='text' name='email' id='email' maxlength='255' /></label><b /><label>Tu comentario<br/><textarea name='comentario' id='comentario'></textarea></label><br/><button type='submit'>Enviar comentario</button></form>";
}}?>  </body></html>
Ahora crearemos el archivo llamado comentar.php que tendrá el siguiente código:
<?php
# Configuramos la zona horaria para que sea la de Españadate_default_timezone_set('Europe/Madrid');
# Guardamos en las variables la fecha y hora de envío del comentario$fecha = date("Y/m/d/");$hora = date("H:i:s");
# Información enviada por el usuario$id = strip_tags($_POST["id"]);$nick = strip_tags($_POST["nick"]);$email = strip_tags($_POST["email"]);$comentario = strip_tags($_POST["comentario"]);
include_once("config.php");
# Validamos el comentarioif(!is_numeric($id) OR $id<=0 OR !$id OR !$nick OR !$email OR !$comentario){echo "Te faltó completar algo! ;(";return false;}
# Ingremos el comentario en la base de datosmysql_query("INSERT INTO comentarios (`id`, `nick`, `email`, `comentario`, `fecha`, `hora`) VALUES ('$id', '$nick', '$email', '$comentario', '$fecha', '$hora')");
# Volvemos a la noticiaheader ("location: noticia.php?id=$id");
?>

3# Crear panel para publicar noticias

Bueno, ampliamos el tutorial para crear una especie de panel en el que podamos publicar las noticias.

1º) Crearemos un archivo llamado publicar.php que tendrá el siguiente código: (El Doctype, los estilos, la codificación, etc... se los tenéis que poner vosotros jeje)
<html>
<head>
</head>
<body>
<form method="post" action="enviar.php">
<label>Autor de la noticia<br/><input type="text" name="autor" maxlength="255" /></label><br/><br/>
<label>Título de la noticia<br/><input type="text" name="titulo" maxlength="255" /></label><br/><br/>
<label>Categoría<br/><input type="text" name="categoria" maxlength="255" /></label><br/><br/>
<label>Noticia<br/><textarea name="novedad"></textarea></label><br/><br/>
<button type="submit">Publicar noticia</button>
</form>
</body>
</html>

2º) Como visteis en el código, con el formulario llamamos a enviar.php para que guarde los datos en la base de datos, así que este archivo se llamará enviar.php y tendrá el siguiente código:
<?

// Declaramos la variable para guardar la fecha en la que se publicó la noticia
$fecha=date("Y/n/d");

// Conectamos a la base de datos 
$connect=mysql_connect("[COLOR=red]servidor[/COLOR]","[COLOR=red][COLOR=red]usuariodelabasededatos[/COLOR][/COLOR]","[COLOR=red]password[/COLOR]");
 
// Seleccionamos la base de datos
mysql_select_db("[COLOR=red]basededatos[/COLOR]",$connect);

// Aquí lo que hacemos es que si algún listillo quiere ir directamente al archivo enviar.php para publicar una noticia en blanco, le salte un error
if (!$autor || !$titulo|| !$categoria|| !$novedad) { echo "¡Tienes que completar todos los campos para publicar tu noticia!"; }
else {

// Ingresamos la noticia en la base de datos
mysql_query ("INSERT INTO `[COLOR=red]basededatos[/COLOR]`.`novedades`(`autor`, `titulo`, `categoria`, `fecha`, `novedad`) VALUES ('$_POST[autor]', '$_POST[titulo]', '$_POST[categoria]', '$fecha', '$_POST[novedad]')");

}
?>


4# Crear panel de administración de las noticias (En construcción)

Ahora crearemos un panel en el que podremos administrar todas las noticias, para editarlas o borrarlas sin tener que acceder todo el rato a la base de datos.
Por cierto, primero de todo, nadie puede saber la página en la que estará este panel, no vaya a ser que salte la seguridad que le pongamos (poca, pero ya le iremos añadiendo más jeje) y haga una catástrofe en nuestra web.

Vale, empezamos!

1º) Crearemos un directorio o carpeta, lo llamaremos, hmm... moderacion, se llamará moderacion (sin la tilde en la o!)

2º) Ahora crearemos un archivo en el directorio moderacion que se llamará index.php, y este archivo tendrá el siguiente código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="es-ES"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="robots" content="noindex,nofollow" />
<title>Sistema de noticias en PHP</title>
<?php 
//conectamos a la base 
$connect=mysql_connect("[COLOR=red]servidor[/COLOR]","[COLOR=red]usuariodelabasededatos[/COLOR]" ,"[COLOR=red]passworddelabasededatos[/COLOR]"); 
//Seleccionamos la base 
mysql_select_db("[COLOR=red]tubasededatos[/COLOR]",$connect);

//hacemos las consultas 
$result=mysql_query("SELECT * FROM `[COLOR=red]tubasededatos[/COLOR]`.`novedades`", $connect); 
$totalregistros=mysql_num_rows($result); 
?>
</head>

<body>

<?php

include ("config.php");

$result = mysql_db_query($database, 'SELECT * FROM `[COLOR=red]tubasededatos[/COLOR]`.`novedades` ORDER BY id_noticia DESC') or die (mysql_error());
 
if (mysql_num_rows($result)) {

   while ($qry = mysql_fetch_array($result)) {
echo "[COLOR=red]$qry[titulo]<br/>Publicado por $qry[autor] el día $qry[fecha]<br/><br/>$qry[novedad]<br/><br/>Publicado en $qry[categoria] | <a href='novedad.php?id=$qry[id_noticia]'>Deja tu comentario</a> | <a href='borrar.php?id=$qry[id_noticia]'>Borrar</a>[/COLOR]";
}
}
?>

</body>
</html>

Si os fijáis, es el mismo código que el que tenemos para mostrar todas las noticias en la página principal, pero en este tenemos dos líneas de código nuevas:
<meta name="robots" content="noindex,nofollow" />
Esta línea es para que la página de moderacion no aparezca en Google, Yahoo, etc... y así nadie sabe la página

Y la otra línea es un enlace que pone Borrar (<a href='borrar.php?id=$qry[id_noticia]'>Borrar</a>)

Entonces, en esa línea vemos que llamamos al archivo borrar.php, así que ahora crearemos un archivo llamado borrar.php y tendrá el siguiente código:
<?php

// Declaramos la variable ID en la que recibimos el ID que pusimos en la URL, por tanto, recibimos el ID de la noticia que queremos borrar
$id = $_GET[id];

// Conectamos a la base de datos
mysql_connect("[COLOR=red]servidor[/COLOR]","[COLOR=red]usuariodelabasededatos[/COLOR]","[COLOR=red]passwordelabasededatos[/COLOR]");

// Seleccionamos la base de datos
mysql_select_db("[COLOR=red]basededatos[/COLOR]");

// Ahora creamos la sentencia SQL para borrar la noticia correspondiente
$sSQL="DELETE FROM novedades WHERE id_noticia=$id";

// Ahora ejecutamos la sentencia SQL de arriba en la que borramos la noticia
mysql_query($sSQL);

?>

Bien, ahora podemos borrar cualquier noticia con un sólo click!

Ahora lo que haremos será poder editar las noticias desde este panel, en el archivo index.php del directorio moderacion, cambiamos el código que teníamos por este:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="es-ES"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="robots" content="noindex,nofollow" />
<title>Sistema de noticias en PHP</title>
<?php 
//conectamos a la base 
$connect=mysql_connect("[COLOR=red]servidor[/COLOR]","[COLOR=red]usuariodelabasededatos[/COLOR]" ,"[COLOR=red]passworddelabasededatos[/COLOR]"); 
//Seleccionamos la base 
mysql_select_db("[COLOR=red]tubasededatos[/COLOR]",$connect);

//hacemos las consultas 
$result=mysql_query("SELECT * FROM `[COLOR=red]tubasededatos[/COLOR]`.`novedades`", $connect); 
$totalregistros=mysql_num_rows($result); 
?>
</head>

<body>

<?php

include ("config.php");

$result = mysql_db_query($database, 'SELECT * FROM `[COLOR=red]tubasededatos[/COLOR]`.`novedades` ORDER BY id_noticia DESC') or die (mysql_error());
 
if (mysql_num_rows($result)) {

   while ($qry = mysql_fetch_array($result)) {
echo "[COLOR=red]$qry[titulo]<br/>Publicado por $qry[autor] el día $qry[fecha]<br/><br/>$qry[novedad]<br/><br/>Publicado en $qry[categoria] | <a href='novedad.php?id=$qry[id_noticia]'>Deja tu comentario</a> | <a href='borrar.php?id=$qry[id_noticia]'>Borrar</a>[/COLOR] | <a href='editar.php?id=$qry[id_noticia]'>Editar</a>";
}
}
?>

</body>
</html>

Lo único que hemos hecho es añadir otro enlace al lado del de Borrar, y el enlace es editar.php?id=id de la noticia
así que ahora creamos un archivo llamado editar.php y tendrá el siguiente código:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="es-ES"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="robots" content="noindex,nofollow" />
<title>Editar noticia</title>
</head>
<body>

<?php

// Declaramos la variable ID en la que recibimos el ID que pusimos en la URL, por tanto, recibimos el ID de la noticia que queremos borrar
$id = $_GET[id];

// Conectamos a la base de datos
mysql_connect("[COLOR=red]servidor[/COLOR]","[COLOR=red]usuariodelabasededatos[/COLOR]","[COLOR=red]passworddelabasededatos[/COLOR]");

// Seleccionamos la base de datos
mysql_select_db("[COLOR=red]basededatos[/COLOR]");

// Seleccionamos la noticia correspondiente dependiendo del ID especificado en la URL
$result=mysql_query("SELECT * FROM `[COLOR=red]tubasededatos[/COLOR]`.`novedades` WHERE id_noticia=$id", $connect) or die (mysql_error());

if (mysql_num_rows($result)) { 
   while ($qry = mysql_fetch_array($result)) {

// Mostramos un formulario con los datos de la noticia puestos en inputs para poder modificarlos
echo "<form method='post' action='actualizar.php'>
<input type='hidden' name='id' id='id' value='$id' />
Título de la noticia: <input type='text' name='titulo' id='titulo' value='$qry[titulo]' /><br />
Autor de la noticia: <input type='text' name='autor' id='autor' value='$qry[autor]' /><br />
Categoría de la noticia: <input type='text' name='categoria' id='categoria' value='$qry[categoria]' /><br />
Fecha de la noticia (Tienes que ponerla en formato AÑO-MES-DÍA): <input type='text' name='fecha' id='fecha' value='$qry[fecha' /><br />
Contenido de la noticia: <textarea name='novedad' id='novedad'>$qry[novedad]</textarea><br />
<button type='submit'>Editar noticia</button>
</form>";

}
}

?>

</body>
</html>

Y como veis llamamos al archivo actualizar.php en el formulario, así que ahora crearemos un archivo llamado actualizar.php y tendrá el siguiente código:
<?php

// Declaramos las variables enviadas por el formulario
$id = $_POST[id];
$titulo = $_POST[titulo];
$autor = $_POST[autor];
$categoria = $_POST[categoria];
$fecha = $_POST[fecha];
$novedad = $_POST[novedad];

// Conectamos a la base de datos
mysql_connect("[COLOR=red]servidor[/COLOR]","[COLOR=red]usuariodelabasededatos[/COLOR]","[COLOR=red]passworddelabasededatos[/COLOR]");

// Seleccionamos la base de datos
mysql_select_db("[COLOR=red]basededatos[/COLOR]");

// Creamos las sentencias SQL para editar todos los campos de la noticia seleccionada
$sSQL="UPDATE titulo SET titulo='$titulo' WHERE id_noticia=$id";
$sSQL="UPDATE autor SET autor='$autor' WHERE id_noticia=$id";
$sSQL="UPDATE categoria SET categoria='$categoria' WHERE id_noticia=$id";
$sSQL="UPDATE fecha SET fecha='$fecha' WHERE id_noticia=$id";
$sSQL="UPDATE novedad SET novedad='$novedad' WHERE id_noticia=$id";

// Ejecutamos las sentencias anteriores para modificar lo campos de la noticia seleccionada
mysql_query($sSQL);

?>
Muy buen tuto, ya espero la siguiente parte, pero ahora te digo... No sería mas facil, en vez de:
<?php 
//conectamos a la base 
$connect=mysql_connect("servidor","tubasededatos" ,"passworddelabasededatos"); 
//Seleccionamos la base 
mysql_select_db("tubasededatos",$connect);

//hacemos las consultas 
$result=mysql_query("SELECT * FROM `tubasededatos`.`novedades`", $connect); 
$totalregistros=mysql_num_rows($result); 
?>
</head>

<body>

<?php

include ("config.php");

................
Esto:
<?php 
include ("config.php");
//conectamos a la base 
$connect=mysql_connect("$server","$basededatos" ,"$password"); 
//Seleccionamos la base 
mysql_select_db("$basedadatos",$connect);

//hacemos las consultas 
$result=mysql_query("SELECT * FROM `tubasededatos`.`novedades`", $connect); 
$totalregistros=mysql_num_rows($result); 
?>
</head>

<body>

No?
Lo estoy terminando, era para ver si podía publicar tanto código jejeje

Sí, es más fácil, pero como al principio lo puse así, y me funciona, paso de cargarme algo sin querer, jejejeje
Ok xD. hehe. Ya espero lo demás HEHE! Suerte escribiendo tanto. Por cierto, has slucionado el problema de seguridad de incluir HTML en los comentarios?
Edit-----------
Uis, la imagen sale un poquito mas grande de lo que me esperaba jajaja
Ahora que me lo recuerdas Rabs, en este sistema hay que incluir más seguridad, como por ejemplo eso de bloquear las etiquetas HTML en los comentarios

Alguien se anima a modificar un poco el código y lo modifico en el tema? :-)
He corregido el código novedad.php para por si ponen de id el número 0 ;-)

Ahora estoy buscando junto con Rabs para hacer que si ponen un id mayor del último que existe vaya a una url de error tmbn
Excelente, han dado en el clavo con un elemento muy solicitado en la actualidad, una sección que se pueda modificar fácilmente en la web. Felicitaciones y quedamos a la espera de la versión final, además de la demo on line, je je.

Gracias y felicitaciones a todos los desarrolladores.
Ya tengo mi windows 7 :DDDDDDDD. Esoty feliz cual perdiz haha. A ver... creo que se me ha ocurrido una idea para ese código, pero dejame pensarla más hehe
Felicidades Rabs jejeje

Por cierto, necesitamos para completarlo bloquear las etiquetas html en los comentarios y a parte, que si alguien pone un id en la url que no existe (por ejemplo, si el máximo actual es 1, que si ponen 2 les rediriga al inicio)

Rabs, el código que me pasaste por mp no funcionó jejeje
Lo suponia hehe. Pero era una idea... Hay que trabajar con ese codigo... creo que hay esta la solucion
Actualizado el tutorial, le añadí al final cómo crear un panel desde el que publicar las noticias :-D

"además de la demo on line, je je." Ya estoy en ello también :-D
Gracias Doodleo, seguimos atentos la evolución de ésta excelente herramienta... "además de la demo on line, je je." ---- Saludos.
Dándole estilos te puede quedar algo así como lo que me quedó: http://minics.comze.com

Pero voy a hacer la demo online (jeje) como la puse en el tutorial, luego los estilos se los dais vosotros :-D
He modificado el código de novedad.php para evitar que pongan código html en el lugar que debería ir el ID, así por ejemplo no pueden poner iframes

Edito: También he modificado el código para que no puedan insertar código HTML en los comentarios y para que la primera letra del comentario vaya en mayúscula, así los comentarios parece que tienen mejor ortografía, jejeje. Añadí un comentario justo arriba de esa línea para avisar de que podéis borrarla si queréis. La línea es esta:
$comentario = ucfirst($comentario);
Acabo de añadir al final del post un tutorial para crear un mini panel de administración en el que se podrán borrar las noticias con un sólo click

El código debería funcionar perfectamente, pero si alguien ve un error que me avise y lo corrigo :D

Estoy buscando para poder editar las noticias a parte de poder borrarlas
Y la demo ? Je, je. Avísame si necesitas un servidor de pruebas para habilitarte una cuenta y hagas las pruebas necesarias on line. Saludos.
Agregado al tutorial también cómo editar las noticias, justo debajo de cómo borrarlas.

Sobre la demo me había olvidado de acabarla, ya estoy en ello!

Si veis algún error en el tutorial corregidme y lo corrigo en el tema :-D
Hola a todos, yo utilizo este sistema de noticias en mi web, pero me falta la parte de editar comentarios o borrarlo, pueden postear esta parte? ya que existe un problema al querer editar o borrar cree un archivo para esto pero todas los comentarios se editan al actualizar cambios o al intentar borrarlos se borran, ya que al guardarse en la base de datos se guardan con un unico id que es el que toma del id que representa la noticia. Habia hecho el sistema con este tutorial http://www.forosdelweb.com/f18/aporte-sistema-noticias-comentarios-… si alguien puede continuar con el tema y crear el archivo por favor?
Habría que hacer que al comentar cada comentario tenga su ID propio y luego desde un archivo borras determinado comentario dependiendo de su ID...

Creo que podría hacer el archivo, voy a intentarlo!
Ok, vamos a intentarlo con esto:

1º) Abre la tabla en la que guardas las comentarios y añade un campo más llamado idcomentario y le pones el extra AutoIncrement (puede que te ponga un checkbox con A_I o AI, selecciónalo)

2º) Ahora crea un archivo más en el directorio moderacion llamado comentarios.php y en este archivo pones el código de novedad.php (En el que mostramos la noticia en concreto en la página principal) para mostrar la noticia en la que quieres moderar los comentarios

3º) En el archivo novedad.php, el código donde mostramos los comentarios (La línea es algo así como: echo "$nick dijo...<br/>$comentario<br/>Publicado el día $qry a las $qry";)

4º) En esa línea añadimos un enlace para borrar el comentario, la línea debería quedar así:
echo "$nick dijo...<br/>$comentario<br/>Publicado el día $qry[fecha] a las $qry[hora] (<a href='borrarcomentario.php?id=$qry[idcomentario]'>Borrar comentario</a>)";

5º) Como ves, en el enlace llamamos a borrarcomentario.php, así que ahora creamos un archivo (en el directorio moderacion, claro) llamado borrarcomentario.php lo que haremos será que esta URL se transforme en borrarcomentario.php?id= AQUI IRA EL ID DEL COMENTARIO y dependiendo del ID que pongamos ahí, se borrará el comentario que tiene ese ID
<?php

// Declaramos la variable ID que será el ID que pusimos en la URL
$id = htmlentities($_GET[id]);
$id = strip_tags($id);

// Conectamos a la base de datos 
$connect=mysql_connect("[COLOR="red"]servidor[/COLOR]","[COLOR="red"]usuariodelabasededatos[/COLOR]", "[COLOR="red"]passworddelabasededatos[/COLOR]");

// Seleccionamos la base de datos
mysql_select_db("[COLOR="red"]tubasededatos[/COLOR]",$connect);

// Ahora creamos la sentencia SQL para borrar la noticia correspondiente
$sSQL="DELETE FROM comentarios WHERE idcomentario=$id";

// Ahora ejecutamos la sentencia SQL de arriba en la que borramos la noticia
mysql_query($sSQL);

?>

Creo que con eso ya está, pero recuerda que los comentarios ya puestos aún no tienen un ID, así que mira estas dos opciones dependiendo de tu caso:

a) Que aún no haya ningún comentario en la base de datos
- En ese caso no tienes que hacer nada más y al comentar ya se le debería asignar un id automáticamente a cada comentario

b) Que haya algún comentario en la base de datos
- En ese caso, primero tienes que acceder a la base de datos e ir asignando un ID a cada comentario (cada id diferente claro, al primer comentario le pones de ID el número 1, al siguiente el número 2, etc...) Y luego ir a OPERATIONS en la base de datos, y buscas una opción que pondrá: AUTO_INCREMENT y al lado un número, ese número tienes que substituirlo por el número siguiente del último ID del comentario puesto, por ejemplo, si el último comentario posteado tiene de ID el número 28, en el autoincrement de ahí le pones 29)

Con eso debería funcionar, si da algun error avisas :D
Doodleo escribió:Ok, vamos a intentarlo con esto:

1º) Abre la tabla en la que guardas las comentarios y añade un campo más llamado idcomentario y le pones el extra AutoIncrement (puede que te ponga un checkbox con A_I o AI, selecciónalo)

2º) Ahora crea un archivo más en el directorio moderacion llamado comentarios.php y en este archivo pones el código de novedad.php (En el que mostramos la noticia en concreto en la página principal) para mostrar la noticia en la que quieres moderar los comentarios

3º) En el archivo novedad.php, el código donde mostramos los comentarios (La línea es algo así como: echo "$nick dijo...<br/>$comentario<br/>Publicado el día $qry a las $qry";)

4º) En esa línea añadimos un enlace para borrar el comentario, la línea debería quedar así:
echo "$nick dijo...<br/>$comentario<br/>Publicado el día $qry[fecha] a las $qry[hora] (<a href='borrarcomentario.php?id=$qry[idcomentario]'>Borrar comentario</a>)";

5º) Como ves, en el enlace llamamos a borrarcomentario.php, así que ahora creamos un archivo (en el directorio moderacion, claro) llamado borrarcomentario.php lo que haremos será que esta URL se transforme en borrarcomentario.php?id= AQUI IRA EL ID DEL COMENTARIO y dependiendo del ID que pongamos ahí, se borrará el comentario que tiene ese ID
<?php

// Declaramos la variable ID que será el ID que pusimos en la URL
$id = htmlentities($_GET[id]);
$id = strip_tags($id);

// Conectamos a la base de datos 
$connect=mysql_connect("[COLOR="red"]servidor[/COLOR]","[COLOR="red"]usuariodelabasededatos[/COLOR]", "[COLOR="red"]passworddelabasededatos[/COLOR]");

// Seleccionamos la base de datos
mysql_select_db("[COLOR="red"]tubasededatos[/COLOR]",$connect);

// Ahora creamos la sentencia SQL para borrar la noticia correspondiente
$sSQL="DELETE FROM comentarios WHERE idcomentario=$id";

// Ahora ejecutamos la sentencia SQL de arriba en la que borramos la noticia
mysql_query($sSQL);

?>

Creo que con eso ya está, pero recuerda que los comentarios ya puestos aún no tienen un ID, así que mira estas dos opciones dependiendo de tu caso:

a) Que aún no haya ningún comentario en la base de datos
- En ese caso no tienes que hacer nada más y al comentar ya se le debería asignar un id automáticamente a cada comentario

b) Que haya algún comentario en la base de datos
- En ese caso, primero tienes que acceder a la base de datos e ir asignando un ID a cada comentario (cada id diferente claro, al primer comentario le pones de ID el número 1, al siguiente el número 2, etc...) Y luego ir a OPERATIONS en la base de datos, y buscas una opción que pondrá: AUTO_INCREMENT y al lado un número, ese número tienes que substituirlo por el número siguiente del último ID del comentario puesto, por ejemplo, si el último comentario posteado tiene de ID el número 28, en el autoincrement de ahí le pones 29)

Con eso debería funcionar, si da algun error avisas :D

Gracias por tu valioso tiempo y en tratar de responder, mira existe un unico problema eso que me comentas lo trate de hacer el problema existente es que los comentarios aun cuando los cree en la tabla con autoincrement se guardan con el id que se toma en un input oculto que toma el id de las noticias y guarda los comentarios que ese id y todos en la base de datos en esa noticia se guardan con el mismo id de ella de manera que al colocar un link para editarlo o borrarlo el sistema asume como ese id y por lo tanto lo borra todos los que encuentre.

Observa la pagina de donde saque el sistema que es un poco parecido a este, alla veras lo que menciono de donde se obtiene el id para poder arrastrar ese comentario a la noticia de donde se coloco. http://www.forosdelweb.com/f18/aporte-sistema-noticias-comentarios-…
Sí, en este también está el input oculto para ver el ID de la noticia, pero si te fijas al crear el campo idcomentario lo que hacemos es asignar ID's individuales a cada comentario, independientemente de cuál es el ID de la noticia

Prueba a hacer lo que te dije y cuéntanos :D
Doodleo escribió:Sí, en este también está el input oculto para ver el ID de la noticia, pero si te fijas al crear el campo idcomentario lo que hacemos es asignar ID's individuales a cada comentario, independientemente de cuál es el ID de la noticia

Prueba a hacer lo que te dije y cuéntanos :D

Me gustaria probar mas bien con el de editar asi me podria dar cuenta si realmente arrastra el comentario que yo elija, pero bien veamos esta parte sobre las tablas a ver si estarian correctas hacerlas asi, o sea si lo que me solicitas es crearlas asi de esta manera.

la que tengo creada es esta.

create table comentarios(
id int(4) not null,
nick varchar(255),
email varchar(255),
comentario blob, key(id))

sustituirla por esta
create table comentarios(
idcomentario int(4) auto_increment not null,
nick varchar(255),
email varchar(255),
comentario blob, key(idcomentario)
)