Sistema de noticias con php y mysql – V

#codigo{background:#000;color:#FFF;}

Sistema de noticias con php y mysql

Hola amigos, nos encontramos nuevamente en esta quinta entrada para seguir con nuestro sistema de noticias con php y mysql, en esta parte vamos a ver cómo crear nuestra página principal donde van a verse las noticias desde que el usuario entre a nuestro sitio web.

En las entradas anteriores vimos como hacer un “sistema de usuario con php y mysql” también vimos como establecerle privilegios y tanto al administrador como el usuario, bueno en esta parte veremos cómo publicar las noticias y cómo crear un formulario de comentario para que los visitantes nos dejen sus opiniones.

Pero este sistema de comentarios no estará visible para todo el mundo porque no queremos que los usuarios que no estén registrados puedan opinar sobre dichas noticias, lo que si vamos a querer es que puedan ver los comentarios que han dejado los que ya están registrados.

Para eso es el sistema de usuarios, con el podremos controlar lo que queremos que salga en la página web. Sin marearlos tanto empecemos con el código que dicho sea de paso vuelvo y les recuerdo al final están los ficheros listo para descargarlo y probar cómo va el script. Pongo el código y luego explico un poco lo que hemos hecho.
Index.php

<?php
session_start();
error_reporting(E_ALL ^ E_NOTICE);
require_once(‘conexion.php’);
require_once(‘juego-registro.php’);
  ?>
<!DOCTYPE html>
<html lang=”es”>
<head>
    <meta charset=”utf-8″ />
    <title>Noticiero con php y mysql</title>
    <link rel=”stylesheet” href=”style/stylo.css” type=”text/css” />
</head>
<body>
<header>
    <div id=’titulo’><h1>www.comocrearmiweb.com</h1></div>
    <?php if($_SESSION[‘name’]){
        echo ‘<div id=”sesion”><div id=”sesion”>’.$_SESSION[‘name’].” “.$_SESSION[‘apelle’].’|| <a href=”salir.php”>Serrar Sesion</a></div></div>’;
        }else{ ?>
    <div id=’sesion’><div id=’sesion’><a href=”entrar-user.php”>Inisiar Sesion</a> O <a href=”login.php”>Registrarme</a></div></div>
    <?php } ?>
</header>
<nav>
    <a href=”index.php”><menu>Home</menu></a>
    <a href=”http://www.facebook.com”><menu>Facebook</menu></a>
    <a href=”http://www.twitter.com”><menu>Twitter</menu></a>
        <?php if($_SESSION[‘niv’]==’2′){echo ‘<a href=”enviar-noticias.php”><menu>Administrar</menu></a>’;} ?>
