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:

  • (1) Si l'utilisateur ne remplis pas correctement les champs, mon ancre sur le formulaire me redirige bien sur le le formulaire, mais efface tout le contenu de l'article au dessus ainsi que tout les commentaires s'il y en a. Enfin il ne les affiche pas.
  • (2) Si je ne mets pas d'ancre, sur le formulaire, forcement l'utilisateur est rediriger vers le haut de la page.

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 ?

11 réponses


Mizzou
Auteur
Réponse acceptée

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...

Peux-tu mettre à disposition le code où le système de commentaire et contenu ?

Mizzou
Auteur

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

Mizzou
Auteur

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

Mizzou
Auteur

C'est ce qui vous est afficher? Lorsque vous poster un commentaire ?

Non, bien avant :)

Mizzou
Auteur

? Je ne comprends pas? Ou ça? Sur quelle page?

Mizzou
Auteur

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