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 06/07/2011, 22:25
 
Fecha de Ingreso: julio-2011
Mensajes: 24
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta 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);

?>

Última edición por alexhacker22; 07/07/2011 a las 01:24
  #2 (permalink)  
Antiguo 08/07/2011, 04:05
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: problema con sistema de comentarios

Intenta ser un poco más claro para que te podamos ayudar, además postea sólo el código que te da problemas. Va a ser un poco difícil porque tal como dices tú,e res nuevo, y parece que el código no es tuyo. Pero si replanteas la pregunta para que se entienda te podremos dar una mano, salu2!
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: comentarios, html, mysql, sistema, tabla, variables
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 16:26.