Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Como hacer un Sistema de Noticias con PHP y MySQL
#1
En este tutorial desarrollaremos un sistema de noticias (tipo blog) que puede ser implementado en cualquier proyecto web en el que estéis trabajando. Este sistema incluye un archivo para mostrar las noticias, otro para añadir una nueva noticia, otro para modificarla y, por último, uno para eliminarlas


Paso 1.


Creamos la tabla en la base de datos. Copia, pega y ejecuta el siguiente código SQL:



Código:
CREATE TABLE `noticias` (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`titulo`  varchar(100) NOT NULL ,
`fecha`  datetime NOT NULL ,
`texto`  text NOT NULL ,
PRIMARY KEY (`id`)
)


Paso 2.


Creamos el archivo de conexión con la base de datos.



Código:
<?php
// Realizamos la conexión con la base de datos
 
$db_host = "";                    // Servidor donde está alojada la base de datos
$db_name = "";                    // Nombre de la base de datos
$db_user = "";                    // Usuario de la base de datos
$db_password = "";                // Contraseña de la base de datos
$db_table = "noticias";           // Nombre de la tabla de la base de datos
$conexion = mysql_connect($db_host, $db_user, $db_password) or die("No se ha podido realizar la conexión con la base de datos. Error: ".mysql_error());
mysql_select_db($db_name, $conexion);
 
?>


Paso 3.


Ahora vamos a crear el archivo que incluya todas las noticias. Este consta de dos partes. Mediante una condicional (if) haremos que muestre una noticia según la id que recibe por medio de GET. Si no GET no recibe ningún valor, se muestran todas las noticias. Para entenderlo mejor, veamos el código.



Código:
<?php
include("conexion.php"); // Incluimos nuestro archivo de conexión con la base de datos
 
if(isset($_GET['noticia']))
{
    if(!empty($_GET['noticia'])) // Si el valor de "noticia" no es NULL, continua con el proceso
    {
        $id_noticia = (int) mysql_real_escape_string($_GET['noticia']);
        $query_noticias = mysql_query("SELECT titulo, fecha, texto FROM ".$db_table." WHERE id = '".$id_noticia."' LIMIT 1"); // Ejecutamos la consulta
        if(mysql_num_rows($query_noticias) > 0) // Si existe la noticia, la muestra
        {
            while($columna = mysql_fetch_assoc($query_noticias)) // Realizamos un bucle que muestre todas las noticias, utilizando while.
            {
                echo '
                <table>
                    <tr>
                        <td>'.$columna['titulo'].'</td>
                        <td>'.$columna['fecha'].'</td>
                    </tr>
                    <tr>
                        <td colspan="2">'.$columna['texto'].'</td>
                    </tr>
                    <tr>
                        <td><a href="./">Atrás</a></td>
                    </tr>
                </table>
                ';
            }
        }
        else
        {
            echo 'La noticia que solicitas, no existe.'; // Si no, muestra un error
        }
    }
    else
    {
        echo 'Debes seleccionar una noticia.'; // Si GET no recibe ningún valor, muestra un error
    }
}
else
{
    $query_noticias = mysql_query("SELECT * FROM ".$db_table.""); // Ejecutamos la consulta
    $limite = 100; // Número de carácteres a mostrar antes de el "Leer más"
    while($columna = mysql_fetch_assoc($query_noticias)) // Realizamos un bucle que muestre todas las noticias, utilizando while.
    {
        echo '
        <table>
            <tr>
                <td>'.$columna['titulo'].'</td>
                <td>'.$columna['fecha'].'</td>
            </tr>
            <tr>
                <td colspan="2">'.substr($columna['texto'], 0, $limite).' [...]</td> <!-- Utilizamos la función substr para mostrar un determinado número de carácteres. Ver Ver http://www.php.net/manual/es/function.substr.php -->
            </tr>
            <tr>
                <td colspan="2"><a href="?noticia='.$columna['id'].'">Leer más</a></td> <!-- Incluimos un enlace para leer la noticia entera -->
            </tr>
        </table>
        ';
    }
}
?>



Paso 4.


Ahora tenemos que crear los archivos que añadan, modifiquen y eliminen las noticias. Dejo los respectivos códigos:


nueva_noticia.php:


Con este archivo lo que hacemos es, mediante INSERT de SQL, insertar un nuevo registro en la base de datos que contendrá la noticia.

Código PHP:
<?php
include("conexion.php"); // Incluimos nuestro archivo de conexión con la base de datos
 
