No envia el comentario

Raya_Powa

Pues vereis, he añadido un sistema de comentarios a mi sistema de noticias de la web, el problema es que cuando escribo el comentario y le doy a enviar, me manda al index y no envia el comentario, podeis hacer la prueba en

http://www.zonadod.com/sr/index2.php?id=2

Ayuda pls, gracias de antemano

-nazgul-

Sin ver el código no te podemos ayudar en nada.

guiye

ese header de 190kb agusto

Raya_Powa

<?
// Datos de Conexion DB
$cxn = mysql_connect('localhost','user','pass');
mysql_select_db('db',$cxn);
//-------------------------------------------------

// Procesar el Formulario
if (isset($POST['enviar'])) {
// Si el comentario existe:
if (isset($
POST['comentario'])) {
// Si el nombre del autor no fue agregado
// colocaremos por default: Anónimo.
if ($POST['autor'] == "") { $autor = 'Anónimo'; }
else { $autor = $
POST['autor']; }


    $ip = $REMOTE_ADDR;
    // Arreglamos el comentario para que no
    // tenga etiquetas HTML.
    $comentario = htmlspecialchars($_POST['comentario']);
    $comentario = addslashes($comentario);
    
    mysql_query("INSERT INTO comentarios (id_padre, autor, ip, comentario) values ('$id_de_la_noticia', '$autor', '$ip', '$comentario')");

} else { $msg = 'Debe agregar un Comentario'; }

}

// Pedimos todos los comentarios cuyo id_padre
// coincida con el id de la noticia.
$sql = mysql_query("SELECT * FROM comentarios WHERE id_padre='$id_de_la_noticia' order by id ASC");
?>

-nazgul-

En donde pone:

$cxn = mysql_connect('localhost','user','pass');

Tienes que sustituir 'localhost' por el dominio de tu servidor MySQL y 'user' y 'pass' pues es obvio.

Si no tienes esos datos pídeselos a tu proveedor de hosting.

Raya_Powa

claro que tengo esos datos, lo que no los voy a poner aki en publico xD

Whose

Donde pone:
mysql_query("INSERT INTO comentarios (id_padre, autor, ip, comentario) values ('$id_de_la_noticia', '$autor', '$ip', '$comentario')");
Cambialo por:
mysql_query("INSERT INTO comentarios (id_padre, autor, ip, comentario) values ('$id_de_la_noticia', '$autor', '$ip', '$comentario')") or die(mysql_error()); exit;

Y nos dices si te imprime algun error.

-nazgul-

#6 Si lo has hecho tú, mis disculpas, pensé que era la típica pregunta de php-nuke :/

Thanat0s

¿Ya lo has conseguido solucionar rayita?

Raya_Powa

no imprime ningun error pero tampoco postea el mensaje

Thanat0s

¿Y sabes como buscar el error? :P

Te doy una pista, mira en tu base de datos a ver si ha guardado algo...

P.D: si no lo encuentras te sigo dando pistas

P.D.D: la mejor manera de aprender es hacerlo por uno mismo :P

_WolF_

Alomejor no es como lo metes sino como lo pintas.. nose si me explico :S

ItNaS

$comentario = htmlspecialchars($_POST['comentario']);
$comentario = addslashes($comentario);

q hacen esas 2 funciones? son como el strip_tags?

Raya_Powa

#11 No, no guarda nada en la db, por q sera?

#13 Lo que hace es impedir que al comentar, los usuarios pongan etiquetas html y me jodan la web :D

_WolF_

$id_de_la_noticia

esto de donde biene? te lo inventas?

mysql_query("INSERT INTO comentarios (id_padre, autor, ip, comentario) values ('$_GET[id]', '$autor', '$ip', '$comentario')");

$sql = mysql_query("SELECT * FROM comentarios WHERE id_padre='$_GET[id]' order by id ASC");

Asi alomejor funciona..

Raya_Powa

no, no funciona :( , aqui os meto el codigo entero:

<?
// Conectamos a la base de datos
// Pero verifiquen que no tengan una conexión ya
// Abierta en la página que muestre sus noticias
// Pues este fichero va a ser incluido en ella.
$cxn = mysql_connect('localhost','xxx','xxx');
mysql_select_db('xxx',$cxn);
//-------------------------------------------------

// Si el formulario fue enviado, lo procesamos.
if (isset($POST['enviar'])) {
// Si el comentario existe:
if (isset($
POST['comentario'])) {
// Si el nombre del autor no fue agregado
// colocaremos por default: Anónimo.
if ($POST['autor'] == "") { $autor = 'Anónimo'; }
else { $autor = $
POST['autor']; }


    $ip = $REMOTE_ADDR;
    // Arreglamos el comentario para que no
    // tenga etiquetas HTML.
    $comentario = htmlspecialchars($_POST['comentario']);
    $comentario = addslashes($comentario);
    
    // PRESTEN ATENCION A ESTA CONSULTA QUE VA A SER
    // EXPLICADA LUEGO, AL FINAL DEL FICHERO.
    mysql_query("INSERT INTO comentarios (id_padre, autor, ip, comentario) values ('$_GET[id]', '$autor', '$ip', '$comentario')");

   
} else { $msg = 'Debe agregar un Comentario'; }

}

// Pedimos todos los comentarios cuyo id_padre
// coincida con el id de la noticia.
$sql = mysql_query("SELECT * FROM comentarios WHERE id_padre='$_GET[id]' order by id ASC");
?>
<style type="text/css">
<!--
.Estilo1 {
font-size: 12px;
color: #FFFFFF;
font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
}
-->
</style>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td> <table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td><div align="center" class="Estilo1">Comentarios</div></td>
</tr>
<tr>
<td>
<?
while ($datos = mysql_fetch_array($sql)) {
//Arreglamos el comentario --------------------------
$comentario = $datos[comentario];
$comentario = stripslashes($comentario);
//---------------------------------------------------
?> <div align="center">
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<td width="431" class="title"><strong>Nombre:</strong> <?=$datos[nombre]?></td>
</tr>
<tr>
<td class="content">b>Comentario:/b><br>
<?=$comentario?></td>
</tr>
</table>
<br>
<? } ?>
</div></td>
</tr>
</table></td></tr>
<tr>
<td>


      <!-- AQUI EMPIEZA EL FORMULARIO QUE AGREGA LOS COMENTARIOS -->
      <form action="<?=$PHP_SELF?>" method="post">
      <table width="57%"  border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
           <td width="433"><div align="center" class="title"><strong>Agrega tu Comentario</strong></div></td>
        </tr>
        <tr>
        <td>  <div align="center" class="content">
              <div align="left"><strong>Nombre:
       i>
               </strong>
			     </div>
                 </div>                
			   <div align="center">              
			     </div>
		</td>
        </tr>
        <tr>
            <td class="content">
			    <div align="left">
				<strong>Comentario:</strong>
                </div><p align="left">
              <textarea name="comentario" cols="50" rows="7"></textarea>
            </p>                <p align="center">
              i>
          </p></td>
        </tr>
      </table>
      <div align="center">
      </div>
     </form>/td>
    </tr>

</table>

_WolF_

Tienes creada la base de datos?.. esque otra cosa :S

J0TA

Muy buenas,

Si pones:

if (isset($_POST['enviar'])) {

tendrás que poner un campo oculto en el formulario que se llame enviar y darle un valor 1, por ejemplo, para que te empiece a procesar todo el if.

Prueba eso y me comentas.

Un saludo.

Usuarios habituales

  • J0TA
  • _WolF_
  • Raya_Powa
  • ItNaS
  • Thanat0s
  • -nazgul-
  • guiye