Foros del Web » Programando para Internet » PHP »

problema con sistema de comentarios

Estas en el tema de problema con sistema de comentarios en el foro de PHP en Foros del Web. hola...k tal a todos es mi primera vez por a qui,,soy nuevo en el mundo de la web... tengo un pequeño problema que para lo ...
  #1 (permalink)  
Antiguo 07/07/2011, 01:29
 
Fecha de Ingreso: julio-2011
Mensajes: 24
Antigüedad: 13 años, 4 meses
Puntos: 0
problema con sistema de comentarios

hola...k tal a todos es mi primera vez por a qui,,soy nuevo en el mundo de la web... tengo un pequeño problema que para lo que saben es muy sencillo,,bueno le planteare lo que me pasa con mi sistema de comentarios....

ejemplo.. tengo varias foto que quiero que valla el sistema de comentario... pero cuando publico algo en foto1 se publica en las de mas foto en todas las foto......

lo que quiero es que cuando publique algo en foto uno no se publique en las demas foto...me han dicho que hay que cambiarle el (id)..pero como soy novato ni idea de hacerlo .. bueno a qui le dejare el codigo para que me den una ayudita de como hacerlo .....



bueno ustedes me dicen como modifica el codigo


esta es la tabla que puse:

CREATE TABLE `comments` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(128) collate utf8_unicode_ci NOT NULL default '',
`url` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`email` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`body` text collate utf8_unicode_ci NOT NULL,
`dt` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;





index.php

Código PHP:
<?php

// Error reporting:
error_reporting(E_ALL^E_NOTICE);

include 
"connect.php";
include 
"comment.class.php";


/*
/    Select all the comments and populate the $comments array with objects
*/

$comments = array();
$result mysql_query("SELECT * FROM comments ORDER BY id ASC");

while(
$row mysql_fetch_assoc($result))
{
    
$comments[] = new Comment($row);
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Simple AJAX Commenting System | Tutorialzine demo</title>

<link rel="stylesheet" type="text/css" href="styles.css" />

</head>

<body>



<h1>&nbsp;</h1>

<div id="main">
  
  <?php

/*
/    Output the comments one by one:
*/

foreach($comments as $c){
    echo 
$c->markup();
}

?>
  
  <div id="addCommentContainer">
    <p>Add a Comment</p>
    <form id="addCommentForm" method="post" action="">
        <div>
            <label for="name">Your Name</label>
            <input type="text" name="name" id="name" />
            
            <label for="email">Your Email</label>
            <input type="text" name="email" id="email" />
            
            <label for="url">Website (not required)</label>
            <input type="text" name="url" id="url" />
            
            <label for="body">Comment Body</label>
            <textarea name="body" id="body" cols="20" rows="5"></textarea>
            
            <input type="submit" id="submit" value="Submit" />
        </div>
    </form>
</div>

</div>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="script.js"></script>

</body>
</html>






submit.php



Código PHP:
<?php

// Error reporting:
error_reporting(E_ALL^E_NOTICE);

include 
"connect.php";
include 
"comment.class.php";

/*
/    This array is going to be populated with either
/    the data that was sent to the script, or the
/    error messages.
/*/

$arr = array();
$validates Comment::validate($arr);

if(
$validates)
{
    
/* Everything is OK, insert to database: */
    
    
mysql_query("    INSERT INTO comments(name,url,email,body)
                    VALUES (
                        '"
.$arr['name']."',
                        '"
.$arr['url']."',
                        '"
.$arr['email']."',
                        '"
.$arr['body']."'
                    )"
);
    
    
$arr['dt'] = date('r',time());
    
$arr['id'] = mysql_insert_id();
    
    
/*
    /    The data in $arr is escaped for the mysql query,
    /    but we need the unescaped variables, so we apply,
    /    stripslashes to all the elements in the array:
    /*/
    
    
$arr array_map('stripslashes',$arr);
    
    
$insertedComment = new Comment($arr);

    
/* Outputting the markup of the just-inserted comment: */

    
echo json_encode(array('status'=>1,'html'=>$insertedComment->markup()));

}
else
{
    
/* Outputtng the error messages */
    
echo '{"status":0,"errors":'.json_encode($arr).'}';
}

?>







comment.class.php



Código PHP:
<?php

class Comment
{
    private 
$data = array();
    
    public function 
__construct($row)
    {
        
/*
        /    The constructor
        */
        
        
$this->data $row;
    }
    
    public function 
markup()
    {
        
/*
        /    This method outputs the XHTML markup of the comment
        */
        
        // Setting up an alias, so we don't have to write $this->data every time:
        
$d = &$this->data;
        
        
$link_open '';
        
$link_close '';
        
        if(
$d['url']){
            
            
// If the person has entered a URL when adding a comment,
            // define opening and closing hyperlink tags
            
            
$link_open '<a href="'.$d['url'].'">';
            
$link_close =  '</a>';
        }
        
        
// Converting the time to a UNIX timestamp:
        
$d['dt'] = strtotime($d['dt']);
        
        
// Needed for the default gravatar image:
        
$url 'http://'.dirname($_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]).'/img/default_avatar.gif';
        
        return 
'
        
            <div class="comment">
                <div class="avatar">
                    '
.$link_open.'
                    <img src="http://www.gravatar.com/avatar/'
.md5($d['email']).'?size=50&amp;default='.urlencode($url).'" />
                    '
.$link_close.'
                </div>
                
                <div class="name">'
.$link_open.$d['name'].$link_close.'</div>
                <div class="date" title="Added at '
.date('H:i \o\n d M Y',$d['dt']).'">'.date('d M Y',$d['dt']).'</div>
                <p>'
.$d['body'].'</p>
            </div>
        '
;
    }
    
    public static function 
validate(&$arr)
    {
        
/*
        /    This method is used to validate the data sent via AJAX.
        /
        /    It return true/false depending on whether the data is valid, and populates
        /    the $arr array passed as a paremter (notice the ampersand above) with
        /    either the valid input data, or the error messages.
        */
        
        
$errors = array();
        
$data    = array();
        
        
// Using the filter_input function introduced in PHP 5.2.0
        
        
if(!($data['email'] = filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)))
        {
            
$errors['email'] = 'Please enter a valid Email.';
        }
        
        if(!(
$data['url'] = filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL)))
        {
            
// If the URL field was not populated with a valid URL,
            // act as if no URL was entered at all:
            
            
$url '';
        }
        
        
