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:
Y ahora la de noticias llamada sn_noticias:CREATE TABLE `sn_categorias` ( `cat_ID` int(11) NOT NULL auto_increment, `catCategoria` varchar(100) NOT NULL, PRIMARY KEY (`cat_ID`) ) ENGINE=MyISAM;
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 ;)