12.31.2010

Creando un sistema de comentarios en PHP

Vamos a crear un sistema para permitir a nuestros usuarios comentar en nuestro sitio, partiremos del hecho de que tenemos algun sistema de noticias o bien que hemos creado algun CMS para nuestro sitio. Si aun no tienes un sistema de noticias en el libro PHP para todos se explica claramente como crear un pequeño CMS para tu sitio.


Ahora, es importante que identifiquemos que deseamos hacer. 

Vamos a mostrar los comentarios en cada entrada, ahora lo mas importante es considerar que x o y comentario pertenecera a x o y entrada entonces. A la hora de crear nuestra tabla MySQL vamos a incluir un campo que indique la entrada a la que pertenece el comentario.

Ademas, crearemos un modulo en nuestro panel de administracion para administrar los comentarios en cada entrada. para permitir al administrador borrar o moderar los comentarios.

Entonces, vamos a crear una nueva tabla en nuestra base de datos,  Dicha tabla va a contener los siguientes datos:

CREATE TABLE `tusitioya`.`comentarios` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`idnoticia` INT NOT NULL ,
`nombre` TEXT NOT NULL ,
`comentario` TEXT NOT NULL
) ENGINE = MYISAM ;

Esta tabla contiene 4 campos, uno para el id del comentario, uno para el id de la noticia, para el autor del comentario y para el comentario en si.

Ahora, vamos a crear un archivo de conexion al que llamaremos conect.php (es probable que algunos ya lo tengan y no haga falta volverlo a escribir)

En el basicamente, vamos a conectarnos con nuestro servidor MySQL y a seleccionar nuestra base de datos:

<?php
//conexion con la base de datos
$conexion = mysql_connect("localhost","root","") or die("Problema de conexion");
//seleccion de la tabla
mysql_select_db("tusitioya",$conexion) or die ("No se pudo conectar con la tabla");
?>

Una vez que hemos creado la tabla,  y hemos creado nuestro archivo de conexion, vamos a crear el archivo que ingresa los datos a la tabla, este sera basicamente un formulario muy sencillo con un campo de texto para el nombre del usuario, y uno para el comentario. 

Ademas agregaremos un campo oculto que almacene el id de la noticia y un submit, para enviar el comentario. A este archivo le llamaremos coment.php

<form action="index.php" method="post">
Nombre:
<br/>
<input type="text" name="nombre"/>
<br/>
Comentarios:
<br/>
<textarea name="comentario"></textarea>
<br/>
<br/>
<input type="hidden" name="idnoticia" value="<?php echo $_GET['op']?>"/>
<input type="submit" value="Enviar"/>
</form>

Por el momento, es HTML basico y algo de PHP unicamente para obtener el valor de la noticia almacenada en una variable que pasa por URL llamada "op"

Ahora, vamos a escribir el programa que procesara los datos, si estos existen para eso vamos a utlizar la funcion isset,

