Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/09/2008, 10:30
efelix
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 19 años, 3 meses
Puntos: 0
Aporte sistema de noticias

Saludos.
Este es mi pequeño aporte al sistema de noticias.
No es gran cosa, co ya les dije parte del sistema de noticias que aparece en la sección de aportes de este foro.
Lo que he hecho es modificar el fichero list-noticia.php de la siguiente forma:
Código PHP:
<html>
<head>
<style type="text/css">
table
{
    width: auto;
    position: relative;
    display: block;
    border: thin solid black;
    
}
th,h1
{
    background: Blue;
    color: White;    
    font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
    font-size: 13px;
}
p
{
    margin: 0;
    clear: left;
    display: table-row; 
}
</style>
</head>
<?php
//conexión a la base de datos
$con mysql_connect("xxx","xxx","xxx") or die (mysql_error());
mysql_select_db("sistemanoticias",$con) or die (mysql_error());

// verificamos si se ha enviado
// alguna variable via GET
/*la variable id es el id de la categoría y la variable 
  categoría es el nombre de la categoría
*/
if(isset($_GET['id']) && $_GET['categoria']){
// asignamos los valores
// a las variables que usaremos
$id_noticia $_GET['id_noticia'];
$cat_ID $_GET['id'];
$categoria $_GET['categoria'];
$clausula "WHERE notCategoriaID = '$cat_ID'";
// tambien armamos el titular de la pagina
$titulo "Noticias en la categoria $categoria";
}else{
// de lo contrario
// el titulo sera general
$titulo "Todas las noticias";
}
// armamos la consulta
$_pagi_sql "SELECT not_ID, notTitulo, notTexto, notCategoriaID FROM sn_noticias
WHERE notCategoriaID = '$cat_ID'"
or die(mysql_error());

//cantidad de resultados por página (opcional, por defecto 20)
$_pagi_cuantos 5;

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("paginator.inc.php");

echo 
"<h1>$titulo</h1>";
// mostramos las noticias,
// otra vez usando un bucle while
while($rowNot mysql_fetch_array($_pagi_result)){    
echo 
"<th><h1>$rowNot[notTitulo]</h1></th>";
echo 
nl2br (substr(($rowNot['notTexto']),0,150)) . "...";
echo 
"<a href=\"vernoticia.php?id_noticia=" $rowNot['not_ID'] . "&cat_ID=" $rowNot['notCategoriaID'] ."\" title=\"Ver noticia completa\">[Ver noticia completa]</a>";  
}
//Incluimos la barra de navegación
echo $_pagi_navegacion;
?>
</html>
Recuerden que este fichero mostraba todas las noticias insertadas en la base de datos. La cual tiene dos tablas con una realción uno a varios.
La tabla sn_categorias y la tabla sn_noticias.
Aquí solo he modificado además de incluir algunas líneas css para darle más estética a la página la línea donde pongo un resumen de las noticias, mediante el uso de la función substr donde extraigo de la noticia completa solo 150 carácteres, este valor lo pueden cambiar a comodidad.

Luego a través de la etiqueta ancla o a en html paso en forma de query string las variables id_noticia y cat_ID y las igualo a los campos not_ID y notCategoriaId respectivamente ambos de la tabla sn_noticias.
recuerden que el método GET es el predeterminado para el paso de variable entre páginas -cuando se está empleando el paso de variables mediante formularios- en cuyo paso usted puede pasar varias variables siempre concatenándolas con el signo amspersand (&). Eso es lo que he hecho en mi caso.

Después de esto he creado un fichero que se llama vernoticia.php
Código PHP:
<html>
<head><title>Noticias en la Categoria <?php echo $cat_ID?></title>
<style type="text/css">
table
{
    width: auto;
    position: relative;
    display: block;
    border: thin solid black;
    
}
th,h1
{
    background: Blue;
    color: White;    
    font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
    font-size: 13px;
}
p
{
    margin: 0;
    clear: left;
    display: table-row; 
}
</style>
</head>
<?php
//conexión a la base de datos
$con mysql_connect("xxx","xxx","xxx") or die (mysql_error());
mysql_select_db("sistemanoticias",$con) or die (mysql_error());

// verificamos si se ha enviado
// alguna variable via GET
if(isset($_GET['id']) && $_GET['categoria']){
// asignamos los valores
// a las variables que usaremos
$id_noticia $_GET['id_noticia'];
$cat_ID $_GET['id'];
$categoria $_GET['categoria'];
$clausula "WHERE notCategoriaID = '$cat_ID' AND not_ID = '$id_noticia'";
// tambien armamos el titular de la pagina
$titulo "Noticias en la categoria $categoria";
}else{
// de lo contrario
// el titulo sera general
$titulo "Todas las noticias";
}
// armamos la consulta
$sql "SELECT not_ID, notTitulo, notTexto, notCategoriaID FROM sn_noticias
WHERE notCategoriaID = '$cat_ID' AND not_ID = '$id_noticia'" 
or die(mysql_error());

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
//include("paginator.inc.php");

$result mysql_query($sql);

echo 
"<h1>Noticias en la categoría: $cat_ID</h1>";
// mostramos las noticias,
// otra vez usando un bucle while
while($rowNot mysql_fetch_array($result)){
echo 
"<th><h1>$rowNot[notTitulo]</h1></th>";
echo 
nl2br (($rowNot['notTexto']));
}
?>
</html>
El cual recibe las variables envíadas por la págia list-noticia.php. Por eso en la consulta a la base de datos igualo el campo notCategoriaId con la variable $cat_ID y el campo not_ID con la variable $id_noticia, ya que si solamente dejo la primera condición me devuelve todas las noticias para la categoría seleccionada. Recuerden que por cada categoría existen varias noticias.

He incluído aquí solamente los ficheros fundamentales, el list-noticia.php que ha sufrido algunos cambios y el fichero nuevo vernoticia.php.
Los otros ficheros los puden ver entrando a la sección aportes de este foro buscar allí el sistema de noticias y ver el resto de los ficheros que son:
index.php, add-noticia.php, add-categoria.php y db-cnx.php.
Al fichero index.php le hice los siguientes cambios:
Código HTML:
<html>
<head>
    <title>Sistema de Noticias</title>
</head>
<body>
<?php include('db-cnx.php'); ?>
<div style="float: none; width: auto; height: 150px; background: url(./images/imagen de preferencia) no-repeat;">
</div>
<h1>Sistema de Noticias</h1>
<div style="float:left; width: 25%;">
    <?php include('list-categoria.php'); ?>
</div>
<div style="float:right; width: 75%;">
    <?php include('list-noticia.php'); ?>
</div>
</body>
</html> 
Aquí los cambios fundamentales están relacionados con un div que he agregado que sale en la parte superior para mostrar una imagen.
Deben recordar que en este sistema he incluído al paginador de jpinedo. Los que no entiendan su funcionamiento les recoiendo que vayan a la web de jpinedo y descarguen el paginador y lean la ayuda sobre el mismo para que vean como funciona, cualquier duda se las puedo aclarar.
Espero que este modestísimo aporte les sirva a todos los que buscaban el resumen de las noticias.
Es mi agradeciemiento a este magnífico foro. El principal aporte es de ustedes.
Muchas Gracias.