Hola soy nuevo en esto y como no podia comentar al post de misa2pac2 he decidido areglar los errores en este post nose como quedara el post ya que al ser nuevo no se insertar cuadros para el php.
Crear un sistema de comentarios 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 post PHP desde 0 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 `tusitio`.`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]','$_REQU
EST[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 Crea tu web desde 0 de misa2pac2</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.
ESTE ERA SU ERROR include("conect.php"
; el punto y coma solo se pone fuera de los parentesis ya que indican que se a terminado esa regla, para preguntas comenten en este posts: http://www.taringa.net/posts/info/11669037/_Megapost_Crear-un-sistema-de-comentarios-PHP.html ya que al no ser mio no sabria muy bien responder.
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
Dejarme puntos para no ser novato xfavor.
Crear un sistema de comentarios 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 post PHP desde 0 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 `tusitio`.`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]','$_REQU
EST[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 Crea tu web desde 0 de misa2pac2</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.
ESTE ERA SU ERROR include("conect.php"

; el punto y coma solo se pone fuera de los parentesis ya que indican que se a terminado esa regla, para preguntas comenten en este posts: http://www.taringa.net/posts/info/11669037/_Megapost_Crear-un-sistema-de-comentarios-PHP.html ya que al no ser mio no sabria muy bien responder.
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
Dejarme puntos para no ser novato xfavor.