// Using the filter with a custom callback function:
        
        
if(!($data['body'] = filter_input(INPUT_POST,'body',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
        {
            
$errors['body'] = 'Please enter a comment body.';
        }
        
        if(!(
$data['name'] = filter_input(INPUT_POST,'name',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
        {
            
$errors['name'] = 'Please enter a name.';
        }
        
        if(!empty(
$errors)){
            
            
// If there are errors, copy the $errors array to $arr:
            
            
$arr $errors;
            return 
false;
        }
        
        
// If the data is valid, sanitize all the data and copy it to $arr:
        
        
foreach($data as $k=>$v){
            
$arr[$k] = mysql_real_escape_string($v);
        }
        
        
// Ensure that the email is lower case:
        
        
$arr['email'] = strtolower(trim($arr['email']));
        
        return 
true;
        
    }

    private static function 
validate_text($str)
    {
        
/*
        /    This method is used internally as a FILTER_CALLBACK
        */
        
        
if(mb_strlen($str,'utf8')<1)
            return 
false;
        
        
// Encode all html special characters (<, >, ", & .. etc) and convert
        // the new line characters to <br> tags:
        
        
$str nl2br(htmlspecialchars($str));
        
        
// Remove the new line characters that are left
        
$str str_replace(array(chr(10),chr(13)),'',$str);
        
        return 
$str;
    }

}

?>









connect.php





Código PHP:
<?php

/* Database config */

$db_host        '';
$db_user        '';
$db_pass        '';
$db_database        ''

/* End config */


$link = @mysql_connect($db_host,$db_user,$db_pass) or die('Unable to establish a DB connection');

mysql_query("SET NAMES 'utf8'");
mysql_select_db($db_database,$link);

?>
  #2 (permalink)  
Antiguo 07/07/2011, 02:23
Avatar de ArmasXxX  
Fecha de Ingreso: marzo-2011
Ubicación: San Pedro Sula
Mensajes: 27
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: problema con sistema de comentarios

Hola Alex ps ahorita are una prueva con tu codigo pero solo una dudida para que es el: `dt` timestamp NOT NULL default CURRENT_TIMESTAMP, de la sql? yo se que de tiempo pero porque no lo haces mas facil?

ahorita te mando el codigo ya terminado solo are unas pruevas
  #3 (permalink)  
Antiguo 07/07/2011, 02:34
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: problema con sistema de comentarios

Hola:

Faltaría un campo que referencie la foto concreta... Aquí muestro mi sistema de comentarios...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 07/07/2011, 11:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: problema con sistema de comentarios

Trata el ejemplo que te brindó caricatos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: mysql
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 22:11.