Bueno, ya que consegui acabar de editar y modificar el sistema de noticias, gracias a
pateketrueke,
gatorV y muchos mas.
En si este sistema es mas bien para que otros usuarios que no sean administradores escriban articulos, por eso los codigos html no funcionan y se verian <b> hola </b> En este ejemplo se verian los codigos y o funcionaria la negrita
Estan muchos codigos BB pero no esta el de [ img ]
Comencemos:
El primer paso es crear las tablas en la base de datos. Comencemos por las tablas de categorias llamadas sn_categorias
Código:
CREATE TABLE `sn_categorias` (
`cat_ID` int(11) NOT NULL auto_increment,
`catCategoria` varchar(100) NOT NULL,
PRIMARY KEY (`cat_ID`)
) ENGINE=MyISAM;
Y ahora la de noticias llamada sn_noticias:
Código:
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;
Ahora creamos el archivo de conexion llamdo db-cnx.php
Código PHP:
<?php
$db_link = mysql_connect('host mysql', 'usuario mysql', '');
if(!$db_link){
die('No se pudo conectar: ' . mysql_error());
}
$db_selected = mysql_select_db('nombre de la DB', $db_link);
if(!$db_selected){
die('No se selecciono la BD: ' . mysql_error());
}
?>
Ahora crearemos el archivo add-categoria.php
Código:
<?php
// incluimos el archivo de conexion
include ('db-cnx.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>
Ahora crearemos el archivo add-noticia.php que sera el que añada las noticias:
Código:
<?php
// incluimos el archivo de conexion
include ('db-cnx.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'];
$notTexto = htmlspecialchars($notTexto);
$notTitulo = htmlspecialchars($notTitulo);
// 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. <a href='/index.php'>Volver a la pagina principal</a>";
}else{
// si el formulario envia algun campo vacio
// enviamos un mensaje de error
echo "Debe llenar todos los campos del formulario";
}
}
?>
<!-- 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>
Ahora crearemos la lista de las categorias que sera la que se muestre en el index vinculandolo con include()
A esta la llamaremos list-categorias.php
Código 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>";
?>
Ahora procedemos a crear la lista de las noticias. A esta la llamaremos list-noticia.php
Código PHP:
<?php
function bbcodes ($text) {
$finaltext = eregi_replace("\\[url=([^\\[]*)\\]([^\\[]*)\\[/url\\]", "<a target=\"_blank\" href=\"\\1\">\\2</a>", $text);
$finaltext = eregi_replace("\\[url\\]([^\\[]*)\\[/url\\]","<a target=\"_blank\" href=\"\\1\">\\1</a>",$finaltext);
while($bucle < 5) {
$finaltext = eregi_replace("\\[u\\]([^\\[]*)\\[/u\\]","<u>\\1</u>", $finaltext);
$finaltext = eregi_replace("\\[i\\]([^\\[]*)\\[/i\\]","<em>\\1</em>", $finaltext);
$finaltext = eregi_replace("\\[b\\]([^\\[]*)\\[/b\\]","<strong>\\1</strong>", $finaltext);
$bucle++;
}
$finaltext = eregi_replace("\\[center\\]([^\\[]*)\\[/center\\]","<center>\\1</center>", $finaltext);
$finaltext = eregi_replace("\\[cita\\]([^\\[]*)\\[/cita\\]","\n<div class=\"css_title\">Cita\n<div class=\"css\">\\1</div></div>", $finaltext);
$finaltext = eregi_replace("\\[php\\]([^\\[]*)\\[/php\\]","\n<div class=\"css_title\">Código PHP\n<div class=\"css\">\\1</div></div>", $finaltext);
// Retorno como queda el bbcode.
return $finaltext;
}
function phpcojecolor ($php) {
// Remplaza los <br \> por lineas.
$php = str_replace("<br />","\n",$php);
ob_start(); // Abirmos el OB
html_entity_decode($php);
highlight_string($php); // Tiramos el codigo coloreado
$cfinal = ob_get_contents(); // COjo el codigo que tire despues de haber abierto el ob
ob_end_clean(); // Borro el ob para que no se vea en la web
$keycol=ini_get("highlight.keyword");
$manual="http://www.php.net/manual-lookup.php?lang=es&pattern=";
$cfinal=preg_replace(
'{([\w_]+)(\s*</font>)'.
'(\s*<font\s+color="'.$keycol.'">\s*\()}m',
'<a href="'.$manual.'$1" title="Ayuda en PHP.net sobre $1" target="_blank">$1</a>$2$3',
$cfinal);
return "\n<div class=\"css_title\">Código PHP:\n<div class=\"css\">".$cfinal."</div></div>"; // Retorno el codigo PHP Coloreado
}
// Debes poner la siguiente clase en tu hoja de estilos o en su defecto en tu código html.
// Estas clases es para que funciones lo de las citas y lo de mostrar codigo PHP :D
// .css_title {
// margin: 10px 5px 10px 15px;
// font-size: 10px;
// width: 90%;
//
// }
// .css {
// background: #DCDCDC;
// border: 1px solid #8FB1EE;
// border-left: 7px solid #8FB1EE;
// font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
// font-size: 11px;
// color: #000000;
// padding: 5px;
// width: 90%;
// margin: 0px;
// }
?>
<?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, not_ID 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><a href='?noticia=$rowNot[notTitulo]&id=$rowNot[not_ID]'>$rowNot[notTitulo]</a></h1>";
echo "";
echo bbcodes(nl2br($rowNot['notTexto']));
}
?>
Ahora crearemos el archivo index.php que es donde nos apareceran todos los articulos.
Código:
<html>
<head>
<title>Sistema de NoticiasM</title>
</head>
<body>
<h1>Sistema de Noticias</h1>
<?php include('db-cnx.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>
Y este es el fin del tutorial pueden probar las cosas por aqui:
http://tutosyscripts.comyr.com/news/
Agradecimientos:
Tutorial sacado de:
http://rogertm.bloggerscuba.com/
Codigo editado y añadido cosas: fcdragons, pateketrueke, gatorV y todos los usuarios que me ayudaron
Si consigo ponerle mas cosas editare el post y se las añadire ;)
Y como consegui hacer lo que queria decidi hacer el aporte :)
Espero que les guste
Demen Karma si les gusto, si hay algun error posteenlo aqui ;)