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

En el tutorial las tablas no son así, pero tal como la tienes debería ser así:

create table comentarios(
id int(4) auto_increment not null,
nick varchar(255),
email varchar(255),
comentario blob,
idcomentario int(4) auto_increment,
key(id))
Doodleo escribió:En el tutorial las tablas no son así, pero tal como la tienes debería ser así:

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

Ya si comprendo el asunto, no se me habia ocurrido, ese era el detalle que habia que colocarle, voy a intentar pues a probar aunque me llevara algo de tiempo porque tendre que modificar algunos datos para esto.

voy a ver si puedo para ver como recojere los datos enviados por el formulario.

Tengo el archivo borrar asi:
<?
//recibimos la variable $id
$id=$_GET["id"];
//conectamos a la base
$connect=mysql_connect("rerererer","arererere","rererere");
//Seleccionamos la base
mysql_select_db("rerererer",$connect);
//borramos los registros pertenecientes a la id
mysql_query("delete from comentarios where id='$id'",$connect);
header("location: noticias_.php?id=$_GET");
?>

como deberia quedar asi:

<?
//recibimos la variable $id
$idcomentario=$_GET["idcomentario"];
//conectamos a la base
$connect=mysql_connect("rerererer","arererere","rererere");
//Seleccionamos la base
mysql_select_db("rerererer",$connect);
//borramos los registros pertenecientes a la id
mysql_query("delete from comentarios where idcomentario='$idcomentario'",$connect);
header("location: noticias_.php?id=$_GET");
?>

?
cuando intento crear las tablas recibo un error asi:

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
ok ya se creo bien, y con respecto al archivo que recibe los datos como debera estar? ya que anteriormente estaba asi

<?
//recibimos la variable $id
$id=$_GET["id"];
//conectamos a la base
$connect=mysql_connect("mrererer","rerere","rerere");
//Seleccionamos la base
mysql_select_db("erere",$connect);
//borramos los registros pertenecientes a la id
mysql_query("delete from comentarios where id='$id'",$connect);
header("location: noticias.php?id=$_GET");
?>
<?

// Esta es la variable de la URL que usaremos para borrar el comentario dependiendo de su ID
$idcomentario = $_GET;

// Conectamos a la base de datos
$connect=mysql_connect("mrererer","rerere","rerere ");

// Seleccionamos la base de datos
mysql_select_db("erere",$connect);

// Borramos el comentario con el ID que pusimos en la URL
mysql_query("DELETE FROM comentarios WHERE idcomentario=$idcomentaario",$connect);

header("location: noticias.php");
?>
Doodleo escribió:<?

// Esta es la variable de la URL que usaremos para borrar el comentario dependiendo de su ID
$idcomentario = $_GET;

// Conectamos a la base de datos
$connect=mysql_connect("mrererer","rerere","rerere ");

// Seleccionamos la base de datos
mysql_select_db("erere",$connect);

// Borramos el comentario con el ID que pusimos en la URL
mysql_query("DELETE FROM comentarios WHERE idcomentario=$idcomentaario",$connect);

header("location: noticias.php");
?>


Gracias, he probado y veo que funciona, solo una cosa mas, en el header tengo problemas al eliminar los comentarios, pues no me envia a la noticia sino que se queda en blanco pues el id queda en blanco, suponiendo que las noticias las veo en noticia.php?id=1 y quiero volver a esa noticia despues de haber borrado el comentario. como debo poner el header? lo tengo colocado asi

//header("location: noticia.php?id=$_GET");

lo que no noto al no encontrar donde ir es porque si la noticia es el id=1 y el comentario es el idcomentario=5 al regresar y ponerse

noticia.php?id=5 no encuentra esa noticia por eso es el error de quedar en blanco.
Con el código que te pasé debería ir al archivo noticias.php

Prueba con esto, en el archivo donde borras comentarios:
<?

// Esta es la variable de la URL que usaremos para borrar el comentario dependiendo de su ID
$idcomentario = $_GET[id];

// Esta es la variable de la noticia en la que estábamos
$idnoticia = $_GET[idnoticia];

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

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

// Borramos el comentario con el ID que pusimos en la URL
mysql_query("DELETE FROM comentarios WHERE idcomentario=$idcomentario",$connect);

header("location: noticia.php?id=$idnoticia");
?>

