Está en la página 1de 6

Mantenedor de noticias Este tutorial consta de 3 partes: La primera genera un sistema de noticias a travs de un panel de administracin y las muestra

en orden segn su fecha, la segunda parte muestra un sistema de edicin y borrado de estas noticias. La tercera y ltima parte veremos como generar un sistema de comentarios para nuestras noticias. Primero creamos la base de datos para las noticias: create table noticias ( id_noticia int(4) auto_increment not null, autor varchar(255), titulo varchar(255), categoria varchar(255), fecha datetime not null, noticia blob, key(id_noticia) ) Un poco de explicacin: id_noticia se incrementar cada vez que insertemos un registro desde el panel de administracin (que crearemos luego) lo que nos facilitar la lectura de la noticia y asignarle sus respectivos comentarios. Lo dems est a la vista. Ahora veremos el cdigo a incluir en la pgina que llamaremos index.php (Que original no?) <html> <head> <title>Sistema de noticias</title> <? //conectamos a la base $connect=mysql_connect("servidor","nombre_de_la_base","pass")';

//Seleccionamos la base mysql_select_db("nombre_de_la_base",$connect); //hacemos las consultas $result=mysql_query("select * from noticias order by fecha Desc", $connect); $totalregistros=mysql_num_rows($result); ?> </head> <body> //Recogemos las consultas en un array y las mostramos <? while($row=mysql_fetch_array($result)) { echo '<h2>'.$row[titulo].'</h2><br><p>'.$row[articulo].'</p><br><tudiv>'.$row[autor].'|'.$row[fecha].'| '.$row[categoria].' | '<a href="ver.php?id='.$row[id_noticia].'">comentarios()</a> | <a href="editar.php?id='.$row[id_noticia].'">editar</a>';</tu div> //Hemos puesto los enlaces para "Comentarios" y "Editar" cosa que ocuparemos ms adelante como se puede ver el id nos servir para casi todo. } mysql_free_result($result) ?> </body> </html> Nota: Se puede usar cualquier funcin de conversin de fechas para mostrar fecha en espaol y separarla de la hora. Ac no se har por no ser el fin de este tutorial

Es hora de crear el panel de administracin. En realidad es en donde generamos la noticia que luego mostrar el index. Lo llamaremos administrar.php (otro destello de creatividad). Obviaremos el cdigo de la estructura html y nos enfocaremos en el formulario que enviar los datos <form action="procesanoticia.php" method="post"> Ttulo noticia:<br> <input type="text" name="titulo"><br> Autor:<br> <input type="text" name="autor"><br> Categora:<br> <input type="text" name="categoria"><br> Escriba el articulo<br> <textarea name="articulo" cols="50" rows="10"></textarea><br> < input type="submit" value="Publicar"><br> </form> Como vemos, este formulario enva por mtodo POST todas las variables necesarias para el llenado de nuestra base. Dichas variables las recibe un script llamado procesanoticia.php el cual veremos a continuacin: <? //recibimos las variables enviadas por el formulario $titulo=$_POST[titulo]; $autor=$_POST[autor]; $categoria=$_POST[categoria]; $articulo=$_POST[articulo]; //conectamos a la base $connect=mysql_connect("servidor","nombre de la base","pass")'; //Seleccionamos la base mysql_select_db("nombre de la base",$connect); //insertamos los registros almacenados en las variables mysq_query("insert into noticias(titulo,autor,categoria,articulo,fecha) values('$titulo','$autor','$categoria','$articulo',NOW()",$connect) header("location: index.php"); ?> Se llena la base con todos los parmetros recibidos del formulario. Cabe destacar que para la fecha se ocupo la funcion NOW() esta funcin rellena la base con la fecha y hora del servidor. La primera parte y el trabajo pesado ya est hecho. Recordemos que en la primera partecreamos un link llamado editar y su enlace tena esta estructura <a href="editar.php?id=1"> llamando a la pgina editar.php y en donde el id cambia su nmero dependiendo de la noticia. Con esto en claro, es hora de ver el cdigo de editar.php Nota: Una vez ms obviaremos la estructura html y pondremos el cdigo PHP <? //recibimos la variable id enviada en el enlace por GET $id=$_GET[id]; //conectamos a la base $connect=mysql_connect("servidor","nombre de la base","pass")'; //Seleccionamos la base mysql_select_db("nombre de la base",$connect); //hacemos las consultas $result=mysql_query("select * from noticias where id_noticia='$id'" ,$connect); //Una vez seleccionados los registros los mostramos para su edicin while($row=mysql_fetch_array($result)) { echo '<form action="edit.php" method="post"> <input type="hidden" name="id" value="'.$row[id_noticia].'"><br> Ttulo noticia:<br> <input type="text" name="titulo" value="'.$row[titulo].'"><br> Autor:<br> <input type="text" name="autor" value=".$row[autor].'"><br> Categora:<br> <input type="text" name="categoria" value='.$row[categoria].'"><br> Escriba el articulo<br>

