43
« en: 02 de Julio de 2009, 18:20:22 pm »
Primero copiare los codigos que usaremos:
La Base de datos seria:
CREATE TABLE `sn_categorias` (
`cat_ID` int(11) NOT NULL auto_increment,
`catCategoria` varchar(100) NOT NULL,
PRIMARY KEY (`cat_ID`)
) ENGINE=MyISAM;
CREATE TABLE `sn_noticias` (
`not_ID` int(11) NOT NULL auto_increment,
`notTitulo` varchar(255) NOT NULL,
`notTexto` text NOT NULL,
`notCategoriaID` int(11) NOT NULL,
PRIMARY KEY (`not_ID`)
) ENGINE=MyISAM;
Para agregar categorias: add-categoria. php
<?php
// incluimos el archivo de conexion
include ('config. php');
// recibimos el formulario
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
// comprobamos que el formulario no envie campos vacios
if(!empty($_POST['catCategoria'])){
// creamos la variable y le asignamos el valor a insertar
$catCategoria = $_POST['catCategoria'];
// hacemos el INSERT en la BD
$sqlInsertCat = mysql_query("INSERT INTO sn_categorias (catCategoria)
VALUES ('$catCategoria')", $db_link)
or die(mysql_error());
// enviamos un mensaje de exito
echo "Los datos fueron gurdados correctamente";
}else{
// si el formulario viene vacio
// enviamos un mensaje de error
echo "Debe llenar el formulario";
}
}
?>
<!-- el formulario -->
<form name="categoria" action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
<p>
Nueva Categoría<br />
<input type="text" name="catCategoria" />
<input type="submit" name="enviar" value="Enviar" />
</p>
</form>
Para agregar Noticias: add-noticia. php
<?php
// incluimos el archivo de conexion
include ('config. php');
// recibimos el formulario
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
// comprobamos que el formulario no envie campos vacios
if(!empty($_POST['notTitulo']) && $_POST['notTexto'] &&
$_POST['notCategoriaID']){
// creamos las variables y les asignamos los valores a insertar
$notTitulo = $_POST['notTitulo'];
$notTexto = $_POST['notTexto'];
$notCategoriaID = $_POST['notCategoriaID'];
// hacemos el INSERT en la BD
$sqlInsertNot = mysql_query("INSERT INTO sn_noticias
(notTitulo, notTexto, notCategoriaID)
VALUES ('$notTitulo', '$notTexto', '$notCategoriaID')",
$db_link) or die(mysql_error());
// enviamos un mensaje de exito
echo "Los datos fueron gurdados correctamente";
}else{
// si el formulario envia algun campo vacio
// enviamos un mensaje de error
echo "Debe llenar todos los campos del formulario";
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1. 0 Transitional//EN" "hxxp: www. w3. org/TR/xhtml1/DTD/xhtml1-transitional. dtd">
<html xmlns="hxxp: www. w3. org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Test</title>
</head>
<body>
<!-- el formulario -->
<form name="noticia" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<p>
Título de la Noticia<br />
<input type="text" name="notTitulo" size="50" />
</p>
<p>
Texto de la Noticia<br />
<textarea name="notTexto" rows="10" cols="50"></textarea>
</p>
<p>
Categoría<br />
<select name="notCategoriaID">
<option value="">Escoger de la Lista</option>
<?php
// asignamos una categoria a la noticia
// mediante un select
$sqlQueryCat = mysql_query("SELECT * FROM sn_categorias", $db_link)
or die(mysql_error());
// creamos un bucle while
// que nos muestre todas las categorias
// que tenemos guardadas en la BD
while($rowCat = mysql_fetch_array($sqlQueryCat)){
echo "<option value='$rowCat[cat_ID]'>$rowCat[catCategoria]</option>";
}
?>
</select>
</p>
<p>
<input type="submit" name="enviar" value="Enviar" />
</p>
</form>
</body>
</html>
Donde se mostraran las noticias, lo llamaremos index. php ( muy original jaja )
<html>
<head>
<title>Sistema de Noticias</title>
</head>
<body>
<h1>Sistema de Noticias</h1>
<?php include('config. php'); ?>
<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>
AHora el archivo config. php que ya todos deben saber para que sirve:
<?php
$db_link = mysql_connect('localhost', 'root', '');
if(!$db_link){
die('No se pudo conectar: ' . mysql_error());
}
$db_selected = mysql_select_db('sistemanoticias', $db_link);
if(!$db_selected){
die('No se selecciono la BD: ' . mysql_error());
}
?>
Para listar las noticias: list-noticia. php
<?php
// verificamos si se ha enviado
// alguna variable via GET
if(isset($_GET['id']) && $_GET['categoria']){
// asignamos los valores
// a las variables que usaremos
$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
$sqlQueryNot = mysql_query("SELECT notTitulo, notTexto FROM sn_noticias
$clausula", $db_link)
or die(mysql_error());
echo "<h1>$titulo</h1>";
// mostramos las noticias,
// otra vez usando un bucle while
while($rowNot = mysql_fetch_array($sqlQueryNot)){
echo "<h1>$rowNot[notTitulo]</h1>";
echo '<a href="post. php?idnot='. $rowNot[not_ID]. '&titulo='. $rowNot[notTitulo]. '"<h1>'. $rowNot[notTitulo]. '</h1>';
}
?>
Y ahora el archivo para listar las categorias: list-categoria. php
<h1>Categorías. . . </h1>
<?php
$sqlQueryCat = mysql_query("SELECT * FROM sn_categorias", $db_link)
or die(mysql_error());
echo "<ul>";
while($rowCat = mysql_fetch_array($sqlQueryCat)){
echo "<li>
<a href='?categoria=$rowCat[catCategoria]&id=$rowCat[cat_ID]'>
$rowCat[catCategoria]
</a>
</li>";
}
echo "</ul>";
?>
Como veran es un sistema muy simple, pero debe tener sus errores. ENtre todos podemos mejorarlo y hacer algo util.
Como dije en otro mensaje, me gustaria insertar un icono a cada categoria y que este se muestre junto al titulo de las noticias. Estaria bueno que en el list-noticia. php, solo muestre un link, que al clickear habra la noticia completa.
El sistema esta testeado y funciona bien. Saludos.