Y en el archivo de noticia.php, en el enlace de Borrar comentario, deja así el enlace:
<a href='borrar.php?id=$qry[idcomentario]&idnoticia=$id'>Borrar comentario</a>
El idnoticia lo puse en el archivo, no tienes que tenerlo en la base de datos, es que si pongo id en vez de idnoticia se liaría en la url jeje
Bueno el codigo me lanza un error

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in

<a href='borrar.php?id=$qry&idnoticia=$id'>Borrar comentario</a>

mis link estan hechos asi y el de editar por ejemplo me funciona bien cuando edito me envia a donde yo estaba.

<a href="editarcomentario..php?id='.$row.'">Editar </a> | <a href="borrarcomentario..php?id='.$row.'">Borrar </a>
Recuerdas el paso 4 del mensaje que puse en la anterior página, pone:
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>)";

Pues esa línea cámbiala por esta:
$id = $_GET[id];
echo "$nick dijo...<br/>$comentario<br/>Publicado el día $qry[fecha] a las $qry[hora] (<a href='borrarcomentario.php?id=$qry[idcomentario]&idnoticia=$id'>Borrar comentario</a>)";
Doodleo escribió:Recuerdas el paso 4 del mensaje que puse en la anterior página, pone:


Pues esa línea cámbiala por esta:
$id = $_GET[id];
echo "$nick dijo...<br/>$comentario<br/>Publicado el día $qry[fecha] a las $qry[hora] (<a href='borrarcomentario.php?id=$qry[idcomentario]&idnoticia=$id'>Borrar comentario</a>)";

Bueno veo que es lo mismo que tengo pero en otra forma, creo que el enlace esta bien lo que da el problema es el en archivo que recoje los datos borrar, pues alla lo puse como me dices aunque como mencione antes no tengo idnoticia sino que se llama unicamente id y me pasa igual que antes, con el archivo editar no tengo ese problema solo con el de borrar.
Archivo borrar



<?
//recibimos la variable $id
$idcomentario=$_GET["id"];
// Esta es la variable de la noticia en la que estábamos
$id = $_GET;
//conectamos a la base
$connect=mysql_connect("mrerere","rereree","rerere");
//Seleccionamos la base
mysql_select_db("rererere",$connect);
//borramos los registros pertenecientes a la id
mysql_query("delete from comentarios where idcomentario='$idcomentario'",$connect);
header("location: noticia.php?id=$_GET")
?>



El de editar.

<?php
$idcomentario=$_POST['id'];
$nick=$_POST['nick'];
-----
----+

$connect = mysql_connect("rererer", "erereer" , "rerere");
mysql_select_db("aererere",$connect);
$sql = "UPDATE contactos SET idcomentario='$idcomentario', nick='$nick', --------

WHERE idcomentario=$idcomentario";
$result = mysql_query($sql, $connect) or die("Error en consulta $sql:".mysql_error() );
header("location: noticia.php?id=$_POST")
?>
el ultimo si me envia a donde estaba antes, el de borrar no.
Deja el archivo de borrar así:

<?
//recibimos la variable $id
$idcomentario=$_GET[id];
// Esta es la variable de la noticia en la que estábamos
$id = $_GET[idnoticia];
//conectamos a la base 
$connect=mysql_connect("mrerere","rereree","rerere "); 
//Seleccionamos la base 
mysql_select_db("rererere",$connect); 
//borramos los registros pertenecientes a la id
mysql_query("delete from comentarios where idcomentario='$idcomentario'",$connect);
header("location: noticia.php?id=$_GET[id]")
?>

Y recuerda que el enlace debe ser cómo el que te dije antes:
<a href='borrarcomentario.php?id=$qry[idcomentario]&idnoticia=$id'>Borrar comentario</a>
Doodleo escribió:Deja el archivo de borrar así:

<?
//recibimos la variable $id
$idcomentario=$_GET[id];
// Esta es la variable de la noticia en la que estábamos
$id = $_GET[idnoticia];
//conectamos a la base 
$connect=mysql_connect("mrerere","rereree","rerere "); 
//Seleccionamos la base 
mysql_select_db("rererere",$connect); 
//borramos los registros pertenecientes a la id
mysql_query("delete from comentarios where idcomentario='$idcomentario'",$connect);
header("location: noticia.php?id=$_GET[id]")
?>