if (isset($_REQUEST['nombre']) && isset($_REQUEST['comentario'])) {
Y si la condicion es verdadera, entonces vamos a insertar los valores de nuestro formulario en nuestra base de datos, de modo que nuestro script quedaria mas o menos asi:

if (isset($_REQUEST['nombre']) && isset($_REQUEST['comentario'])) {
    include("conect.php");
    mysql_query("INSERT into comentarios(idnoticia,nombre,comentario)
    values('$_REQUEST[idnoticia]','$_REQUEST[nombre]','$_REQUEST[comentario]')",$conexion) or die(mysql_error());
    header("location:index.php?op=$_GET[op]");
    }

Ya ubicado en nuestro archivo coment.php queda mas o menos asi:

<?php
if (isset($_REQUEST['nombre']) && isset($_REQUEST['comentario'])) {
    include("conect.php");
    mysql_query("INSERT into comentarios(idnoticia,nombre,comentario)
    values('$_REQUEST[idnoticia]','$_REQUEST[nombre]','$_REQUEST[comentario]')",$conexion) or die(mysql_error());
    header("location:index.php?op=$_GET[op]");
    }
?>
<form action="coment.php?op=<?php echo $_GET['op']?>" method="post">
Nombre:
<br/>
<input type="text" name="nombre"/>
<br/>
Comentarios:
<br/>
<textarea name="comentario"></textarea>
<br/>
<br/>
<input type="hidden" name="idnoticia" value="<?php echo $_GET['op']?>"/>
<input type="submit" value="Enviar"/>
</form>
Vale, aunque ahorita podrian probarlo.. estos comentarios se ingresarian y no habria un valor para la variable op, por lo que a la hora de procesar el formulario habria un error, pero eso lo veremos mas adelante, ahora vamos a crear un archivo que lea los comentarios acorde al articulo seleccionado.

En este archivo, en principio vamos a procesar los datos UNICAMENTE si existe la variable op, que sera el identificador de la noticia en cuestion, de modo que nuestro script seria:

<?php
if (isset($_GET['op'])) {
    include("conect.php");
    $resp = mysql_query("SELECT nombre,comentario FROM comentarios WHERE idnoticia=$_GET[op]",$conexion);
    while($ext=mysql_fetch_array($resp)) {
        echo $ext['nombre'];
        echo "<br/>";
        echo "<br/>";
        echo $ext['comentario'];
    }
}
?>

Basicamente, estamos mostrando todos los resultados para nombre y comentario donde el idnoticia sea igual al id pasado por URL ´op´ Asi pues, si incluimos estos dos archivos en el archivo que muestra los articulos de esta forma:

<?php
$opcion = $_GET["op"];
if (isset($opcion)) {
    include ("conect.php");
    $respuesta = mysql_query("SELECT arto FROM articulos WHERE id = $opcion",$conexion);
    while ($existe = mysql_fetch_array($respuesta)) {
        echo $existe['arto'];
}
    echo "<br/>";
    echo "<br/>";
    include("leercoment.php");
    echo "<br/>";
    echo "<br/>";
    include ("coment.php");
}
else {
    echo "<p>Este es un parrafo de ejemplo. Y este sitio ha sido creado siguiendo el curso tu Sitio Ya de Maurizzio Penalba</p>
        <p align='center'><img src='recursos/objetos/equipo.jpg' width='331' height='225' /></p>";
}
   

?>
Ahora, en nuestro index.php veremos algo como esto:



Aunque algo tosco, el darle un poco de estilo queda en manos de cada uno, ahora, aunque el sistema de comentarios ha quedado muy prolijo, aun nos hace falta hacer un par de cosas, en primer lugar deseamos mejorar la seguridad del sistema pues asi como esta cualquiera puede ingresar HTML, PHP o cualquier otro script que podria ser malicioso, ademas debemos contar con un area de administracion para eliminar y modificar comentarios

En principio vamos a parsear todo el texto que entre a travez de nuestras areas de texto, esto lo haremos con una funcion, y vamos a incluirla en nuestro archivo coment.php

function parsearhtml($texto) {
    return nl2br( htmlentities($texto, ENT_QUOTES) );
    }
Con esta funcion, pasamos todas las etiquetas HTML a texto plano, y traducimos cualquier comilla de esta forma evitamos cualquier clase de defase o XSS en nuestro sitio, aunque sean solo comentarios podria representar algun problema en un futuro. Una vez aplicada la seguridad a nuestro script, quedaria mas o menos asi:

<?php
function parsearhtml($texto) {
    return nl2br( htmlentities($texto, ENT_QUOTES) );
    }
$comentario = parsearhtml($_REQUEST['comentario']);
$nombre = parsearhtml($_REQUEST['nombre']);
if (isset($_REQUEST['nombre']) && isset($_REQUEST['comentario'])) {
    include("conect.php");
    mysql_query("INSERT into comentarios(idnoticia,nombre,comentario)
    values('$_REQUEST[idnoticia]','$nombre','$comentario')",$conexion) or die(mysql_error());
    header("location:index.php?op=$_GET[op]");
    }
?>
<form action="coment.php?op=<?php echo $_GET['op']?>" method="post">
Nombre:
<br/>
<input type="text" name="nombre"/>
<br/>
Comentarios:
<br/>
<textarea name="comentario"></textarea>
<br/>
<br/>
<input type="hidden" name="idnoticia" value="<?php echo $_GET['op']?>"/>
<input type="submit" value="Enviar"/>
</form>
Ahora, solo nos hace falta agregar un area de administracion a nuestro script, dado que partimos del hecho de que tenemos un CMS propio o hemos creado uno a partir del curso PHP para todos vamos a suponer a suponer que el sistema de login ya ha sido implementado. Y unicamente voy a mostrar el script que corresponderia al listado de los comentarios en cada uno de los articulos para el area de administracion

<?php include("llave.php") ?>
<table border="0" cellspacing="4">
<?php
include ("../conect.php");
if (isset($_GET['del'])) {
    mysql_query("DELETE from comentarios WHERE id=$_GET[del]",$conexion);
}
$ids = mysql_query("SELECT id,nombre,comentario FROM comentarios",$conexion);
while ($ide = mysql_fetch_array($ids)) {
    echo "<tr>";
    echo "<td>".$ide['id']."</td>";
    echo "<td>".$ide['nombre']."</td>";
    echo "<td>".$ide['comentario']."</td>";
    echo "<td>"."<a href='editcomment.php?del=$ide[id]'>Eliminar</a>"."</td>";
    echo "</tr>";
}
?>
</table>
Y con esto finalmente hemos creado nuestro sistema de comentarios, ahora, voy a dejar los archivos junto al CMS que se ha creado en PHP para todos a modo de que puedan seguir el tuto

http://www.mediafire.com/?0gk364njn3397jb

Claro que el sistema puede mejorarse mucho, Por ejemplo podemos agregar un editor de texto enriquecido Pero esto es con caracter educativo.
A la espera de sus comentarios e inquietudes.
Un saludo

12.18.2010

Agregar un editor de texto enriquecido a un textarea

En esta ocacion, vamos a agregar un editor de texto a una aplicacion creada en PHP pero bien puede funcionar para cualquier area de texto, El editor que agregarmos sera CKeditor, uno que podemos encontrar de forma gratuita en internet.





En principio, el objetivo de este videotutorial es ampliar las funcionalidades de nuestro CMS creado con nuestro curso PHP para todos, sin embargo vale para cualquier aplicacion web.

Descarga del CKeditor: http://ckeditor.com/download

12.17.2010

Programacion en PHP y MySQL desde 0

Finalmente he terminado mi ultimo curso, le he llamado PHP para todos, el titulo inspirado por supuesto en Phyton para todos.

EL enfoque que le he dado a esta curso es el de alguien que NUNCA ha tenido contacto con ningun lenguaje de programacion. Aunque no toco el tema de la programacion orientada a objetos. El curso es de caracter practico. Al finalizarlo cualquier persona estara en capacidad de diseñar un pequeño CMS.

Los temas que toca este curso son:

1. Fundamentos basicos de programacion y analisis numerico

    1.1 Pseudocodigo

        1.1.1Instrucciones Secuenciales
        1.1.2Instrucciones Selectivas
        1.1.3Instrucciones Repetitivas

    1.2. Preparando el espacio de trabajo

        1.2.1Instalando un Servidor casero
        1.2.2Configurando un nuevo sitio en Dreamweaver

2. Introduccion a PHP

    2.1 Estructura deun programa
    2.2 Variables
    2.3 Operadores
    2.4 Constantes
    2.5 Salida de Datos
    2.6 Vectores
    2.7 Instrucciones Secuenciales

        2.7.1 If...elif...else

    2.8 Instrucciones Repetitivas

        2.8.1 while
        2.8.2 for

    2.9 Entrada de datos

    2.9.1 formularios

    2.10 funciones

3. Interaccion con Bases de datos

    3.2 Creacion de un CMS

        3.2.1 Operaciones con MySQL

            3.2.1.1 Alta de registros
            3.2.1.2 Listado de registros
            3.2.1.3 Eliminar registros
            3.2.1.4 Actualizar registros

    3.2.2 Manejo de Sesiones

        3.2.2.1Creacion de un sistema de Autentificacion

Esta en formato PDF y liberado bajo licencia Creative Commons, es decir que es libre de distribuir y de usar como base para la creacion de nuevos documentos siempre y cuando se reconozca al autor.

Esta es la URL para la descarga del Curso


Esta es la URL para la descarga de los recursos que se utilizan en el curso


 
El soporte oficial para este curso lo estare dando en http://revolutionteams.info aunque siempre pueden preguntar en comentarios o escribirme a mi direccion de email
 
Espero que os guste este segundo Tomo de la coleccion, un Saludo y como siempre a la espera de sus comentarios 

12.10.2010

Probando el nuevo Google Chrome OS


Hace algunos dias Google, dio por fin el anuncio del tan anciado sistema operativo, que tenia a toda la comunidad de informaticos pendientes del suceso, y aunque muchos hemos seguido la noticia, que mejor que probar el nuevo sistema para ver de que estamos hablando realmente.








Este video nos habla un poco de que es Google Chrome OS



Aqui en Bloggeandolo, instalamos el nuevo Chrome OS en una maquina virtual (vale, realmente se trata de Chromium OS que es la contraparte Open Source del proyecto Chrome) Pero el principio es el mismo, y por tanto el experimento es valido para este review.



Que podria hacer triunfar al nuevo sistema operativo?

Pues, la verdad, despues de probarlo, creo que el boom de la red, es el principal factor que podria hacer de un S.O ultraliviano como Chrome un exito rotundo es la simplicidad de la idea. Librarse de todo lo que uno no necesita, o no utiliza normalmente para enfocarse unicamente en la nube.

Sin embargo parte de lo que podria hacer que Chrome OS no sea un exito, es eso mismo, limita demaciado al usuario eliminando completamente la versatilidad de un sistema. Pero claro, si consideramos que muchos usuarios practicamente no utilizan la PC para mas que para navegar en la red es un sistema sumamente atractivo; especialmente para para portatiles y otros dispositivos moviles. PERO DE NINGUNA forma, es un S.O que pueda reeemplazar al clasico Windows o bien a nuestro querido Ubuntu.

Conclusiones, el sistema Operativo de google ciertamente es un proyecto interesante, con mucho potencial pero hace falta considerar algunos aspectos para considerarlo una opcion real. Habra que evaluar el desarrollo del proyecto y estar atentos al release oficial del mismo (que espero sea pronto pues realmente deseo probarlo)

Descarga del Torrent si desean probar el S.O: http://torrents.thepiratebay.org/5170843/chromeos-image-999.999.32309.211410-a1.vmdk.bz2.5170843.TPB.torrent

A la espera de sus comentarios
Un Saludo

12.08.2010

Frostwire, Una alternativa Open Source a LimeWire

Muchos conocemos sobre el reciente problema que tuvo Limewire, y la orden que se le impuso para parar de distribuir su software, Para muchos el mejor cliente p2p para compartir contenido. 


 Sin embargo, algo que debemos recordar es que desde que sus inicios y por su propia naturaleza, Internet es un sitio donde todos estamos dispuestos a compartir. sean conocimientos, opiniones y hasta contenido multimedia. Es algo que ninguna ley podra frenar. Solo unos dias despues de anunciado el fallo emitido contra Limewire, encontramos algunos "Limewares" piratas.

Hoy vengo a platicarles de Frostwire, una alternativa Open Source, que utiliza la red gnutella (como Limewire) y su interfaz es muy parecida (por no decir igual) ademas esta disponible y tiene soporte para multipĺes S.O y lo resalto pues el proyecto existe desde mucho antes de la catastrofica caida de limeware.

Algunas capturas:


Una vista de la biblioteca:


Lo mejor es que no hablamos de una version pirata, sin soporte sino de una aplicacion con una comunidad y un equipo que la respalda:


La recomiendo, sobre todo para aquellos habituados al clasico limewire, solo un archivo, una instalacion y listo el problema resuelto.

Enlace: http://www.frostwire.com/?id=home

Como siempre a la espera de sus comentarios;
Un Saludo

12.06.2010

Tutorial, crear una pagina institucional en FB

Todos sabemos que Facebook es un sitio que debemos tener en cuenta, sea cual sea el caracter de nuestra institucion es una forma de establecer contacto con personas que pueden incidir en la misma.



Porque Facebook nos ofrece esta posibilidad y a travez de una caracteristica muy interesante llamada "paginas"; Vale que hagamos un videotutorial sobre los aspectos basicos de la creacion de una pagina en Facebook, su funcionamiento y el como promocionarla.




Cuando creamos una pagina en facebook debemos recordar:

1. Con que fin estamos creando la pagina

Debemos llamar a acciones concretas a los usuarios, decirles exactamente que es lo que queremos que haga, y brindar la informacion de la forma mas clara posible.

2. No creamos una pagina para abandonarla

Si creamos una pagina en Facebook debemos usarla como si de cualquier otro medio de comunicacion se tratara, y con el animo de cualquier otro blog, videoblog o bien con el animo que visitamos el facebook debemos actualizar cada vez que podamos nuestra pagina. Eso motivara a mas usuarios a hacerse fan de la misma.


3. No debemos improvisar

Siempre debemos planificar las estrategias de comunicacion mas apropiadas para nuestra institucion, es el mismo caso para los medios digitales. Si no es el medio mas propicio para promover nuestra organizacion. Es mejo no hacerse una pagina en Facebook

Espero que este post les sea de utilidad
Un Saludo y como siempre a la espera de sus comentarios

12.03.2010

Instalacion de Linux en una Maquina Virtual

Vale, hoy les traigo un videotutorial que realize, para mostrar como instalar una distro de linux, en este caso Kubuntu (pero vale par cualquiera) en una maquina virtual, ya en otra ocacion hemos hablado de esta herramienta que es sumamente util para probar diferentes sistemas operativos sin la necesidad decomplicarse demaciado.



Espero les guste
Un saludo y como siempre a la espera de sus comentatios

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Design Blog, Make Online Money