if(isset($_POST['añadir'])) // Si el boton de "añadir" fué presionado ejecuta el resto del código
{
 
   $titulo mysql_real_escape_string($_POST['titulo']); // Recibimos el valor del <input name="titulo"...
 
   $texto mysql_real_escape_string($_POST['texto']);   // Recibimos el valor de la <textarea name="titulo"...
 
   if(!empty($titulo) && !empty($texto)) // Comprobamos que los valores recibidos no son NULL
 
   {
 
       $query_NuevaNoticia mysql_query("INSERT INTO ".$db_table." SET titulo = '".$titulo."', fecha = NOW(),texto = '".$texto."'"); // Realizamos una consulta a la base de datos para insertar la nueva notica
 
 
       if($query_NuevaNoticia)
 
       {
 
           echo 'La noticia se añadió correctamente a la base de datos.'// Si el registro (la noticia) se insertó en la base de datos, mostramos este mensaje
 
       }
 
       else
        
{
 
           echo 'La noticia no pudo ser insertada en la base de datos'// Si el registro (la noticia) no se insertó en la base de datos, mostramos este mensaje
 
       }
 
   }
 
   else
    
{
 
       echo 'Los campos no pueden estar vacios. Rellénalos para insertar la noticia en la base de datos'// Si los valores recibidos por los campos de texto están vacios, no inserta el registro y muestra este mensaje
 
   }
}
 
?>
 
<form action="nueva_noticia.php" method="post"> <!-- Creamos el formulario, utilizando la etiqueta form, cuyo atributo action="" indicará donde se procesará el formulario -->
    Título de la noticia: <input name="titulo" type="text" /> <br />
    Texto de la noticia:  <textarea name="texto"></textarea> <br />
    <input type="submit" name="añadir" value="Añadir noticia" />
</form> 

modificar_noticia.php:
Para modificar una noticia utilizaremos este archivo, que hace uso de UPDATE para actualizar un registro.

Código PHP:
<?php
include("conexion.php"); // Incluimos nuestro archivo de conexión con la base de datos
 
$query_MostrarTitulos mysql_query("SELECT id, titulo, fecha FROM ".$db_table.""); // Ejecutamos la consulta
 
while($columna_MostrarTitulos mysql_fetch_assoc($query_MostrarTitulos)) // Realizamos un bucle que muestre todas las noticias, utilizando while.
{
 
   echo '<a href="?noticia='.$columna_MostrarTitulos['id'].'">'.$columna_MostrarTitulos['titulo'].' / '.$columna_MostrarTitulos['fecha'].'</a> <br />'  // Mostramos un enlace para modificar cada noticia
}
 
if(isset(
$_POST['modificar'])) // Si el boton de "modificar" fúe presionado ejecuta el resto del código
{
 
   $id = (int) mysql_real_escape_string($_POST['id']);
 
   $titulo mysql_real_escape_string($_POST['titulo']);
 
   $texto mysql_real_escape_string($_POST['texto']);
 
 
   $query_modificar mysql_query("UPDATE ".$db_table." SET titulo = '".$titulo."', fecha = NOW(), texto = '".$texto."' WHERE id = '".$id."'"); // Ejecutamos la consulta para actualizar el registro en la base de datos
 
 
   if($query_modificar)
 
   {
 
       echo 'La noticia se modificó corectamente'// Si la consulta se ejecutó bien, muestra este mensaje
 
   }
 
   else
    
{
 
       echo 'La noticia no se modificó'// Si la consulta no se ejecutó bien, muestra este mensaje
 
   }
}
 
if(isset(
$_GET['noticia']))
{
 
   $id_noticia = (int) mysql_real_escape_string($_GET['noticia']); // Recibimos el id de la noticia por medio de GET
 
   $query_NoticiaCompleta mysql_query("SELECT id, titulo, texto FROM ".$db_table." WHERE id = '".$id_noticia."' LIMIT 1"); // Ejecutamos la consulta
 
   $columna_MostrarNoticia mysql_fetch_assoc($query_NoticiaCompleta);
 
   echo '
    <form action="modificar_noticia.php" method="post"> <!-- Creamos el formulario, utilizando la etiqueta form, cuyo atributo action="" indicará donde se procesará el formulario -->
        Título de la noticia: <input name="titulo" type="text" value="'
.$columna_MostrarNoticia['titulo'].'" /> <br />
        Texto de la noticia:  <textarea name="texto">'
.$columna_MostrarNoticia['texto'].'</textarea> <br />
 
        <input type="hidden" name="id" value="'
.$columna_MostrarNoticia['id'].'" /> <!-- Creamos un campo de texto oculto para pasar el id de la noticia -->
        <input type="submit" name="modificar" value="Modificar noticia" />
    </form>
    '
;
}
?>

eliminar_noticia.php:
Este archivo lo utilizaremos para eliminar una noticia de la base de datos, utilizando DELETE.
Código PHP:
<?php
include("conexion.php"); // Incluimos nuestro archivo de conexión con la base de datos
 