<textarea name="articulo" cols="50" rows="10">'.$row[articulo].'</textarea> <br> < input type="submit" value="Editar"><br> </form> } mysql_free_result($result) mysq_close($connect) ?> En este script recibimos por URl la variable $id desde el enlace de nuestro sistema de noticias visto en la primera parte . Este valor recibio lo almacenamos y utilizamos para la seleccin solo del artculo que nos interesa editar. Una vez ms utilizamos un formulario, con la salvedad de que se agreg el atributo value para mostrar los datos recibidos de la base, este formulario nos enviar a otro script, llamado edit.php el que se encargar de hacer la modificacin en la base, y lo vemos a continuacin Nota: Para el borrado haremos un enlace en el script anterior donde ms nos guste, depende del diseo de nuestra pgina. El enlace debe tener la siguiente estructura <a href="borrar.php?id='$id'"> . Luego veremos como se borra.

<? //recibimos las variables enviadas por el formulario $id=$_POST[id]; $titulo=$_POST[titulo]; $autor=$_POST[autor]; $categoria=$_POST[categoria]; $articulo=$_POST[articulo]; //conectamos a la base $connect=mysql_connect("servidor","nombre de la base","pass")'; //Seleccionamos la base mysql_select_db("nombre de la base",$connect); //modificamos los datos de la base segn variables recibidas mysql_query("update noticias Set articulo='$articulo',categoria='$categoria' ,titulo='$titulo' where id_noticia='$id'", $link); header("location: index.php"); ?> Modificamos la base con los datos recibidos. Una vez ms la famosa id fue de gran utilidad, pues con ella solo modificamos los registros pertenecientes a ella y no otros o todos. Ahora veremos como se borra. Este archivo se llama borrar.php y ya fue mencionado como generar un enlace a l anteriormente. <? //recibimos la variable $id $id=$_POST[id]; //conectamos a la base $connect=mysql_connect("servidor","nombre de la base","pass")'; //Seleccionamos la base mysql_select_db("nombre de la base",$connect); //borramos los registros pertenecientes a la id mysql_query("delete from blog where id_noticia='$id'",$connect); header("location: index.php"); ?> Se borran los registros, creo que este script no requiere mayor explicacin. Ahora solo queda ver como aadir y leer comentarios en nuestro sistema y lo veremos a continuacin

