Bonjour à toutes et tous,
Ayant terminé les tutos de grafikart pour 'développer un site de A à Z', j'ai continuer son développement en intégrant un un formulaire de commentaires situé en bas de la page de chaque article. Si toute les vérification de captcha ou de champs vide ou autre s'effectue bien , je rencontre cependant deux problèmes:
Pouvez vous m'aider?
Existe il un script jquery ou autre, permettant d’éviter l'utilisation des ancres et de rediriger l’utilisateur sur le formulaire dans le cadre ou une règle n'est pas établie ?
j'ai trouver c'est à cause du css, de ma sidebar, en effet de maniere à pouvoir obtenir l'effet de continutée , j'ai déclarer le css suivant
sidebar{background-color: #FFFFFF ;margin-bottom: -20000px; padding: 0 0px 20000px 0; }du coup si , je retire mon padding ou mon margin, je n'ai plus cette effet déficiant. Bref ca m'arrange pas...
Bonjour, oui biensur..
Pour la fonction View du blogController, pour les commantaires, j'utiliser le système s'il y a des données posté
public function view($id){
$this->loadModel('Comment');
$this->loadModel('Post');
if($this->request->data){
if($this->Captcha->verifCaptcha($this->request->data)){
if($this->Comment->Valid($this->request->data)){
$this->request->data->post_id = $id;
unset($this->request->data->check1);
unset($this->request->data->check2);
unset($this->request->data->captcha);
$this->Comment->Save($this->request->data);
$this->redirect('blog/view/'.$id);
}
else{
$this->Session->setFlash('Veuiller corriger les erreurs', 'error');
}
}
else{
$this->Session->setFlash('Votre Captcha n\'est pas bon', 'error');
}
}
$d'article'] = $this->Post->FindFirst(array(
'fields' => '(SELECT COUNT(id) FROM comments WHERE comments.post_id = Post.id) AS Nbre,
(SELECT login FROM users WHERE users.id = Post.users_id) AS Author,
Post.id, Post.name, Post.content, Post.extract, Post.category, Post.created, Post.file, Post.users_id',
'conditions' => array( 'Post.id' => $id),
));
$d'comment'] = $this->Comment->Find(array(
'conditions' => array('post_id' => $id)
));
$this->set($d);
Pour le captcha, c'est simplement un petit code pour le moment
class Captcha{
public $nbre1 ;
public $nbre2 ;
function __construct() {
if(!isset($_SESSION)){
session_start();
};
}
public function index(){
$this->nbre1 = rand(1, 5);
$this->nbre2 = rand(1, 5);
$_SESSION'Captcha']'nbre1'] = $this->nbre1;
$_SESSION'Captcha']'nbre2'] = $this->nbre2;
return $html = '<input type="hidden" name="check1" value="'. Security::encode($_SESSION'Captcha']'nbre1']).'"/>
<input type="hidden" name="check2" value="'. Security::encode($_SESSION'Captcha']'nbre2']).'"/>
';
}
public function verifCaptcha($data){
$data->check1 = Security::decode($data->check1);
$data->check2 = Security::decode($data->check2);
if($data->captcha != ($data->check1 + $data->check2)){
return FALSE;
}
else{return TRUE;}
}
}
Et pour la page view
<!-- Debut de section#article -->
<section id="article">
<div class="container">
<div class="content ">
<div class="col8" id="main" role="main">
<article class="holder">
<aside class="middle">
<h2 class="middleTitle"><?php echo $article->name;?></h2>
</aside>
<figure class="top ">
<img src="<?php echo Router::webroot('images/featured/'.$article->file);?>"/>
</figure>
<div class="middleMeta">
<ul>
<li class="meta-icon"><i class="icon-pencil"></i></li>
<li class="meta-date">LE <?php echo strtoupper(dateFr($v->created));?></li>
<li class="meta-sep"> / </li>
<li class="meta-comment"><span><?php echo $article->Nbre;?> COMMENTAIRE<?php echo ($article->Nbre > 0) ? 's' : '';?></span></li>
<li class="meta-sep"> / </li>
<li class="meta-category">CATEGORIE : <span><?php echo strtoupper($article->category);?></span></li>
<li class="meta-sep"> / </li>
<li class="meta-submit" ><a href="#">LAISSER UN COMMENTAIRE</a></li>
</ul>
</div>
<section>
<div class="entry">
<div class="entry-intro"><?php echo $article->extract ;?></div>
<?php echo $article->content;?>
</div>
<div class="line"><span class="red-border"></span></div>
<div class="bottom">
<div class="col6">
<h2 ><?php echo $article->Nbre;?> Commentaire<?php echo ($article->Nbre > 0) ? 's' : '';?></h2>
</div>
<div class="col6 last">
<a href="#" class="click Cmedium center none">Laisser un commentaire</a>
</div>
</div>
</section>
</article>
<section class="full">
<div class="commentList">
<ul>
<?php if(!empty($comment)) : foreach($comment as $k=> $v): ?>
<li class="commentEvent">
<div class="commentAvatar">
<img src="http://placehold.it/150x150"/>
</div>
<div class="commentMessage">
<span class="commentNumber"><?php echo $comment->id;?></span>
<div class="commentAuthor">
<strong><?php echo strtoupper($v->pseudo) ;?></strong>
<em>Le <?php echo strtolower(dateFr($v->created));?></em>
</div>
<div class="commentContent">
<?php echo ucfirst($v->content);?>
</div>
</div>
<div class="commentRating clearfix">
<div class="ratingResult">+ 2</div>
<a class="btnRatingUp"><i class="icon-hand-up"></i></a>
<a class="btnRatingDown"><i class="icon-hand-down"></i></a>
</div>
</li>
<?php endforeach; endif;?>
</ul>
</div>
<div class="line"><span class="red-border"></span></div>
<div class="clearfix"></div>
<div class="form">
<h3 class="formTitle">Laisser un Commentaire</h3>
<p class="formNotes">Le code HTML n'est pas autorisé. </p>
<form class="formValidate" id="form" method="post" action="<?php echo Router::url('blog/view/'.$article->id.'#form'); ?>">
<?php echo $this->Form->input('content', 'commentaire', array('type' => 'textarea', 'rows'=>5));?>
<?php echo $this->Form->input('pseudo', 'pseudo');?>
<?php echo $this->Form->input('email', 'email');?>
<?php echo $this->Captcha->index();?>
<?php echo $this->Form->input('captcha', 'résultat');?>
<input type="submit" value="Commenter" id="formButton" class="button">
</form>
</div>
</section>
</div>
Et pour finir le model Comment... j'espere que ca fait pas trop lourd..
class Comment extends Model {
var $val = array(
'pseudo' => array(
'NotEmpty' => array(
'rule' => 'notEmpty',
'message' => 'Veuillez remplir le champ svp'
)
),
'content' => array(
'NotEmpty' => array(
'rule' => 'notEmpty',
'message' => 'Veuillez laisser un message'
),
'minLenght' => array(
'rule' => 'minLenght',
'message' => 'Veuillez remplir un minimum de 6 caractères'
)
),
'email' => array(
'email' => array(
'rule' => 'email',
'message' => 'votre adresse mail n\'est pas valide'
)
)
);
}
AVANT DE PARTIR AU TAF, JE PENSE A UN TRUC, DANS LE FIREBUG, JE CONSTATE QUE TOUS LE CODE HTML EST BIEN PRESENT, CONCERNANT L'ARTICLE ET LES COMMENTAIRES, POURRAIT IL S'AGIR D'UN PROBLEME DE CSS ?
je me suis creer un petit nom de domaine www.mizzouland.info, de maniere à test mon code en direct..
Vous pouvez test en direct..
En vous remerciant de votre aide
En fait pour l'url sus-cité, j'ai pas mis d'ancre.. donc du coup, je reviens en haut (http://www.mizzouland.info/guestbook/index )
Mais pour le blog, http://www.mizzouland.info/blog/view/19,par exemple, j'ai mis une ancre sur le formulaire et là , vous aurez le résultat escompté dont je me retrouve confronté..
Warning: Invalid argument supplied for foreach() in /homepages/43/d263964968/htdocs/Mizzouland/core/Form.php on line 49
Warning: Invalid argument supplied for foreach() in /homepages/43/d263964968/htdocs/Mizzouland/core/Form.php on line 60
Je pense que le problème vient du css.. Après ça savoir lequel, je vais faire des test avec firebug.. Et pour la page situe supra , en fait j'ai pas modifier ma classe form , du coup cela génère des erreurs..
Bref
Merci encore