Y recuerda que el enlace debe ser cómo el que te dije antes:
<a href='borrarcomentario.php?id=$qry[idcomentario]&idnoticia=$id'>Borrar comentario</a>

Gracias bueno antes comente el uso de idnoticia no lo tengo y al llamar id solamente igual que el primer id del comentario creo que es lo que esta probocando el asunto de que no interprete a cual regresar, por otra parte si utilizo esto id=$qry&idnoticia=$id' me provoca errores por la diferencia en la programacion. Pero bien buscare otra forma de resolverlo quizas cuando borre regresando a otro lugar que no sea la noticia en si....
Ahora el problema está en volver a la noticia, pero el comentario lo borra, no?

Has probado el código que te di antes, qué error te da?

Pruébalo tal cual te lo escribí y cuenta a ver qué pasa
Doodleo escribió:Ahora el problema está en volver a la noticia, pero el comentario lo borra, no?

Has probado el código que te di antes, qué error te da?

Pruébalo tal cual te lo escribí y cuenta a ver qué pasa

El comentario se borra, he probado como dices pero como no tengo un idnoticia me devuelve a nada a un link idnoticia?= y si pongo id me devuelve a un id?= pero lo raro es que en el archivo modificar si me envia a donde deberia ir, creo que es por la confusion por no existir ya ese id pero bien ese problema lo puedo resolver enviando el header a otro lugar que no sea el de la noticia mmmm
Una idea: (Bueno 2):
Dices que el sistema de moderacion de noticias no tiene casi seguridad... por que no lo tapas un poco con .httacess? Con el cpanel. O tambien lo podrias insertar en un sistema de usuario y ponerte solo a ti. Hay un en especial en este foro que me gusta mucho. Mañana te dejo el link (o en 10 mins si lo encuentro hehe)
Edit-------
El link es: http://www.comocreartuweb.com/consultas/showthread.php/34310-TUTORI…
Sí, pero ten en cuenta que es un sistema de noticias, prefiero explicar lo principal que aprender a proteger el directorio con contraseña, por ejemplo jeje

Saludos!
Rabs escribió:Una idea: (Bueno 2):
Dices que el sistema de moderacion de noticias no tiene casi seguridad... por que no lo tapas un poco con .httacess? Con el cpanel. O tambien lo podrias insertar en un sistema de usuario y ponerte solo a ti. Hay un en especial en este foro que me gusta mucho. Mañana te dejo el link (o en 10 mins si lo encuentro hehe)
Edit-------
El link es: http://www.comocreartuweb.com/consultas/showthread.php/34310-TUTORI…

Yo tengo un sistema de noticias y la verdad si me funciona con seguridad implemente algo que encontre en un tutorial de como loguearse y proteger archivos en directorios, si cualquiera intentase entrar a las paginas que utilizo para publicar o editar las noticias no da acceso y solicitaria colocar el usuario y contrasena de esta.

Es algo sencillo, si dispongo de tiempo y ustedes quieren contar con este tipo de segurididad les pasaria la forma como deben hacerlo.
hola, el post wenisimo hace tiempo que buscaba algo igual, pero me viene un error en la parte de editar la noticia en editar.php y en el navegador me sale el siguiente error "Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\AppServ\www\mi-php\news\moderacion\editar.php on line 22" y el codigo es "// Seleccionamos la noticia correspondiente dependiendo del ID especificado en la URL
$result=mysql_query("SELECT * FROM `noticias`.`novedades` WHERE id_noticia=$id", $connect) or die (mysql_error()); "
[contenido no disponible]

A ver si me das una mano con ello ya que me estoy volviendo loco :/. Gracias.
Como puedo hacer para darle formato a la fecha y hora y queden en español, hasta ahora mi formato se ve asi:

Fecha: 2011-10-06 20:46:28

Me gustaria que quedase asi: 06/10/2011 08:46:28 PM
Me gustaria que quedase asi: 06 de octubre 2011 08:46:28 PM
Me gustaria que quedase asi: Jueves 06 de octubre 2011 08:46:28 PM

En esos tipos de formato para ver con cual me conviene mas.
que mas viejo hice todo lo que describes aca y no funciona me meto en publicar.php alli redacto el mensaje cuando le doy publicar mensaje se pasa a la pagina enviar.php y alli queda este sistema tu lo probastes y funciona ¿?