Bonsoir
Je viens d'installer un système commentaire. Malheureusement, je ne parviens pas avoir un système multi-pages, c'est-à-dire des commentaires différents sur chaque page (actuellement les mêmes commentaires s'affichent sur toutes les pages).
J'ai crée côté serveur une colonne supplémentaire page_id afin d'attribuer à chaque page un ID et de ne retourner que les commentaires ayant cet ID.
Voici le code php :
Le submit.php :
L'affiche des commentaires et le champs :
Je vous épargne le reste du code. Le problème, c'est que lorsque j'envoie un commentaire avec ce système la colonne "page_id" de la base de donnée reste à 0. Et il semble donc ignorer mon $PageID = 1; et mon HERE page_id = '.$PageID.'
L'erreur est-elle dans l'attribution d'un ID à la page ? Si oui, comment lui en attribuer un et faire en sorte de que cet ID passe dans la bdd ?
Merci pour votre aide.
Modifié par csm (18 Aug 2012 - 22:45)
Je viens d'installer un système commentaire. Malheureusement, je ne parviens pas avoir un système multi-pages, c'est-à-dire des commentaires différents sur chaque page (actuellement les mêmes commentaires s'affichent sur toutes les pages).
J'ai crée côté serveur une colonne supplémentaire page_id afin d'attribuer à chaque page un ID et de ne retourner que les commentaires ayant cet ID.
Voici le code php :
<?php
// Error reporting:
error_reporting(E_ALL^E_NOTICE);
include "connect.php";
include "comment.class.php";
$PageID = 1;
/*
/ Select all the comments and populate the $comments array with objects
*/
$comments = array();
$result = mysql_query("SELECT * FROM comments WHERE page_id = '.$PageID.' ORDER BY id ASC");
while($row = mysql_fetch_assoc($result))
{
$comments[] = new Comment($row);
}
?>
Le submit.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']."'
'".$PageID."'
)");
$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).'}';
}
?>
L'affiche des commentaires et le champs :
<?php
/*
/ Output the comments one by one:
*/
foreach($comments as $c){
echo $c->markup();
}
?>
<div id="postcom"></div>
<div id="addCommentContainer">
<p>Ajouter un commentaire</p>
<form id="addCommentForm" method="post" action="">
<div>
<label for="name">Nom</label>
<input type="text" name="name" id="name" />
<label for="email">Adresse courriel</label>
<input type="text" name="email" id="email" />
<label for="url">Site internet (facultatif)</label>
<input type="text" name="url" id="url" />
<textarea name="body" id="body" cols="90" rows="8"></textarea><br />
<input type="submit" id="submit" value="Laisser un message" />
</div>
</form>
</div>
Je vous épargne le reste du code. Le problème, c'est que lorsque j'envoie un commentaire avec ce système la colonne "page_id" de la base de donnée reste à 0. Et il semble donc ignorer mon $PageID = 1; et mon HERE page_id = '.$PageID.'
L'erreur est-elle dans l'attribution d'un ID à la page ? Si oui, comment lui en attribuer un et faire en sorte de que cet ID passe dans la bdd ?
Merci pour votre aide.
Modifié par csm (18 Aug 2012 - 22:45)