$query_MostrarTitulos mysql_query("SELECT id, titulo, fecha FROM ".$db_table.""); // Ejecutamos la consulta
 
while($columna_MostrarTitulos mysql_fetch_assoc($query_MostrarTitulos)) // Realizamos un bucle que muestre los títulos de las noticias, utilizando while.
{
 
   echo $columna_MostrarTitulos['titulo'].' - <a href="?noticia='.$columna_MostrarTitulos['id'].'">Eliminar</a> <br />' // Mostramos el titulo y un enlace para eliminar la noticia
}
 
if(isset(
$_GET['noticia']))
{
 
   $id = (int) mysql_real_escape_string($_GET['noticia']);
 
 
   $query_eliminar mysql_query("DELETE FROM ".$db_table." WHERE id = '".$id."'"); // Ejecutamos la consulta para eliminar el registro de la base de datos
 
 
   if($query_eliminar)
 
   {
 
       echo 'La noticia se eliminó corectamente'// Si la consulta se ejecutó bien, muestra este mensaje
 
   }
 
   else
    
{
 
       echo 'La noticia no se eliminó'// Si la consulta no se ejecutó bien, muestra este mensaje
 
   }
}
?>

estilos.css

Esta parte es opcional, es solo para añadirle un poco de CSS:

Código:
body {
background-color: #D7D8DA;
font-family:Georgia, "Times New Roman", Times, serif;
}

a, a:visited { color: #5D5E60; text-decoration:none; }
a:hover { text-decoration: underline; }

#menu {
background-color: #DCDCDC;
border:1px solid #A7A7A7;
width: 260px;
margin: auto;
padding: 10px;
margin-bottom: 10px;
border-radius: 4px;
-moz-border-radius:4px;
-webkit-border-radius:4px;
}
#menu a{
color: #434444;
text-decoration:none;
}
#menu a:hover{
text-decoration: underline;
}

#contenido {
background-color: #B7B9C0;
width: 900px;
margin: auto;
padding: 20px;
border-radius: 4px;
-moz-border-radius:4px;
-webkit-border-radius:4px;
}

aclaro, el estilo no esta bien trabajado esta echo muy básico, recomiendo que prueben con un servidor local " localhost "
cualquier problema no duden en consultar esto es un sistema básico que se necesita en cualquier web
!
Ahora quieres saber... Quien soy?
Soy un delincuente, mi crimen es la curiosidad, Mi crimen es juzgar a las personas por lo que dicen y piensan, y no por lo que aparentan.
Mi crimen es ser mas inteligente que vos, algo por lo cual, nunca me olvidaras.
#2
Por favor, crea tus temas en los foros correctos.

Tema movido a Programación y Desarrollo Web
WWW
#3
Hola para poder complementar este buen aporte también les comparto algo que encontré hace algún tiempo y me pareció bueno, así que aquí esta en el siguiente link espero sea de su agrado y gracias por este aporte, saludos. 

Sistema de Noticias

http://www.mediafire.com/download/d7ytqqrlvmf71ah
#4
amigo y cual seria el codigo completo? algun link de descarga quedaria bien >_< aparte que no veo el Index para los Links Enlazados como es eso ._. ajajaja xD >_<
Firma editada por moderación: Los enlaces con ID de referido no estan permitidos.
WWW


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  Como usar Datatable PHP & JSon & Mysql WMasterT 4 111 08-08-2018, 07:37 PM
Último mensaje: avdarie
  Subir multiples archivos o imágenes al servidor y guardarlas con PHP y MySQL cmascreativo 5 233 02-03-2018, 08:08 AM
Último mensaje: easy english
Bug Problema conectando con MySql remoto yuma2009 2 177 01-02-2018, 11:52 AM
Último mensaje: easy english
  error mysql en php admin efbsfcd 2 147 14-12-2017, 12:49 AM
Último mensaje: jeje
  Problema conexion remota mysql efbsfcd 2 281 07-07-2017, 07:19 AM
Último mensaje: efbsfcd
  [Tutorial] Pasar MySQL a MySQLi[POO] amner 6 528 03-05-2017, 02:05 AM
Último mensaje: ReyNexo23
  Como subir Archivos, Imagenes PHP MysQL gassip 0 1,432 24-10-2016, 06:59 AM
Último mensaje: gassip
  [Tutorial] Pasar base de datos MySQL por SSH Jvh_22 1 448 11-10-2016, 04:12 PM
Último mensaje: efbsfcd
  falla conexion a mysql [email protected] 4 648 01-09-2016, 06:52 AM
Último mensaje: easy english
  Subir multiples archivos o imágenes al servidor y guardarlas con PHP y MySQL cmascreativo 1 893 18-02-2016, 09:55 PM
Último mensaje: index



Usuarios navegando en este tema: 1 invitado(s)