</nav>
<section id=’cuerpo’>
    <?php do { ?>
      <section id=’contenido’>
        <article id=’titulo’><h2><?php echo $row_noticias[‘titulo’]; ?></h2>
        </article>
        <article id=’foto’><?php include(‘imagen.php’); ?></article>    
        <article id=’noticias’><h2><?php echo $row_noticias[‘descripcion’]; ?></h2>
          <br>
          <?php echo $row_noticias[‘texto’]; ?>
<section id=’paginacion’>
            
          </section>
          <div id=”mensaje”>
<?php if ($pageNum_noticias > 0) { ?>
                    <a href=”<?php printf(“%s?pageNum_noticias=%d%s”, $currentPage, 0, $queryString_noticias); ?>”> – Primero</a>
                    <?php }  ?>
                <?php if ($pageNum_noticias > 0) { ?>
                    <a href=”<?php printf(“%s?pageNum_noticias=%d%s”, $currentPage, max(0, $pageNum_noticias – 1), $queryString_noticias); ?>”> – Anterior</a>
                    <?php }?>
                <?php if ($pageNum_noticias < $totalPages_noticias) { ?>
                    <a href=”<?php printf(“%s?pageNum_noticias=%d%s”, $currentPage, min($totalPages_noticias, $pageNum_noticias + 1), $queryString_noticias); ?>”>Siguiente – </a>
                    <?php }?>
                <?php if ($pageNum_noticias < $totalPages_noticias) { ?>
                    <a href=”<?php printf(“%s?pageNum_noticias=%d%s”, $currentPage, $totalPages_noticias, $queryString_noticias); ?>”>&Uacute;ltimo</a>
                    <?php } ?></div>
            <div id=”comentarios”>
            <?php
            mysql_select_db($bd,$conexion);
$query=”SELECT * FROM comentarios WHERE id_noticia=$row_noticias[id_noticia]”;
$consulta= mysql_query($query,$conexion);
if($row_noticias[‘id_noticia’]==0){
    echo ‘No hay datos para mostrar’;
}else{
while($row=mysql_fetch_assoc($consulta))
{
    echo ‘<article id=”cuerpo-coment”>’;
    echo ‘<div>’;
    echo ‘<font color=”#0000CC”>’.$row[‘nombre’].'</font><br />’;
    echo ‘</div>’;
    echo $row[‘texto’];
    echo ‘<div>’;
    echo ‘<font size=”-1″ color=”#666666″>Publicado el dia ‘.$row[‘fecha’].'</font>’;
    echo ‘</div>’;
    echo ‘</article>’;
    }mysql_free_result($consulta);
}
           
            ?>
            </div>
         <?php if($_SESSION[‘name’]){ ?>
                <article id=”comentario”>  
              <form action=”coment.php” method=”post”><br /> <br />
            Deja tu comentario:<br />
         <?php if($_GET[‘error’]==’opinion’)
                {echo ‘<font color=”#FF0000″>Tienes que enviar un comentario</font>’;} ?><br />
            <textarea  rows=”3″ cols=”50″ name=”opinion” ></textarea><br />
            <input type=”submit” value=”Comentar” id=”submit”/>
            <input type=”hidden” value=”<?php echo $row_noticias[‘id_noticia’]; ?>” name=’id’>
            <input type=”reset” value=”Borrar Todo” id=”submit” /><br />
           
            </form>
            <br />
            </article>
               
            <?php }else{echo ‘<font color=”#FF0000″ size=”+2″>Para dejar tu opinion tienes que estar logeado </font><a href=”entrar-user.php”>Logearme</a> || <a href=”login.php”>Registrarme</a>’;} ?>
      </section>
     <?php } while ($row_noticias = mysql_fetch_assoc($noticias)); ?>

<aside>
  <div id=’publicaciones’><h2>Ultimas publicaciones </h2></div>
    Titulares region repetida 
</aside>
</section>
<footer>
copiry@2012 | <a href=”http://www.comocrearmiweb.com”>comocrearmiweb.com</a> | Diseñado por Eriberto Peguero
</footer>
</body>
</html>
<?php
mysql_free_result($noticias);
?>

Si te fijas es el mismo código HTML de las entradas anteriores solo que en esta parte le hemos agregado mas código php y hemos incluido varios documentos php los que nos permitirá interactuar con nuestro documento html. Lo primero que vemos es en la parte de arriba este codigo

require_once(‘juego-registro.php’);

Es lo unico nuevo que hemos agregado en la cavezera de nuestro documento HTML, tambien hemos sustituido el texto que teniamos antes por el codigo php que traera nuestra noticias.

<?php do { ?>
      <section id=’contenido’>
        <article id=’titulo’><h2><?php echo $row_noticias[‘titulo’]; ?></h2>
        </article>
        <article id=’foto’><?php include(‘imagen.php’); ?></article>     
        <article id=’noticias’><h2><?php echo $row_noticias[‘descripcion’]; ?></h2>
          <br>
          <?php echo $row_noticias[‘texto’]; ?>

En el caso de las imagenes hemos creado un archivo php que genera una imagen aleatoria y lo hemos incluido donde corresponde a la imagen con el siguiente codigo.

<?php include(‘imagen.php’); ?>

Y el archivo php es el siguiente
imagen.php

<?php
$img = array(‘<img src=”imagen/imagen1.jpg”>’,'<img src=”imagen/imagen2.PNG”>’,'<img src=”imagen/imagen3.jpg”>’,'<img src=”imagen/imagen4.jpg”>’);
$imagen = array_rand($img,2);
foreach($imagen as $imagen);
{
    echo $img[$imagen];
}
?>

A este archivo php pueden agregarle tanta imagenes como quieran vas adelante vamos haber como subir esta imagen al servidor y que corresponda a cada noticia pero por ahora lo vamos a dejar hay.

Y mas abajo esta el codigo de apaginacion de las noticiasque es el siguiente codigo

<?php if ($pageNum_noticias > 0) { ?>
                    <a href=”<?php printf(“%s?pageNum_noticias=%d%s”, $currentPage, 0, $queryString_noticias); ?>”> – Primero</a>
                    <?php }  ?>
                <?php if ($pageNum_noticias > 0) { ?>
                    <a href=”<?php printf(“%s?pageNum_noticias=%d%s”, $currentPage, max(0, $pageNum_noticias – 1), $queryString_noticias); ?>”> – Anterior</a>
                    <?php }?>
                <?php if ($pageNum_noticias < $totalPages_noticias) { ?>
                    <a href=”<?php printf(“%s?pageNum_noticias=%d%s”, $currentPage, min($totalPages_noticias, $pageNum_noticias + 1), $queryString_noticias); ?>”>Siguiente – </a>
                    <?php }?>
                <?php if ($pageNum_noticias < $totalPages_noticias) { ?>
                    <a href=”<?php printf(“%s?pageNum_noticias=%d%s”, $currentPage, $totalPages_noticias, $queryString_noticias); ?>”>&Uacute;ltimo</a>
                    <?php } ?>

Luego mas abajo vemos el codigo que nos traera los comentarios que correspondan a esa noticia y les aplicamos un condiccionar al formulario, si la sesion no existe no mostrara el formulario en cambio si la session existe entonces el formulario aparecera. El codigo es el siguiente

?>
            </div>
         <?php if($_SESSION[‘name’]){ ?>
                <article id=”comentario”>  
              <form action=”coment.php” method=”post”><br /> <br />
            Deja tu comentario:<br />
         <?php if($_GET[‘error’]==’opinion’)
                {echo ‘<font color=”#FF0000″>Tienes que enviar un comentario</font>’;} ?><br />
            <textarea  rows=”3″ cols=”50″ name=”opinion” ></textarea><br />
            <input type=”submit” value=”Comentar” id=”submit”/>
            <input type=”hidden” value=”<?php echo $row_noticias[‘id_noticia’]; ?>” name=’id’>
            <input type=”reset” value=”Borrar Todo” id=”submit” /><br />
           
            </form>
            <br />
            </article>
               
            <?php }else{echo ‘<font color=”#FF0000″ size=”+2″>Para dejar tu opinion tienes que estar logeado </font><a href=”entrar-user.php”>Logearme</a> || <a href=”login.php”>Registrarme</a>’;} ?>
      </section>
     <?php } while ($row_noticias = mysql_fetch_assoc($noticias)); ?>

Luego de esto en la parte final de nuestro documento HTML esta este codigo que es el que livera la consulta de nuestro registro php

<?php
mysql_free_result($noticias);
?>

Hora les coloco el codigo del archivo que incluimos en la cavezera de nuestro sitio web llamado juego-registro.php el cual el codigo es el siguiente.

<?php
if (!function_exists(“GetSQLValueString”)) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = “”, $theNotDefinedValue = “”)
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists(“mysql_real_escape_string”) ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case “text”:
      $theValue = ($theValue != “”) ? “‘” . $theValue . “‘” : “NULL”;
      break;  
    case “long”:
    case “int”:
      $theValue = ($theValue != “”) ? intval($theValue) : “NULL”;
      break;
    case “double”:
      $theValue = ($theValue != “”) ? doubleval($theValue) : “NULL”;
      break;
    case “date”:
      $theValue = ($theValue != “”) ? “‘” . $theValue . “‘” : “NULL”;
      break;
    case “defined”:
      $theValue = ($theValue != “”) ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$currentPage = $_SERVER[“PHP_SELF”];

$maxRows_noticias = 1;
$pageNum_noticias = 0;
if (isset($_GET[‘pageNum_noticias’])) {
  $pageNum_noticias = $_GET[‘pageNum_noticias’];
}
$startRow_noticias = $pageNum_noticias * $maxRows_noticias;

mysql_select_db($bd, $conexion);
$query_noticias = “SELECT * FROM noticias ORDER BY id_noticia ASC”;
$query_limit_noticias = sprintf(“%s LIMIT %d, %d”, $query_noticias, $startRow_noticias, $maxRows_noticias);
$noticias = mysql_query($query_limit_noticias, $conexion) or die(mysql_error());
$row_noticias = mysql_fetch_assoc($noticias);

if (isset($_GET[‘totalRows_noticias’])) {
  $totalRows_noticias = $_GET[‘totalRows_noticias’];
} else {
  $all_noticias = mysql_query($query_noticias);
  $totalRows_noticias = mysql_num_rows($all_noticias);
}
$totalPages_noticias = ceil($totalRows_noticias/$maxRows_noticias)-1;$maxRows_noticias = 1;
$pageNum_noticias = 0;
if (isset($_GET[‘pageNum_noticias’])) {
  $pageNum_noticias = $_GET[‘pageNum_noticias’];
}
$startRow_noticias = $pageNum_noticias * $maxRows_noticias;

mysql_select_db($database_conexion, $conexion);
$query_noticias = “SELECT * FROM noticias ORDER BY id_noticia DESC”;
$query_limit_noticias = sprintf(“%s LIMIT %d, %d”, $query_noticias, $startRow_noticias, $maxRows_noticias);
$noticias = mysql_query($query_limit_noticias, $conexion) or die(mysql_error());
$row_noticias = mysql_fetch_assoc($noticias);

if (isset($_GET[‘totalRows_noticias’])) {
  $totalRows_noticias = $_GET[‘totalRows_noticias’];
} else {
  $all_noticias = mysql_query($query_noticias);
  $totalRows_noticias = mysql_num_rows($all_noticias);
}
$totalPages_noticias = ceil($totalRows_noticias/$maxRows_noticias)-1;

$queryString_noticias = “”;
if (!empty($_SERVER[‘QUERY_STRING’])) {
  $params = explode(“&”, $_SERVER[‘QUERY_STRING’]);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, “pageNum_noticias”) == false &&
        stristr($param, “totalRows_noticias”) == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_noticias = “&” . htmlentities(implode(“&”, $newParams));
  }
}
$queryString_noticias = sprintf(“&totalRows_noticias=%d%s”, $totalRows_noticias, $queryString_noticias);
?>

Hora vemos el codigo de enviar-noticias.php que es el cual se encargara de enviar todas las noticias que no sotros queremos pero este tiene que tener otro documento php que procese dichas noticias.
enviar-noticias.php

<?php session_start();error_reporting(E_ALL ^ E_NOTICE);
require_once(‘sesion.php’);
if($_SESSION[‘niv’]==”)
{
header(‘Location: index.php’);  
}else{
 ?>
<!DOCTYPE html>
<html lang=”es”>
<head>
    <meta charset=”utf-8″ />
    <title>Insertar Nuevas Noticias </title>
    <link rel=”stylesheet” href=”style/stylo.css” type=”text/css” />
</head>
<body>
<header>
    <div id=’titulo’><h1>www.comocrearmiweb.com</h1></div>
    <?php if($_SESSION[‘name’]){
        echo ‘<div id=”sesion”><div id=”sesion”>’.$_SESSION[‘name’].” “.$_SESSION[‘apelle’].’|| <a href=”salir.php”>Serrar Sesion</a></div></div>’;
        }else{ ?>
    <div id=’sesion’><div id=’sesion’><a href=”entrar-user.php”>Inisiar Sesion</a> O <a href=”login.php”>Registrarme</a></div></div>
    <?php } ?>
</header>
<nav>
    <a href=”index.php” title=”Ir a la pagina principal” id=”link”><menu>Home</menu></a>
    <a href=”http://www.facebook.com”><menu>Facebook</menu></a>
    <a href=”http://www.twitter.com”><menu>Twitter</menu></a>
    <?php if($_SESSION[‘niv’]==’2′){echo ‘<a href=”enviar-noticias.php”><menu>Administrar</menu></a>’;} ?>
</nav>
<section id=’cuerpo’>
    <section id=’contenido’>
        <div id=”titulo”>
        <h1>Bienvenidos al sistema de publicaci&oacute;n de noticias</h1>        </div>  <br /><br />
      
        <div id=”formulario”><br /><?php if($_GET[‘error’]){ ?>
        <div id=”mensaje”>
      
    <?php if($_GET[‘error’]==’si’){
        echo ‘Noticia publicada correctamente’;            }
        if($_GET[‘error’]==’titulo’){echo ‘Tienes que poner un titulo.’;}
        if($_GET[‘error’]==’description’){echo ‘Falta la descripcion de la noticia’;}
        if($_GET[‘error’]==’noticia’){echo ‘Tienes que poner una noticia’;}
        if($_GET[‘error’]==’no’){echo ‘Revisa los datos algo salio mal’;}
          
        }?> </div>
        <form action=”procesar-noticias.php” method=”post”>
        <b>Titulo de la noticia</b><br />
        <input type=”text” name=”titulo” id=”form1″ /><br />
        <b>Descripcion de la noticia</b><br />
        <textarea cols=”50″ rows=”3″ name=”descripcion” id=”texto1″></textarea><br />
        <b>Desarrollo de la noticia</b><br />
        <textarea cols=”70″ rows=”10″ name=”noticia” id=”texto”></textarea><br /><br />
        <input type=”submit” value=”PUBLICAR” id=”submit” />
        <input type=”reset” value=”BORRAR TODO” id=”submit”/>
        </form>
      
        </div>
    </section>
    <aside>
<div id=’publicaciones’><h2>Administracion de noticias </h2></div>
<div><a href=”lista-noticias.php” >Borrar Noticias</a></div>
<div><a href=”edita-noticias.php”>Editar Noticias</a></div>
<div><a href=”lista-noticias.php”>Lista de Noticias</a></div>
</aside>
</section>
<footer>
copiry@2012 | <a href=”http://www.comocrearmiweb.com”>comocrearmiweb.com</a> | Diseñado por Eriberto Peguero
</footer>
</body>
</html>
<?php } ?>

En este otro documento lo que hemos agregado es un simple codigo php que es el cual nos notificara si ha ocurrido algun error al enviar la noticia o si se ha enviado correctamente.

<?php if($_GET[‘error’]){ ?>
        <div id=”mensaje”>       
    <?php if($_GET[‘error’]==’si’){
        echo ‘Noticia publicada correctamente’;            }
        if($_GET[‘error’]==’titulo’){echo ‘Tienes que poner un titulo.’;}
        if($_GET[‘error’]==’description’){echo ‘Falta la descripcion de la noticia’;}
        if($_GET[‘error’]==’noticia’){echo ‘Tienes que poner una noticia’;}
        if($_GET[‘error’]==’no’){echo ‘Revisa los datos algo salio mal’;}           
        }?> </div>

Hora solo nos queda el formulario que procesara nuestras noticias que su codigo es el siguiente.

procesar-noticias.php

<?php
session_start();
//recuperamos los datos
$dato1=$_POST[‘titulo’];
$dato2=$_POST[‘descripcion’];
$dato3=$_POST[‘noticia’];

// con los datos recuperados ahora lo sometemos a comprobacion
if($dato1==”){
    header(‘Location: enviar-noticias.php?error=titulo’);
    }else{
      
        if($dato2==”){
    header(‘Location: enviar-noticias.php?error=description’);
    }else{
        if($dato3==”){
    header(‘Location: enviar-noticias.php?error=noticia’);
    }else{
// si lo datos existen entonces les vamos a anadir los br
$titulo=nl2br($dato1);
$description=nl2br($dato2);
$noticia=nl2br($dato3);
// con el codigo anterior lo que hemos hecho es recuperar los saltos de lineas

//ahora optenemos la hora en que fue enviada la noticia

$fecha =date(“d-M-Y-“); $hora=date(‘H:i:s’); $tiempo = $fecha.”A las “.$hora;

 // con todo esto hecho entonces incluimos la conexion a la base de datos y empezamos a grabar los datos en dicha tabla

include(‘conexion.php’);
$db=mysql_select_db($bd,$conexion);

//almacenamos los datos en una variable
$query= “INSERT INTO noticias (titulo,descripcion,texto,fecha)VALUES (‘$titulo’,’$description’,’$noticia’,’$tiempo’)”;

// ejecutamos los datos de la variable
$consulta=mysql_query($query,$conexion);
if(!$consulta){
    header(‘Location: enviar-noticias.php?error=no’);
    }else{
        header(‘Location: enviar-noticias.php?error=si’);
        }
        }
        }
        }
?>

Bueno con esto ya tenemos todo lo conserniente a publicacion de noticias y sus opiniones como siempre pueden probar en sistema online en esta direccion Sistema de noticias con php.

Tambien puedes descargar todos los archivos que hemos creado hasta ahora desde este enlace Noticias con php y mysql parte 5.

Ya esta lista la nueva actualizacion de este sistema de noticias

Ultima actualizacion darle un vistazo.

Gracias y hasta la proxima entrada.

Comments

  1. By Anónimo

  2. By Jovanni

  3. By olcam

  4. By Anónimo

  5. By Anónimo

  6. By Anónimo

  7. By Anónimo

Deja un comentario

Tu dirección de correo electrónico no será publicada.