Efectivamente lo probé en el momento en que lo hice y funcionaba, de todos modos tengo pensado actualizar el tema modificando los códigos y añadiéndole alguna que otra cosa :D
[TUTORIAL] Crear sistema de novedades/noticias del tipo pagina.php?id=
cuando subiras lo q falta del panel espero y sea pronto
Muchas gracias por el sistema, voy a integrarlo a un sitio web, espero no de problemas y funcione excelente.
Saludos cordiales.
Saludos cordiales.
Hola, estoy intentando crear una web basada en este sistema pero no hay forma de solucionar este error en los documentos comentarios.php y noticia.php. No se que es lo que pasa y no tengo mucho conocimiento de PHP por lo que no entiendo muy bien el error que me devuelve. Si pudierais ayudarme. Gracias
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\wip\moderacion\comentarios.php:8) in C:\AppServ\www\wip\moderacion\comentarios.php on line 15
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\wip\moderacion\comentarios.php:8) in C:\AppServ\www\wip\moderacion\comentarios.php on line 15
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Temp\root\Noticias\noticias.php on line 20
Valla tiene muchos errores esto.. no he logrado echarlo a andar [:?]
Hola Buenos dias!
no puedo ver las imagenes para poder crear las tablas, ojala me puedas enviar las pantallas a mi correo gracias! [correo eliminado]
Saludos.
no puedo ver las imagenes para poder crear las tablas, ojala me puedas enviar las pantallas a mi correo gracias! [correo eliminado]
Saludos.
Digo lo mismo, falta la base de datos.
Soy nuevo en este foro y en lo que a desarrollo web se refiere, de todas formas, he utilizado el código que aparece al comienzo y como he visto que hay gente que dice que no funciona o faltan las BBDD, pues espero que al autor no le parezca mal, pero aquí va mi aportación y mi granito de arena, en principio use el código para aprender acerca de como hacer algo similar y ya que funciona, por si a alguien mas le vale de algo. La explicación esta dada en la primera página, me voy a limitar a solo copiar el código aquí, no se si es lo mas correcto, ante lo cual si esta mal, solo díganmelo y lo corregiré :D
Empezamos con la BBDD:
Y ahora con los archivos de php dentro de la carpeta raiz:
noticias.php
config.php
noticia.php
comentar.php
publicar.php
enviar.php
Y ahora dentro de la carpeta de moderacion, los siguientes archivos php:
index.php
borrar.php
editar.php
actualizar.php
Espero que le sea de utilidad a alguien.
Empezamos con la BBDD:
--
-- Estructura de tabla para la tabla `comentarios`
--
CREATE TABLE IF NOT EXISTS `comentarios` (
`id` int(11) NOT NULL,
`id_noticia` int(11) NOT NULL,
`nick` varchar(20) COLLATE utf8_spanish2_ci NOT NULL,
`email` varchar(60) COLLATE utf8_spanish2_ci NOT NULL,
`fechaComentario` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`comentario` text COLLATE utf8_spanish2_ci NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish2_ci;
--
-- Índices para tablas volcadas
--
--
-- Indices de la tabla `comentarios`
--
ALTER TABLE `comentarios`
ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `id` (`id`);
--
-- AUTO_INCREMENT de las tablas volcadas
--
--
-- AUTO_INCREMENT de la tabla `comentarios`
--
ALTER TABLE `comentarios`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=6;--
-- Estructura de tabla para la tabla `noticias`
--
CREATE TABLE IF NOT EXISTS `noticias` (
`id_noticia` int(11) NOT NULL,
`autor` varchar(30) NOT NULL,
`fecha` varchar(20) NOT NULL,
`textoNoticia` text NOT NULL,
`categoria` varchar(20) NOT NULL,
`titulo` varchar(50) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4;
--
-- Índices para tablas volcadas
--
--
-- Indices de la tabla `noticias`
--
ALTER TABLE `noticias`
ADD PRIMARY KEY (`id_noticia`), ADD UNIQUE KEY `id_noticia` (`id_noticia`);
--
-- AUTO_INCREMENT de las tablas volcadas
--
--
-- AUTO_INCREMENT de la tabla `noticias`
--
ALTER TABLE `noticias`
MODIFY `id_noticia` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=6;Y ahora con los archivos de php dentro de la carpeta raiz:
noticias.php
<!DOCTYPE html>
<html lang ="es">
<head>
<title>Lista de noticias publicadas</title>
<meta charset="iso-8859-1" />
</head>
<body>
<?php
include_once("config.php");
$query=("SELECT * FROM $tabla ORDER BY id_noticia DESC");
$result = $conexion->query($query);
if(!mysqli_num_rows($result)){
echo "Todavía no ha sido publicada ninguna noticia";
}else{
while($row = mysqli_fetch_array($result)){
$fechaNoticia = date_create($row['fecha']);
$fechaBD = date_format( $fechaNoticia, "d/m/Y H:i");
echo "$row[titulo]</br>
<small>Publicado por $row[autor] el día $fechaBD</small></br>
$row[textoNoticia]</br><small>Publicado en $row[categoria] / <a href='noticia.php?id=".$row['id_noticia']."'>Dejar un comentario</a></small>";
}
}
?>
</body>
</html>config.php
<?php
#Sistema de noticias por Doodleo para la comunidad 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 = "pruebas";
# Usuario de la base de datos
$db_usuario = "root";
# Contraseña del usuario
$db_pass = "root";
# Tabla de la BBDD
$tabla='noticias';
# Selección y conexion a la base de datos
$conexion = mysqli_connect($servidor,$db_usuario,$db_pass, $db) or die( "Error: " . mysqli_error($conexion));
?>noticia.php
<!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 valido
//$id= strip_tags($_GET["id"]);
// if(!isnumeric($id) or $id<=0){
// header("location: noticias.php");
// return false;
//}
$id = $_GET['id'];
$query = ("SELECT * FROM $tabla WHERE id_noticia=$id");
$result=$conexion->query($query);
if(mysqli_num_rows($result)){
while ($row = mysqli_fetch_array($result)){
echo "$row[titulo]</br>
<small>Publicado por $row[autor] el día $row[fecha]</small></br>
</br>
$row[textoNoticia]</br>
<h1><u>Comentarios</u></h1>";
$comentarios_query= ("SELECT * FROM comentarios WHERE id_noticia=$id ORDER BY fechaComentario ASC ");
$comentarios = $conexion->query($comentarios_query);
//Compruebo si hay algun comentario
if (!mysqli_num_rows($comentarios)){
echo "Sin comentarios";
}else{
//Si hay algun comentario, los voy cargando uno a uno.
while($comentario = mysqli_fetch_array($comentarios)){
//Importante que los campos se carguen en el orden que aparecen en la base de datos.
$nick = $comentario['nick'];
//Guardo la variable TimeStamp de la BBDD y le indico a php que es una fecha.
$fechaComentario = date_create($comentario['fechaComentario']);
$comentario = $comentario['comentario'];
//Creo la variable fechaBD, para almacenar la fecha despues de ser formateada al estilo deseado.
$fechaBD = date_format( $fechaComentario, "d/m/Y H:i");
echo "$nick dijo... </br>
$comentario</br>
<small>Publicado el $fechaBD </small></br>";
}
}
}
//Liberamos los lectores de registros
mysqli_free_result($comentarios);
mysqli_free_result($result);
//Guardamos la hora actual en una variable
$fechaActual = time();
echo "</br></br>
<form method='post' action='comentar.php'>
<input type='hidden' name='id_noticia' id='id_noticia' 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='email' name='email' id='email' maxlength='60' /></label></br>
<label>Tu comentario</br>
<textarea name='comentario' id='comentario' ></textarea></label></br>
<input type='hidden' name='fecha' id='fecha' value=$fechaActual></br>
<button type='submit'>Enviar comentario</button></form> ";
}
?>
</body>
</html>comentar.php
<?php
#Configuramos la zona horaria para que sea la de España
date_default_timezone_set('Europe/Madrid');
#Guardamos en las variables de fecha y hora de envío del comentario
$fecha = date("Y/m/d/ H:i:s");
#Información enviada por el ususario
$id = strip_tags($_POST['id_noticia']);
$nick = strip_tags($_POST['nick']);
$email = strip_tags($_POST['email']);
$comentario = strip_tags($_POST['comentario']);
include_once("config.php");
#Validamos el comentario
if(!is_numeric($id) or $id<=0 or !$id or !$nick or !$email or !$comentario)
{
echo "Te faltó por completar algo!";
return false;
}
#Ingresamos el comentario en la BBDD
$query = ("INSERT INTO comentarios (id_noticia, nick , email , comentario, fechaComentario) VALUES ('$id', '$nick', '$email', '$comentario', '$fecha' )");
$conexion->query($query);
#Volvemos a la noticia
header ("location: noticia.php?id=$id");
?>publicar.php
<?php
echo '
<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="textoNoticia"></textarea></label><br/><br/>
<button type="submit">Publicar noticia</button>
</form>
</body>
</html>
';
?>enviar.php
<?php
//Declaramos la variable para guardar la fecha en la que se publicó la noticia
$fecha = date("Y/m/d/ H:i:s");
//Conectamos con la BBDD
include_once('config.php');
//Recogemos las variables
$autor = $_POST['autor'];
$titulo = $_POST['titulo'];
$categoria = $_POST['categoria'];
$textoNoticias = $_POST['textoNoticia'];
//Comprobamos que han cubierto los datos de la nueva noticia
if( !$autor || !$titulo || !$categoria || !$novedad)
{
echo '¡Tienes que completar todos los campos para publicar tu noticia!';
}else{
//Ingresamos la noticia en la BBDD
$query = ("INSERT INTO noticias (autor, titulo, categoria, fecha, textoNoticia) VALUES ('$autor', '$titulo', '$categoria', '$fecha', '$textoNoticia')");
$conexion->query($query);
}
?>Y ahora dentro de la carpeta de moderacion, los siguientes archivos php:
index.php
<!DOCTYPE html >
<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 BBDD
include_once("../config.php");
//hacemos las consultas
$query=("SELECT * FROM noticias");
$result = $conexion->query($query);
$totalRegistros = mysqli_num_rows($result);
?>
</head>
<body>
<?php
$query = ("SELECT * FROM noticias ORDER BY id_noticia");
$result = $conexion->query($query);
if (mysqli_num_rows($result))
{
while ($row = mysqli_fetch_array($result))
{
echo " $row[titulo]</br>
Publicado por $row[autor] el día $row[fecha]</br></br>
$row[textoNoticia]</br></br>
Publicado en $row[categoria]</br>
<a href='../noticia.php?id=$row[id_noticia]'> Deja tu comentario</a></br>
<a href='borrar.php?id=$row[id_noticia]'>Borrar</a></br>
<a href='editar.php?id=$row[id_noticia]'>Editar</a></br></br></br>";
}
}
?>
</body>
</html>borrar.php
<?php
//Declaramos la ID en la que recibimos la ID que pusimos en la URL, por tanto, recibimos el ID de la noticia que queremos borrar
$id = $_GET['id'];
//Conectamos a la BBDD
include_once('../config.php');
//Ahora creamo la sentencia SQL para borrar la noticia correspondiente
$query = " DELETE FROM noticias WHERE id_noticia=$id" ;
$conexion->query($query) or die(mysqli_error()) ;
header ("location: index.php");
?>editar.php
</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 BBDD
include_once('../config.php');
//Selecionamos la noticia correspondiente dependiendo del ID especificado en la URL
$query = "SELECT * FROM noticias WHERE id_noticia=$id";
$result = $conexion->query($query) or die (mysqli_error());
if (mysqli_num_rows($result))
{
while ($row = mysqli_fetch_array($result))
{
//Mostramos un formulario con los datos de la noticia en inputs para poder modificarlos
echo " <form method='POST' action='actualizar.php' >
<input type='hidden' name='id' id='id' value='$id' />
Titulo de la noticia: <input type='text' name='titulo' id='titulo' value='$row[titulo]' /></br>
Autor de la noticia: <input type='text' name='autor' id='autor' value='$row[autor]' /></br>
Categoría de la noticia: <input type='text' name='categoria' id='categoria' value='$row[categoria]' /></br>
Texto de la noticia: <textarea name='textoNoticia' id='textoNoticia'>$row[textoNoticia]</textarea></br>
<button type='submit'> Editar noticia</button>
</form>
";
}
}
?>
</body>
</html>actualizar.php
<?php
//Declaramos las variables enviadas por el formulario
$id = $_POST['id'];
$titulo = $_POST['titulo'];
$autor = $_POST['autor'];
$categoria = $_POST['categoria'];
$textoNoticia = $_POST['textoNoticia'];
//Conectamos a la BBDD
include_once('../config.php');
//Creamos la sentencia SQL para editar los campos de la noticia seleccionada
$query = "UPDATE noticias SET titulo='$titulo', autor='$autor', categoria='$categoria' , textoNoticia='$textoNoticia' where id_noticia=$id ";
$conexion->query($query) or die (mysqli_error());
header ("location: index.php");
?>Espero que le sea de utilidad a alguien.
amigo me saltan varios errores :/ no se si me podrias ayudar porfa
Si dices cuales son, igual si ... aunque mis conocimientos en php son muy cortitos, pero bueno de todas formas, igual otra persona sepa ;)
Hola, ¿podrian volver a subir la imagen de la base de datos que está iniciando el tema? Soy nuevo en esto y voy poco a poco aprendiendo...
y pensar que gracias a este pequeño sistema hize mi gran proyecto web, el cual tiene una seccion de videos, blog, memes y demas con url amigables, sistema de comentarios, paginas de error, redes sociales, con cientos de visitas diarias y etc etc etc, gracias al creador del post que hasta ahora no me creo que haya progresado tanto mi web gracias a este sistema :D, para los que se inician ahi les adjunto este sistema testeado con base de datos. Saludos
pole! +1
gracias
gracias
danny escribió:y pensar que gracias a este pequeño sistema hize mi gran proyecto web, el cual tiene una seccion de videos, blog, memes y demas con url amigables, sistema de comentarios, paginas de error, redes sociales, con cientos de visitas diarias y etc etc etc, gracias al creador del post que hasta ahora no me creo que haya progresado tanto mi web gracias a este sistema :D, para los que se inician ahi les adjunto este sistema testeado con base de datos. Saludos
Hola gracais por el archivo, ya lo descargado el archivo y creado las tablas en la base de datos, ¿qué tengo que hacer ahora para hacerlo funcionar?
saludos :)
A pesar de tener algunos años, un excelente tutorial para los que apenas empiezan a desarrollar. :)
Solo seria importante resubir la imagen donde especificas los campos que usas en la BD para seguirle dando vigencia al hilo.