Foros del Web » Programando para Internet » PHP »

ayuda con este script de comentarios

Estas en el tema de ayuda con este script de comentarios en el foro de PHP en Foros del Web. pues veran, tengo un codigo para enviar comentarios a los perfiles de los usuarios d mi sistema d usuarios(valga la redundancia) los codigos son los ...
  #1 (permalink)  
Antiguo 12/05/2005, 17:16
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
ayuda con este script de comentarios

pues veran, tengo un codigo para enviar comentarios a los perfiles de los usuarios d mi sistema d usuarios(valga la redundancia) los codigos son los siguientes:

Esta es la tabla de los comentarios o firmas

Código PHP:
CREATE TABLE `firmas` (
`
idMEDIUMTEXT NOT NULL,
`
nombreVARCHAR(40NOT NULL,
`
fechaint(15NOT NULL default '0',
`
comentarioLONGTEXT NOT NULL
); 
Este es el script ke muestra los comentarios:

Código PHP:
<?
include('config.php'); // incluimos los datos de la conexion


$query mysql_query("SELECT * FROM `firmas` WHERE id='$id'  LIMIT 0, 30");  // hacemos un query para seleccionar las firmas de la id que tenemos seleccionada
while($row=mysql_fetch_array($query))  // con un while creamos un bucle que muestra todas
{
echo 
' <b>'.$row["nombre"].'</b> - '.$row["comentario"].'<br>';  // mostramos las firmas, esto puedes modifcarlo a tu gusto, poniendole el estilo que quieras
}
echo 
// ahora mostramos el form para añadir las firmas, el campo id del form no lo quiteis, si no no funcionara
'<form action="insertarcomentario.php" method="POST">
Autor <input type="text" name="nombre" size="30"><br>
ID: <INPUT TYPE="TEXT" value="'
.$id.'" NAME="id" readonly><br>
Contenido <textarea name="comentario" cols="30" rows="10"></textarea><br>
<input type="submit" name="submit" value="Enviar"></form>'
;
?>
y este es el codigo ke inserta los comentarios a la BD:

Código PHP:
<?
include('config.php'); //incluimos Loas datos de la conexion


//introducimos el nuevo registro en la tabla firmas
mysql_query("INSERT INTO firmas (nombre,comentario,id) values ('$nombre','$comentario','$id') ");
echo 
'Comentario Ingresado con exito';
?>
pero el problema esta en ke los comentarios los hace cualkiera y lo logico seria ke solo lo hagan los ke esten registrados en mi web, por ejemplo si el usuario logueado es "pepe", ke le aparezca el form solo con el textarea donde insertara el comentario, y este al ser enviado aparezca el comentario, el autor y la fecha en ke fue enviado el comentario ordenada desde la mas actual a la mas antigua. y si no lo esta pues ke le aparezca solo un mensaje ke diga ke para enviar comentario necesita estar registrado en la web, creo ke para ke ello suceda deberia tb usar la tabla de los usuarios, la tabla es esta:

Código PHP:
CREATE TABLE `users` (
  `
idint(4NOT NULL auto_increment,
  `
nickvarchar(30NOT NULL default '',
  `
passvarchar(30NOT NULL default '',
  `
emailvarchar(50NOT NULL default '',
  `
fechaint(15NOT NULL default '0',
  `
edadint(2NOT NULL default '0',
  `
sexoenum('0','1'NOT NULL default '0',
  `
levelint(2NOT NULL default '0',
  `
descriplongtext NOT NULL,
 
KEY `id` (`id`)
TYPE=MyISAM AUTO_INCREMENT=115 
alguien me podria orientar como hacerlo, ??
  #2 (permalink)  
Antiguo 12/05/2005, 17:27
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Información

Bueno si ya tienes la estructura donde los usuarios se registren entonces tambien podras hacer que los usuarios se autentifiquen.

Esto nos lleva a decir si el usuario no esta autentificado entonces no se le mostrara el formulario para comentarios.

En el proceso de autentificarlo despues de aber verificado que el usuario es quien dice ser por validacion de username y password entonces te creas una variable de session y le guardas un valor como por ejemplo autentificado:
Código PHP:
<?php
## ya validaste y sabes que esta autentificado ahora trabajas la session
session_start();
session_register("login");
$_SESSION["login"] = "autentificado";
?>
Despues en cada pagina donde necesites validar que esta autentificado en la primera linea de la pagina pones:
Código PHP:
<?php
session_start
();
?>
Esto activa las sessiones.

Ya teniendolas activadas podras verificar la session y mostrar el formulario
Código PHP:
<?php
if($_SESSION["login"]=="autentificado"){
#aqui muestras el formulario de los comentarios
}
?>
Asi las personas no autentificadas no lo veran ni podran usarlo.
  #3 (permalink)  
Antiguo 12/05/2005, 17:37
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
haber yo ya tengo el sistema de login ese mismo donde se pone el user y pass en canda una de las secciones de mi web (si es a eso a lo ke te refieres), bueno yo tengo creada la variable $_SESSION[usuario] entonces lo ke me faltaria es poner ese ultimo condigo php ke me pones ahi cierto?? corrigeme si me equivoco amigo, un saludo y gracias por tu ayuda :)
  #4 (permalink)  
Antiguo 12/05/2005, 17:38
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Exacto si esta viva la session usuario entonces usala para hacer la condicion y mostrar el formulario.
  #5 (permalink)  
Antiguo 12/05/2005, 18:05
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
haber segun entendi, deje el codigo del formulario de esta manera:

Código PHP:
<?
$query 
mysql_query("SELECT * FROM `firmas` WHERE id='$id'");  // hacemos un query para seleccionar las firmas de la id que tenemos seleccionada
$firma $query[firma] ;
while(
$row=mysql_fetch_array($query))  // con un while creamos un bucle que muestra todas
{
echo 
'<table width="550" border="0" cellspacing="1">
<tr><td><div class="autor"> &nbsp;<b>'
.$row["nombre"].'</b></div></td><td><div class="datefirma">&nbsp;</div></td></tr>
<tr><td colspan="2" width="548"><div class="usercoment"> '
.$row["comentario"].'</div></td></tr></table><br>';  // mostramos las firmas, esto puedes modifcarlo a tu gusto, poniendole el estilo que quieras
}
if(
$_SESSION["usuario"]=="autentificado"){
echo 
// ahora mostramos el form para añadir las firmas, el campo id del form no lo quiteis, si no no funcionara
'<table width="550" border="0" cellspacing="2"><tr><td class="titulo">Insertar comentario</td></tr>
<tr><td><div class="usercoment"><form action="insertarcomentario.php" method="POST">
<table width="520" border="0" cellspacing="2">
<tr><td width="150"><b>Autor:</b></td><td><input type="text" name="nombre" class="nick"></td></tr>
<tr><td width="150"><b>ID:</b></td><td><INPUT TYPE="TEXT" class="textbox" value="'
.$id.'" NAME="id" readonly></td></tr>
<tr><td width="150" valign="top"><b>Comentario:</b></td><td><textarea cols="20" rows="10" name="comentario" class="coment"></textarea></td></tr>
<tr><td width="150" colspan="2"><input type="submit" name="submit" value="Enviar comentario" id="boton"></td></tr></table></form></div></tr></td></table>'
;
}else {
echo 
'no estas registrado';
}
?>
pero al ejecutarlo me sale al reves o sea ke si no esta logueado le dice "no estas registrado" y si no lo esta pues le muestra el form, en ke falle ??
  #6 (permalink)  
Antiguo 12/05/2005, 18:13
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Cambia esta linea:
if($_SESSION["usuario"]=="autentificado"){

por esta
if(!empty($_SESSION["usuario"])){
  #7 (permalink)  
Antiguo 12/05/2005, 18:19
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
hey !! me funciona bien, pero hay un detalle ke no cuaja, como le hago para ke al enviar el mensaje se sepa kien lo envio o sea creo ke yo tengo ahi demas el campo autor como le haria para ke en ese campo automaticamente se inserte el dato del nick ke envio el comentario sin necesidad de ingresarlo por formulario, no se si me dejo entender :s

PD.: y lo de la fecha??, para ke me salga ordenada desde la mas actual a la mas antigua
  #8 (permalink)  
Antiguo 12/05/2005, 18:22
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Bueno yo creo que la Session usuario tiene ese valor??

Si es asi en el campo de autor pon:
<input type="text" name="autor" value="<?php echo $_SESSION["usuario"]?>">

Solo debes imprimirle en value el autor y ese campo agregale al final readonly asi no lo editan y cambian el autor o simplemente has un campo hidden.
Campo hidden
<input type="hidden" name="autor" value="<?php echo $_SESSION["usuario"]?>">

Campo con readonly se vera pero no se editara
<input type="text" name="autor" value="<?php echo $_SESSION["usuario"]?>" readonly>
  #9 (permalink)  
Antiguo 12/05/2005, 18:34
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
creo ke hay una falla en la concatenacion de las comillas segun mi codigo y es ke no consigo la forma de arreglarlo se envia bien el comentario pero no me aparece el autor :S
  #10 (permalink)  
Antiguo 12/05/2005, 18:35
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
bueno verificalo haslo con calma, ya me retiro hablamos mañana o busco tu post por si quedo pendiente.
  #11 (permalink)  
Antiguo 12/05/2005, 18:40
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
ok muchas gracias, ke te vaya bien :)
  #12 (permalink)  
Antiguo 13/05/2005, 15:14
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
hola de nuevo, me da ke no podre, disculpame por la torpeza pero intento de una y mil maneras encomillar ese echo y siempre me muestra el > al momento ke kiero insertar un comentario nuevo, aunke inserta el comentario solo aparece el comentario propiamente dicho pero no el autor, el codigo de ese echo ke tanto problema me da es este

Código PHP:
echo // ahora mostramos el form para añadir las firmas, el campo id del form no lo quiteis, si no no funcionara
'<table width="550" border="0" cellspacing="2"><tr><td class="titulo">Insertar comentario</td></tr>
<tr><td><div class="usercoment"><form action="insertarcomentario.php" method="POST">
<table width="520" border="0" cellspacing="2">
<tr><td width="150"><b>Autor:</b></td><td><input type="hidden" name="autor" value=<?php echo $_SESSION["usuario"]?>></td></tr>
<tr><td width="150"><b>ID:</b></td><td><INPUT TYPE="TEXT" class="textbox" value="'.$id.'" NAME="id" readonly></td></tr>
<tr><td width="150" valign="top"><b>Comentario:</b></td><td><textarea cols="20" rows="10" name="comentario" class="coment"></textarea></td></tr>
<tr><td width="150" colspan="2"><input type="submit" name="submit" value="Enviar comentario" id="boton"></td></tr></table></form></div></tr></td></table>';
es correcta esa forma ??
  #13 (permalink)  
Antiguo 13/05/2005, 16:11
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
bueno pude corregirlo por fin el codigo me keda de esta manera

Código PHP:
<?
$query 
mysql_query("SELECT * FROM `firmas` WHERE id='$id'");  // hacemos un query para seleccionar las firmas de la id que tenemos seleccionada
$firma $query[firma] ;
while(
$row=mysql_fetch_array($query))  // con un while creamos un bucle que muestra todas
{
echo 
'<table width="550" border="0" cellspacing="1">
<tr><td><div class="autor"> &nbsp;<b>'
.$row["nombre"].'</b></div></td><td><div class="datefirma">&nbsp;</div></td></tr>
<tr><td colspan="2" width="548"><div class="usercoment"> '
.$row["comentario"].'</div></td></tr></table><br>';  // mostramos las firmas, esto puedes modifcarlo a tu gusto, poniendole el estilo que quieras
}
if(!empty(
$_SESSION["usuario"])){
echo 
// ahora mostramos el form para añadir las firmas, el campo id del form no lo quiteis, si no no funcionara
'<table width="550" border="0" cellspacing="2"><tr><td class="titulo">Insertar comentario</td></tr>
<tr><td><div class="usercoment"><form action="insertarcomentario.php" method="POST">
<table width="520" border="0" cellspacing="2">
<tr><td width="150"><b>Autor:</b></td><td><input type="hidden" name="autor" value="'
.$_SESSION["usuario"].'"></td></tr>
<tr><td width="150"><b>ID:</b></td><td><INPUT TYPE="TEXT" class="textbox" value="'
.$id.'" NAME="id" readonly></td></tr>
<tr><td width="150" valign="top"><b>Comentario:</b></td><td><textarea cols="20" rows="10" name="comentario" class="coment"></textarea></td></tr>
<tr><td width="150" colspan="2"><input type="submit" name="submit" value="Enviar comentario" id="boton"></td></tr></table></form></div></tr></td></table>'
;
}else {
echo 
'no estas registrado';
}
?>
ahora me falta ke los datos del $_SESSION[usuario] se guarden en la base de datos el script de tal es el sgte:

Código PHP:

<?
session_start
();
include(
'config.php'); //incluimos Loas datos de la conexion

$comentario str_replace("\r\n","<br>",$comentario);
$comentario str_replace("\n\r","<br>",$comentario);
$comentario str_replace("\n","<br>",$comentario);
//introducimos el nuevo registro en la tabla firmas
mysql_query("INSERT INTO firmas (nombre,comentario,id) values ('$nombre','$comentario','$id') "); 
echo 
'Comentario Ingresado con exito'
?>
<a class="link3" href="javascript:history.back();"><strong>Regresar</strong></a>
pero no tengo ni puñetera idea de donde ponerlo ni de ke manera :s
  #14 (permalink)  
Antiguo 13/05/2005, 18:25
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Código PHP:
<?
session_start
();
include(
'config.php'); //incluimos Loas datos de la conexion

$comentario str_replace("\r\n","<br>",$comentario);
$comentario str_replace("\n\r","<br>",$comentario);
$comentario str_replace("\n","<br>",$comentario);
//introducimos el nuevo registro en la tabla firmas
mysql_query("INSERT INTO firmas (nombre,comentario,id) values ('".$_SESSION["usuario"]."','$comentario','$id') ");
echo 
'Comentario Ingresado con exito';
?>
<a class="link3" href="javascript:history.back();"><strong>Regresar</strong></a>
  #15 (permalink)  
Antiguo 13/05/2005, 19:52
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
oye muchas gracias por la ayuda pero yo lo solucione de esta manera no se si sera la correcta pero funciona

Código PHP:
<?
session_start
();
include(
'config.php'); //incluimos Loas datos de la conexion

$comentario str_replace("\r\n","<br>",$comentario);
$comentario str_replace("\n\r","<br>",$comentario);
$comentario str_replace("\n","<br>",$comentario);
//introducimos el nuevo registro en la tabla firmas
$nombre $_SESSION['usuario'];
mysql_query("INSERT INTO firmas (nombre,comentario,id) values ('$nombre','$comentario','$id') "); 
echo 
'Comentario Ingresado con exito'
?>
<a class="link3" href="javascript:history.back();"><strong>Regresar</strong></a>
ahora lo ke kiero es ke se muestre la fecha en ke fue enviado el mensaje, partiendo de los script ke puse al principio como lo haria ?? ya tengo el campo fecha en la tabla, un saludo
  #16 (permalink)  
Antiguo 14/05/2005, 00:18
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por ZydRick
oye muchas gracias por la ayuda pero yo lo solucione de esta manera no se si sera la correcta pero funciona
No le veo diferencia a lo último sugerido por dwaks.

Cita:
Iniciado por ZydRick
ahora lo ke kiero es ke se muestre la fecha en ke fue enviado el mensaje, partiendo de los script ke puse al principio como lo haria ?? ya tengo el campo fecha en la tabla, un saludo
... perdón por no seguir/leer todo el tema... pero, viendo la estructura de tu tabla veo que tienes un campo "fecha" en la que, según tu query, no le asignas nada... entonces creo por ahí va la pregunta.

Ahora bien, dicho campo es tipo "INT"... .. no sé qué tengas en mente ó qué es lo que quieres hacer con un campo de ese tipo, quizá debas mencionarlo...

Repito: no he seguido el tema pero respondiiendo a tu pregunta te diría que cambiaras el tipo del campo fecha por DATE si quieres manejar solo la fecha ó DATETIME si también quieres manejas la hora. Entonces, si te quedas con DATE, tu query la cambiaria por:
Código PHP:
mysql_query("INSERT INTO firmas values ('$id', '".$_SESSION["usuario"]."', '$comentario', CURDATE())"); 
y si te decides por un campo DATETIME:
Código PHP:
mysql_query("INSERT INTO firmas values ('$id', '".$_SESSION["usuario"]."', '$comentario', NOW())"); 
... ahora, el formato que estarías manejando es YYYY-MM-DD para DATE ó YYYY-MM-DD hh:mm:ss para DATETIME... a muchos les causa problema manejar fechas de esta manera por el hecho de recuperarla e imprimirla... podrías hacer explode()'s y re-armar la fecha... pero eso sería si no existiese la función DATE_FORMAT() de SQL... Para tal caso... tema muy tratado: http://www.forosdelweb.com/f21/year-month-ok-por-que-day-no-272475/

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 14/05/2005 a las 00:26
  #17 (permalink)  
Antiguo 14/05/2005, 15:31
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
sip cambie el tipo de dato de ese campo por DATETIME y de momento funciona, una duda mas como le haria para grabar al tipo de hora grenwitch y no español ??, gracias por su ayuda :)
  #18 (permalink)  
Antiguo 14/05/2005, 21:08
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
¿no español??...

Con las funciones CURDATE() y NOW() (de SQL), optendrás el "momento actual" de tu servidor... Si quieres guardar otra hora/fecha (la de tu hubicación, la del meridiano, ´ño cualquier otra), solo vé qué diferencias hay en horas y con DATE_SUB() ó DATE_ADD() haz dicha diferencia (todo eso está explicado en el enlace que te dejé, invito a leerlo con cuidado).

Ejemplo:... la diferencia es de -6hrs
Código:
INSERT INTO tabla(fecha) VALUES (DATE_SUB(NOW(), INTERVAL 6 HOURS))
Igual te invito a que busques en el foro...

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #19 (permalink)  
Antiguo 15/05/2005, 10:39
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
ok muchas gracias por su ayuda :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:24.