borrado y edicin Recordemos que en la primera partecreamos un link llamado comentarios y su enlace tena esta estructura <a href="ver.php?id=1"> llamando a la pgina ver.php y en donde el id cambia su nmero dependiendo de la noticia que queremos visualizar. Con esto en claro, es hora de ver el cdigo de ver.php Nota: Una vez ms obviaremos la estructura html y pondremos el cdigo PHP //creamos la tabla de los comentarios create table comentarios( id int(4) not null, nick varchar(255), email varchar(255), comentario blob, key(id)) <? //recibimos la variable id enviada en el enlace por GET $id=$_GET[id]; //conectamos a la base $connect=mysql_connect("servidor","nombre de la base","pass")'; //Seleccionamos la base mysql_select_db("nombre de la base",$connect); //hacemos las consultas $result=mysql_query("select * from noticias where id_noticia='$id'" ,$connect); //Una vez seleccionado el registro, mostramos la noticia completamente <? while($row=mysql_fetch_array($result)) { echo '<h2>'.$row[titulo].'</h2><br> <p>'.$row[articulo].'</p><br> <tu div>'.$row[autor].' | '.$row[fecha].' | '.$row[categoria].' | '<a href="ver.php?id='.$row[id].'">comentarios()</a> | <a href="editar.php?id='.$row[id].'">editar</a>';</tu div> } mysql_free_result($result) ?> La manera de mostrar la noticia completa es idntica que en el script del index.php visto en la primera parte . Ahora haremos las modificaciones para mostrar los comentarios. <? //recibimos la variable id enviada en el enlace por GET $id=$_GET[id]; //conectamos a la base $connect=mysql_connect("servidor","nombre de la base","pass")'; //Seleccionamos la base mysql_select_db("nombre de la base",$connect); //hacemos las consultas $result=mysql_query("select * from noticias where id_noticia='$id'" ,$connect); //Una vez seleccionado el registro, mostramos la noticia completamente <? while($row=mysql_fetch_array($result)) { result2=mysql_query("select * from comentarios where id_noticia='$id'" ,$connect); $totalcomentarios=mysql_num_rows($result2); echo '<h2>'.$row[titulo].'</h2><br> <p>'.$row[articulo].'</p><br> <tu div>'.$row[autor].' | '.$row[fecha].' | '.$row[categoria].' | '<a href="ver.php?id='.$row[id].'">comentarios('.$totalcomentarios.')</a> | <a href="editar.php?id='.$row[id].'">editar</a>';</tu div> } mysql_free_result($result) ?>

Ac agregamos unas lneas al bucle while solamente para saber la cantidad de cometarios que pertenecen a este (1, 2, 0 la cantidad x de comentarios por artculo) y lo almacenamos en la variable $totalcomentarios Ahora veremos el cdigo para seleccionar los comentarios y visualizarlos <? echo '<h2>Comentarios:</h2><br> //hago el llamado a la base $result3=mysql_query("select * from comentarios where id_noticia='$id'" ,$connect); //Bucle while para visualizarlos while(rows=mysql_fetch_array($result3) { echo '<p>'.$rows[comentario].'</p> <tu div>'.$rows[nick] .'| '.$rows[email].'</tu div> '; ?> Mostramos los comentarios y ahora pondremos un formulario en donde puedan escribirlos <form action="editacomentarios.php" method="post"> <input type="hidden" name="id" value="'$id'"><br> Nick:<br> <input type="text" name="nick"><br> E-Mail:<br> <input type="text" name="email"><br> Escriba el comentario<br> <textarea name="comentario" cols="50" rows="10"></textarea> <br> < input type="submit" value="Enviar comentario"><br> </form> Ac el formulario enviar las variables al script editacomentarios.php el cual las procesar y llenar la tabla comentarios Nota: Ntese que se envia la variable $id en un campo oculto, esto servir para saber a qu noticia pertenece dicho comentario <? //editacomentarios.php //recibimos las variables enviadas por el formulario $id=$_POST[id]; $nick=$_POST[nick]; $email=$_POST[email]; $comentario=$_POST[comentario]; //conectamos a la base $connect=mysql_connect("servidor","nombre de la base","pass")'; //Seleccionamos la base mysql_select_db("nombre de la base",$connect); //Ingresamos los comentarios a su tabla mysql_query("insert into comentarios(id,nick,email,comentario) values('$id','$nick','$email','$comentario'",$connect) header("location: ver.php?id='.$id.'"); ?> Con los comentarios insertados en su tabla queda listo y finalizado el sistema de noticias. Disfrtenlo Conclusiones Si bien este modesto sistema de noticias debera funcionar a la perfeccin y prestar una funcionalidad digna, es importante sealar que puede mejorar mucho, incluyndole por ejemplo: Fechas en espaol, CSS sin dudas, algn paginador y sentencia limit para visualizar cantidades X de artculos por pginas, directivas de seguridad como sistema de auntentificacin, restringir etiquetas html en los comentarios, etc. Eso ya queda en sus manos y estoy seguro que lo pueden mejorar mucho.

En cuanto al autor puedo decirles que soy un aprendz de PHP y leyndo tutoriales y mucho google logr terminar mi blog y crear este pequeo artculo, que debido a mi calidad de aprendz puede contener muchos errores, aunque no mayores