IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Afficher les commentaires sur une current page


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Décembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Décembre 2016
    Messages : 11
    Points : 2
    Points
    2
    Par défaut Afficher les commentaires sur une current page
    Bonsoir à tous,

    J'essaye actuellement de mettre en place un système de commentaires sur mon site réalisé en html, css et php. Ne connaissant pas grand chose en php j'ai un peu triché en reprenant le code de cette page : http://www.roytuts.com/nested-commen...m-in-php-ajax/.
    Comme vous pourrez le constater le système fonctionne bien j'ai mis en place deux pages fictives pour le tester ici et ici.
    Le problème est le suivant : je n'arrive pas à seulement afficher les commentaires postés sur la page en question (current page). Avec l'aide d'un ami développeur j'ai réussi à mettre en place un code permettant de récupérer l'url de la "current page" voici une capture d'écran de la base de données dans phpmyadmin :

    Nom : Sans titre.jpg
Affichages : 1039
Taille : 85,8 Ko

    Pour le fonctionnement du système 3 fichiers semblent être déterminants :

    Le premier concerne le code des pages comtest.php et test. php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>Nested or hierarchical comment system in PHP, AJAX, Jquery</title>
            <link rel="stylesheet" href="comments.css">
            <script src="jquery-1.9.1.min.js"></script>
            <script src="jquery-ui-1.10.3-custom.min.js"></script>
            <script src="jquery-migrate-1.2.1.js"></script>
            <script src="jquery.blockUI.js"></script>
            <script src="comments_blog.js"></script>
     
            <meta name="robots" content="noindex">
     
        </head>
        <body>
            <?php
     
            $current_page = $_SERVER['REQUEST_URI'];
            require("comments.php");
            ?>
            <div style="width: 600px;">
                <div id="comment_wrapper">
                    <div id="comment_form_wrapper">
                        <div id="comment_resp"></div>
                        <h4>Laissez votre commentaire ci-dessous<a href="javascript:void(0);" id="cancel-comment-reply-link">Effacer</a></h4>
                        <form id="comment_form" name="comment_form" action="" method="post">
                            <div>
                                Name<input type="text" name="comment_name" id="comment_name" size="54"/>
                            </div>
                            <div>
                                Email<input type="text" name="comment_email" id="comment_email" size="54"/>
                            </div>
                            <div>
                                Website<input type="text" name="comment_web" id="comment_web" size="54"/>
                            </div>
                            <div>
                                Comment<textarea name="comment_text" id="comment_text" rows="6"></textarea>
                            </div>
                            <div>
                                <input type="hidden" name="reply_id" id="reply_id" value=""/>
                                <input type="hidden" name="current_page" value="<?=$current_page?>">
                                <input type="hidden" name="depth_level" id="depth_level" value=""/>
                                <input type="submit" name="comment_submit" id="comment_submit" value="Post Comment" class="button"/>
                            </div>
                        </form>
                    </div>
                    <?php
                    echo $comments;
                    ?>
                </div>
            </div>
        </body>
    </html>
    Le deuxième concerne le code du fichier add_comments qui comme son nom l'indique sert à ajouter des commentaires :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php
     
    require("config.php");
    require("helper.php");
     
    if (isset($_POST)) {
        $parent_id = ($_POST['reply_id'] == NULL || $_POST['reply_id'] == '') ? 0 : $_POST['reply_id'];
        $email = $_POST['comment_email'];
        $name = $_POST['comment_name'];
        $web = $_POST['comment_web'];
        $comment_text = $_POST['comment_text'];
        $depth_level = $_POST['depth_level'];
        $page_comment = $_POST['current_page'];
       $sql = "INSERT INTO comment(comment_text, parent_id, ip_address, email_address, web_address, created_by, current_page) VALUES('$comment_text', $parent_id, '" . $_SERVER['REMOTE_ADDR'] . "', '$email', '$web', '$name', '$page_comment')";
        $query = dbQuery($sql);
        $inserted_id = dbInsertId();
      $sql = "SELECT * FROM comment WHERE current_page='$page_comment'";
        $results = dbQuery($sql);
        if ($results) {
            while ($row = dbFetchAssoc($results)) {
                if ($depth_level < 3) {
                    $reply_link = "<a href=\"#\" class=\"reply_button\" id=\"{$row['comment_id']}\">reply</a><br/>";
                } else {
                    $reply_link = '';
                }
                $depth = $depth_level + 1;
                $name = strlen($row['created_by']) ? $row['created_by'] : 'anonymous user';
                echo "<li id=\"li_comment_{$row['comment_id']}\" data-depth-level=\"{$depth}\">" .
                "<div><span class=\"commenter\">{$name} says</span>&nbsp;<span class=\"comment_date\">,  {$row['created_date']}</span></div>" .
                "<div style=\"margin-top:4px;\">{$row['comment_text']}</div>" .
                $reply_link . "</li>";
            }
            echo '<div class="success">Comment successfully posted</div>';
        } else {
            echo '<div class="error">Error in adding comment</div>';
        }
    } else {
        echo '<div class="error">Please enter required fields</div>';
    }
     
    /*
     * End of add_comment.php
     */
    Enfin le dernier concerne le fichier comments.php qui gère l'affichage des commentaires. Je pense que c'est grâce à lui que je parviendrai à résoudre mon problème :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
     
    require("config.php");
    require("helper.php");
     
    $sql = 'SELECT * FROM comment' ;
    $results = dbQuery($sql);
    $items = array();
    while ($row = dbFetchAssoc($results)) {
        $items[] = $row;
    }
    $comments = format_comments($items);
     
    /*
     * End of comments.php
     */
    Il y a aussi un fichier javascript mais je ne pense pas que le modfier aura un impact.

    Voilà. Donc pour rappel je cherche à afficher les commentaires uniquement postés sur les pages où ils ont été postés

    Merci par avance de votre aide

    Romain

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Si j'ai bien compris, tu affiches tous les commentaires de la base et pas uniquement ceux liés à la page, c'est bien ça ?

    Ta requête de récupération des commentaires pour l'affichage ne contient aucun filtre : $sql = 'SELECT * FROM comment' ;, c'est donc logique de tout récupérer.
    Il faut que tu utilises à la place une requête qui filtre sur la valeur de current_page : $sql = "SELECT * FROM comment WHERE current_page='$current_page'";
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Candidat au Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Décembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Décembre 2016
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    C'est bien ça merci pour ta réponse Celira, je teste ça au plus vite et te tiens au courant !

  4. #4
    Candidat au Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Décembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Décembre 2016
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup Celira ça marche impeccable ! dernière question :

    Je voudrais que l'url rentré par l'utilisateur dans le champ "website" paraisse dans une balise href (je pense) sur le pseudo une fois le commentaire posté. Cela permettrait de renvoyer vers le site de l'utilisateur quand on clique sur son pseudo. Je pense que la solution se trouve dans le fichier add_comments après l'instruction echo au niveau de {$name}:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     echo "<li id=\"li_comment_{$row['comment_id']}\" data-depth-level=\"{$depth}\">" .
                "<div><span class=\"commenter\">{$name} says</span>&nbsp;<span class=\"comment_date\">,  {$row['created_date']}</span></div>" .
                "<div style=\"margin-top:4px;\">{$row['comment_text']}</div>" .
                $reply_link . "</li>";

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    De ce que je comprends, add_comments.php gère la création de nouveau commentaire et l’enregistrement en base
    Ce qui affiche les commentaires, c'est la fonction format_comments() qui est appelée dans comments.php a priori. Il faut donc que tu trouves le code de cette fonction d'abord.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Candidat au Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Décembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Décembre 2016
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Ok apparemment cette fonction est présente dans le fichier javascript lié à savoir comment_blog.js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    $(function() {
        $("#cancel-comment-reply-link").hide();
        $(".reply_button").live('click', function(event) {
            event.preventDefault();
            var id = $(this).attr("id");
            if ($("#li_comment_" + id).find('ul').size() > 0) {
                $("#li_comment_" + id + " ul:first").prepend($("#comment_form_wrapper"));
            } else {
                $("#li_comment_" + id).append($("#comment_form_wrapper"));
            }
            var depth_level = $('#li_comment_' + id).data('depth-level');
            $("#reply_id").attr("value", id);
            $("#depth_level").attr("value", depth_level);
            $("#cancel-comment-reply-link").show();
        });
     
        $("#cancel-comment-reply-link").bind("click", function(event) {
            event.preventDefault();
            $("#reply_id").attr("value", "");
            $("#comment_wrapper").prepend($("#comment_form_wrapper"));
            $(this).hide();
        });
     
        $("#comment_form").bind("submit", function(event) {
            event.preventDefault();
            if ($("#comment_name").val() == "")
            {
                alert("Please enter your name");
                return false;
            }
            if ($("#comment_email").val() == "")
            {
                alert("Please enter your email");
                return false;
            }
            var regex_email = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
            if (regex_email.test($("#comment_email").val()) == false) {
                alert('Invalid Email Address');
                return false;
            }
            var regex_web = /^((ftp|https?):\/\/)?(www\.)?[a-z0-9\-\.]{3,}\.[a-z]{2,3}$/;
            if ($("#comment_web").val() != "" && regex_web.test($("#comment_web").val()) == false) {
                alert('Invalid Website Address');
                return false;
            }
            if ($("#comment_text").val() == "")
            {
                alert("Please enter your comment");
                return false;
            }
            $.ajax({
                type: "POST",
                //async: false,
                url: "add_comment.php",
                data: $('#comment_form').serialize(),
                dataType: "html",
                cache: false,
                beforeSend: function() {
                    $('#comment_wrapper').block({
                        message: 'Please wait....',
                        css: {
                            border: 'none',
                            padding: '15px',
                            backgroundColor: '#ccc',
                            '-webkit-border-radius': '10px',
                            '-moz-border-radius': '10px'
                        },
                        overlayCSS: {
                            backgroundColor: '#ffe'
                        }
                    });
                },
                success: function(comment) {
                    var reply_id = $("#reply_id").val();
                    if (reply_id == "") {
                        $("#comment_wrapper ul:first").prepend(comment);
                    }
                    else {
                        if ($("#li_comment_" + reply_id).find('ul').size() > 0) {
                            $("#li_comment_" + reply_id + " ul:first").prepend(comment);
                        }
                        else {
                            $("#li_comment_" + reply_id).append('<ul class="comment">' + comment + '</ul>');
                        }
                    }
                    $("#comment_name").attr("value", "");
                    $("#comment_email").attr("value", "");
                    $("#comment_web").attr("value", "");
                    $("#comment_text").attr("value", "");
                    $("#reply_id").attr("value", "");
                    $("#cancel-comment-reply-link").hide();
                    $("#comment_wrapper").prepend($("#comment_form_wrapper"));
                    $('#comment_wrapper').unblock();
                },
                error: function(jqXHR, textStatus, errorThrown) {
                    //console.log(textStatus, errorThrown);
                    alert(textStatus + " " + errorThrown);
                }
            });
        });
    });

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Non, ça c'est le code de la fonction JS qui te permet de créer un commentaire (et qui va appeler add_comments.php)

    Ce qui t'intéresse c'est l'affichage du commentaire, il doit y avoir une fonction PHP qui s'appelle format_comments (probablement dans helper.php) et c'est ce bout de code là qu'il faut modifier.

    Cela dit, le morceau de code que tu citais plus haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo "<li id=\"li_comment_{$row['comment_id']}\" data-depth-level=\"{$depth}\">" .
                "<div><span class=\"commenter\">{$name} says</span>&nbsp;<span class=\"comment_date\">,  {$row['created_date']}</span></div>" .
                "<div style=\"margin-top:4px;\">{$row['comment_text']}</div>" .
                $reply_link . "</li>";
    est également à modifier, puisque c'est l'affichage suite à la création d'un nouveau commentaire
    Tu peux le modifier en ajoutant un lien comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo "<li id=\"li_comment_{$row['comment_id']}\" data-depth-level=\"{$depth}\">" .
                "<div><span class=\"commenter\">{$name} (<a href="{$row['web_address']}">{$row['web_address']}</a>) says</span>&nbsp;<span class=\"comment_date\">,  {$row['created_date']}</span></div>" .
                "<div style=\"margin-top:4px;\">{$row['comment_text']}</div>" .
                $reply_link . "</li>";
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Candidat au Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Décembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Décembre 2016
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    C'est fait merci Effectivement la fonction format_comments est définie dans le fichier helper.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    <?php
     
    function format_comments($comments) {
        $html = array();
        $root_id = 0;
        foreach ($comments as $comment)
            $children[$comment['parent_id']][] = $comment;
     
        // loop will be false if the root has no children (i.e., an empty comment!)
        $loop = !empty($children[$root_id]);
     
        // initializing $parent as the root
        $parent = $root_id;
        $parent_stack = array();
     
        // HTML wrapper for the menu (open)
        $html[] = '<ul class="comment">';
     
        while ($loop && ( ( $option = each($children[$parent]) ) || ( $parent > $root_id ) )) {
            if ($option === false) {
                $parent = array_pop($parent_stack);
     
                // HTML for comment item containing childrens (close)
                $html[] = str_repeat("\t", ( count($parent_stack) + 1 ) * 2) . '</ul>';
                $html[] = str_repeat("\t", ( count($parent_stack) + 1 ) * 2 - 1) . '</li>';
            } elseif (!empty($children[$option['value']['comment_id']])) {
                $tab = str_repeat("\t", ( count($parent_stack) + 1 ) * 2 - 1);
                $keep_track_depth = count($parent_stack);
                if ($keep_track_depth <= 3) {
                    $reply_link = '%1$s%1$s<a href="#" class="reply_button" id="%2$s">reply</a><br/>%1$s';
                } else {
                    $reply_link = '';
                }
                $name = strlen($option['value']['created_by']) ? $option['value']['created_by'] : 'anonymous_user';
                //$reply_link = '%1$s%1$s<a href="#" class="reply_button" id="%2$s">reply</a><br/>';
                // HTML for comment item containing childrens (open)
                $html[] = sprintf(
                        '%1$s<li id="li_comment_%2$s" data-depth-level="' . $keep_track_depth . '">' .
                        '%1$s%1$s<div><span class="commenter">%3$s</span>&nbsp;' .
                        '<span class="comment_date">%5$s</span></div>' .
                        '%1$s%1$s<div style="margin-top:4px;">%4$s</div>' .
                        $reply_link . '</li>', $tab, // %1$s = tabulation
                        $option['value']['comment_id'], //%2$s id
                        $name . ' says', // %3$s = commenter
                        $option['value']['comment_text'], // %4$s = comment
                        ', ' . $option['value']['created_date'] // %5$s = comment created_date
                );
                //$check_status = "";
                $html[] = $tab . "\t" . '<ul class="comment">';
     
                array_push($parent_stack, $option['value']['parent_id']);
                $parent = $option['value']['comment_id'];
            } else {
                $name = strlen($option['value']['created_by']) ? $option['value']['created_by'] : 'anonymous user';
                $keep_track_depth = count($parent_stack);
                if ($keep_track_depth <= 3) {
                    $reply_link = '%1$s%1$s<a href="#" class="reply_button" id="%2$s">reply</a><br/>%1$s';
                } else {
                    $reply_link = '';
                }
     
                //$reply_link = '%1$s%1$s<a href="#" class="reply_button" id="%2$s">reply</a><br/>%1$s</li>';
                // HTML for comment item with no children (aka "leaf")
                $html[] = sprintf(
                        '%1$s<li id="li_comment_%2$s" data-depth-level="' . $keep_track_depth . '">' .
                        '%1$s%1$s<div><span class="commenter">%3$s</span>&nbsp;' .
                        '<span class="comment_date">%5$s</span></div>' .
                        '%1$s%1$s<div style="margin-top:4px;">%4$s</div>' .
                        $reply_link . '</li>', str_repeat("\t", ( count($parent_stack) + 1 ) * 2 - 1), // %1$s = tabulation
                        $option['value']['comment_id'], //%2$s id
                        $name . ' says', // %3$s = commenter
                        $option['value']['comment_text'], // %4$s = comment
                        ', ' . $option['value']['created_date'] // %5$s = comment created_date
                );
            }
        }
     
        // HTML wrapper for the comment (close)
        $html[] = '</ul>';
        return implode("\r\n", $html);
    }
     
    /*
     * End of helper.php
     */

  9. #9
    Candidat au Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Décembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Décembre 2016
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Aucune idée ? Je fais des recherches de mon côté mais le javascript paraît aussi complexe que le php

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    En l'occurrence, le JS n'a aucune influence sur ton problème : il se contente d'afficher ce que le script PHP lui renvoie.
    Dans ce script-là ce qui fait l'affichage du commentaire est ce morceau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $html[] = sprintf(
                        '%1$s<li id="li_comment_%2$s" data-depth-level="' . $keep_track_depth . '">' .
                        '%1$s%1$s<div><span class="commenter">%3$s</span>&nbsp;' .
                        '<span class="comment_date">%5$s</span></div>' .
                        '%1$s%1$s<div style="margin-top:4px;">%4$s</div>' .
                        $reply_link . '</li>', $tab, // %1$s = tabulation
                        $option['value']['comment_id'], //%2$s id
                        $name . ' says', // %3$s = commenter
                        $option['value']['comment_text'], // %4$s = comment
                        ', ' . $option['value']['created_date'] // %5$s = comment created_date
                );
    Il faut le modifier de façon similaire à ce qu'on a fait pour l'autre affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $html[] = sprintf(
                        '%1$s<li id="li_comment_%2$s" data-depth-level="' . $keep_track_depth . '">' .
                        '%1$s%1$s<div><span class="commenter">%3$s (<a href="%4$s">%4$s</a>) says</span>&nbsp;' .
                        '<span class="comment_date">%6$s</span></div>' .
                        '%1$s%1$s<div style="margin-top:4px;">%5$s</div>' .
                        $reply_link . '</li>', $tab, // %1$s = tabulation
                        $option['value']['comment_id'], //%2$s id
                        $name . ' says', // %3$s = commenter,
                        $option['value']['web_address'], // %4$s = website
                        $option['value']['comment_text'], // %5$s = comment
                        ', ' . $option['value']['created_date'] // %6$s = comment created_date
                );
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  11. #11
    Candidat au Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Décembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Décembre 2016
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Merci ! il y aurait un défaut sur la ligne 70 du code du fichier helper.php apparemment : https://www.romain-gouleau.com/test.php. Voici à quoi il ressemble actuellement :

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    <?php
     
    function format_comments($comments) {
        $html = array();
        $root_id = 0;
        foreach ($comments as $comment)
            $children[$comment['parent_id']][] = $comment;
     
        // loop will be false if the root has no children (i.e., an empty comment!)
        $loop = !empty($children[$root_id]);
     
        // initializing $parent as the root
        $parent = $root_id;
        $parent_stack = array();
     
        // HTML wrapper for the menu (open)
        $html[] = '<ul class="comment">';
     
        while ($loop && ( ( $option = each($children[$parent]) ) || ( $parent > $root_id ) )) {
            if ($option === false) {
                $parent = array_pop($parent_stack);
     
                // HTML for comment item containing childrens (close)
                $html[] = str_repeat("\t", ( count($parent_stack) + 1 ) * 2) . '</ul>';
                $html[] = str_repeat("\t", ( count($parent_stack) + 1 ) * 2 - 1) . '</li>';
            } elseif (!empty($children[$option['value']['comment_id']])) {
                $tab = str_repeat("\t", ( count($parent_stack) + 1 ) * 2 - 1);
                $keep_track_depth = count($parent_stack);
                if ($keep_track_depth <= 3) {
                    $reply_link = '%1$s%1$s<a href="#" class="reply_button" id="%2$s">reply</a><br/>%1$s';
                } else {
                    $reply_link = '';
                }
                $name = strlen($option['value']['created_by']) ? $option['value']['created_by'] : 'anonymous_user';
                //$reply_link = '%1$s%1$s<a href="#" class="reply_button" id="%2$s">reply</a><br/>';
                // HTML for comment item containing childrens (open)
                $html[] = sprintf(
                        '%1$s<li id="li_comment_%2$s" data-depth-level="' . $keep_track_depth . '">' .
                        '%1$s%1$s<div><span class="commenter">%3$s (<a href="%4$s">%4$s</a>) says</span>&nbsp;' .
                        '<span class="comment_date">%6$s</span></div>' .
                        '%1$s%1$s<div style="margin-top:4px;">%5$s</div>' .
                        $reply_link . '</li>', $tab, // %1$s = tabulation
                        $option['value']['comment_id'], //%2$s id
                        $name . ' says', // %3$s = commenter,
                        $option['value']['web_address'], // %4$s = website
                        $option['value']['comment_text'], // %5$s = comment
                        ', ' . $option['value']['created_date'] // %6$s = comment created_date
                );
                //$check_status = "";
                $html[] = $tab . "\t" . '<ul class="comment">';
     
                array_push($parent_stack, $option['value']['parent_id']);
                $parent = $option['value']['comment_id'];
            } else {
                $name = strlen($option['value']['created_by']) ? $option['value']['created_by'] : 'anonymous user';
                $keep_track_depth = count($parent_stack);
                if ($keep_track_depth <= 3) {
                    $reply_link = '%1$s%1$s<a href="#" class="reply_button" id="%2$s">reply</a><br/>%1$s';
                } else {
                    $reply_link = '';
                }
     
                //$reply_link = '%1$s%1$s<a href="#" class="reply_button" id="%2$s">reply</a><br/>%1$s</li>';
                // HTML for comment item with no children (aka "leaf")
                $html[] = sprintf(
                        '%1$s<li id="li_comment_%2$s" data-depth-level="' . $keep_track_depth . '">' .
                        '%1$s%1$s<div><span class="commenter">%3$s (<a href="%4$s">%4$s</a>) says</span>&nbsp;' .
                        '<span class="comment_date">%6$s</span></div>' .
                        '%1$s%1$s<div style="margin-top:4px;">%5$s</div>' .
                        $reply_link . '</li>', $tab, // %1$s = tabulation
                        $option['value']['comment_id'], //%2$s id
                        $name . ' says', // %3$s = commenter,
                        $option['value']['web_address'], // %4$s = website
                        $option['value']['comment_text'], // %5$s = comment
                        ', ' . $option['value']['created_date'] // %6$s = comment created_date
                );
            }
        }
     
        // HTML wrapper for the comment (close)
        $html[] = '</ul>';
        return implode("\r\n", $html);
    }
     
    /*
     * End of helper.php
     */
    Il y aurait aussi un défaut sur la ligne de code 29 du fichier add-comment.php. Voici le message qui s'affiche quand j'essaye de poster un commentaire :

    Nom : Sans titre.jpg
Affichages : 1183
Taille : 20,8 Ko

    Code de add-com

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php
     
    require("config.php");
    require("helper.php");
     
    if (isset($_POST)) {
        $parent_id = ($_POST['reply_id'] == NULL || $_POST['reply_id'] == '') ? 0 : $_POST['reply_id'];
        $email = $_POST['comment_email'];
        $name = $_POST['comment_name'];
        $web = $_POST['comment_web'];
        $comment_text = $_POST['comment_text'];
        $depth_level = $_POST['depth_level'];
        $page_comment = $_POST['current_page'];
       $sql = "INSERT INTO comment(comment_text, parent_id, ip_address, email_address, web_address, created_by, current_page) VALUES('$comment_text', $parent_id, '" . $_SERVER['REMOTE_ADDR'] . "', '$email', '$web', '$name', '$page_comment')";
        $query = dbQuery($sql);
        $inserted_id = dbInsertId();
      $sql = "SELECT * FROM comment WHERE current_page='$page_comment'";
        $results = dbQuery($sql);
        if ($results) {
            while ($row = dbFetchAssoc($results)) {
                if ($depth_level < 3) {
                    $reply_link = "<a href=\"#\" class=\"reply_button\" id=\"{$row['comment_id']}\">Répondre</a><br/>";
                } else {
                    $reply_link = '';
                }
                $depth = $depth_level + 1;
                $name = strlen($row['created_by']) ? $row['created_by'] : 'anonymous user';
               echo "<li id=\"li_comment_{$row['comment_id']}\" data-depth-level=\"{$depth}\">" .
                "<div><span class=\"commenter\">{$name} (<a href="{$row['web_address']}">{$row['web_address']}</a>) says</span>&nbsp;<span class=\"comment_date\">,  {$row['created_date']}</span></div>" .
                "<div style=\"margin-top:4px;\">{$row['comment_text']}</div>" .
                $reply_link . "</li>";
            }
            echo '<div class="success">Votre commentaire a été posté. Merci :)</div>';
        } else {
            echo '<div class="error">Erreur :/</div>';
        }
    } else {
        echo '<div class="error">Veuillez renseigner les champs obligatoires</div>';
    }
     
    /*
     * End of add_comment.php
     */
    Tu penses savoir comment intégrer l'url sur le pseudo de l'utilisateur ? J'ai vu que le lien du site s'affichait entre parenthèse après le pseudo.

    Merci encore de ton aide

  12. #12
    Candidat au Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Décembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Décembre 2016
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par romain69003 Voir le message
    Merci ! il y aurait un défaut sur la ligne 70 du code du fichier helper.php apparemment : https://www.romain-gouleau.com/test.php. Voici à quoi il ressemble actuellement :

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    <?php
     
    function format_comments($comments) {
        $html = array();
        $root_id = 0;
        foreach ($comments as $comment)
            $children[$comment['parent_id']][] = $comment;
     
        // loop will be false if the root has no children (i.e., an empty comment!)
        $loop = !empty($children[$root_id]);
     
        // initializing $parent as the root
        $parent = $root_id;
        $parent_stack = array();
     
        // HTML wrapper for the menu (open)
        $html[] = '<ul class="comment">';
     
        while ($loop && ( ( $option = each($children[$parent]) ) || ( $parent > $root_id ) )) {
            if ($option === false) {
                $parent = array_pop($parent_stack);
     
                // HTML for comment item containing childrens (close)
                $html[] = str_repeat("\t", ( count($parent_stack) + 1 ) * 2) . '</ul>';
                $html[] = str_repeat("\t", ( count($parent_stack) + 1 ) * 2 - 1) . '</li>';
            } elseif (!empty($children[$option['value']['comment_id']])) {
                $tab = str_repeat("\t", ( count($parent_stack) + 1 ) * 2 - 1);
                $keep_track_depth = count($parent_stack);
                if ($keep_track_depth <= 3) {
                    $reply_link = '%1$s%1$s<a href="#" class="reply_button" id="%2$s">reply</a><br/>%1$s';
                } else {
                    $reply_link = '';
                }
                $name = strlen($option['value']['created_by']) ? $option['value']['created_by'] : 'anonymous_user';
                //$reply_link = '%1$s%1$s<a href="#" class="reply_button" id="%2$s">reply</a><br/>';
                // HTML for comment item containing childrens (open)
                $html[] = sprintf(
                        '%1$s<li id="li_comment_%2$s" data-depth-level="' . $keep_track_depth . '">' .
                        '%1$s%1$s<div><span class="commenter">%3$s (<a href="%4$s">%4$s</a>) says</span>&nbsp;' .
                        '<span class="comment_date">%6$s</span></div>' .
                        '%1$s%1$s<div style="margin-top:4px;">%5$s</div>' .
                        $reply_link . '</li>', $tab, // %1$s = tabulation
                        $option['value']['comment_id'], //%2$s id
                        $name . ' says', // %3$s = commenter,
                        $option['value']['web_address'], // %4$s = website
                        $option['value']['comment_text'], // %5$s = comment
                        ', ' . $option['value']['created_date'] // %6$s = comment created_date
                );
                //$check_status = "";
                $html[] = $tab . "\t" . '<ul class="comment">';
     
                array_push($parent_stack, $option['value']['parent_id']);
                $parent = $option['value']['comment_id'];
            } else {
                $name = strlen($option['value']['created_by']) ? $option['value']['created_by'] : 'anonymous user';
                $keep_track_depth = count($parent_stack);
                if ($keep_track_depth <= 3) {
                    $reply_link = '%1$s%1$s<a href="#" class="reply_button" id="%2$s">reply</a><br/>%1$s';
                } else {
                    $reply_link = '';
                }
     
                //$reply_link = '%1$s%1$s<a href="#" class="reply_button" id="%2$s">reply</a><br/>%1$s</li>';
                // HTML for comment item with no children (aka "leaf")
                $html[] = sprintf(
                        '%1$s<li id="li_comment_%2$s" data-depth-level="' . $keep_track_depth . '">' .
                        '%1$s%1$s<div><span class="commenter">%3$s (<a href="%4$s">%4$s</a>) says</span>&nbsp;' .
                        '<span class="comment_date">%6$s</span></div>' .
                        '%1$s%1$s<div style="margin-top:4px;">%5$s</div>' .
                        $reply_link . '</li>', $tab, // %1$s = tabulation
                        $option['value']['comment_id'], //%2$s id
                        $name . ' says', // %3$s = commenter,
                        $option['value']['web_address'], // %4$s = website
                        $option['value']['comment_text'], // %5$s = comment
                        ', ' . $option['value']['created_date'] // %6$s = comment created_date
                );
            }
        }
     
        // HTML wrapper for the comment (close)
        $html[] = '</ul>';
        return implode("\r\n", $html);
    }
     
    /*
     * End of helper.php
     */
    Il y aurait aussi un défaut sur la ligne de code 29 du fichier add-comment.php. Voici le message qui s'affiche quand j'essaye de poster un commentaire :

    Nom : Sans titre.jpg
Affichages : 1183
Taille : 20,8 Ko

    Code de add-com

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php
     
    require("config.php");
    require("helper.php");
     
    if (isset($_POST)) {
        $parent_id = ($_POST['reply_id'] == NULL || $_POST['reply_id'] == '') ? 0 : $_POST['reply_id'];
        $email = $_POST['comment_email'];
        $name = $_POST['comment_name'];
        $web = $_POST['comment_web'];
        $comment_text = $_POST['comment_text'];
        $depth_level = $_POST['depth_level'];
        $page_comment = $_POST['current_page'];
       $sql = "INSERT INTO comment(comment_text, parent_id, ip_address, email_address, web_address, created_by, current_page) VALUES('$comment_text', $parent_id, '" . $_SERVER['REMOTE_ADDR'] . "', '$email', '$web', '$name', '$page_comment')";
        $query = dbQuery($sql);
        $inserted_id = dbInsertId();
      $sql = "SELECT * FROM comment WHERE current_page='$page_comment'";
        $results = dbQuery($sql);
        if ($results) {
            while ($row = dbFetchAssoc($results)) {
                if ($depth_level < 3) {
                    $reply_link = "<a href=\"#\" class=\"reply_button\" id=\"{$row['comment_id']}\">Répondre</a><br/>";
                } else {
                    $reply_link = '';
                }
                $depth = $depth_level + 1;
                $name = strlen($row['created_by']) ? $row['created_by'] : 'anonymous user';
               echo "<li id=\"li_comment_{$row['comment_id']}\" data-depth-level=\"{$depth}\">" .
                "<div><span class=\"commenter\">{$name} (<a href="{$row['web_address']}">{$row['web_address']}</a>) says</span>&nbsp;<span class=\"comment_date\">,  {$row['created_date']}</span></div>" .
                "<div style=\"margin-top:4px;\">{$row['comment_text']}</div>" .
                $reply_link . "</li>";
            }
            echo '<div class="success">Votre commentaire a été posté. Merci :)</div>';
        } else {
            echo '<div class="error">Erreur :/</div>';
        }
    } else {
        echo '<div class="error">Veuillez renseigner les champs obligatoires</div>';
    }
     
    /*
     * End of add_comment.php
     */
    Tu penses savoir comment intégrer l'url sur le pseudo de l'utilisateur ? J'ai vu que le lien du site s'affichait entre parenthèse après le pseudo.

    Merci encore de ton aide
    Un petit up avant 2017 ?

  13. #13
    Candidat au Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Décembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Décembre 2016
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    J'ai réussi à créer un système d'alerte lors d'un post de commentaire. Il ne me manque plus qu'à permettre l'affichage d'un hyperlien vers les sites web sur les pseudos et mon système de commentaire sera au point

  14. #14
    Candidat au Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Décembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Décembre 2016
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Toujours pas de solution pour intégrer l'url sur le nom de l'utilisateur ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/03/2012, 11h55
  2. Afficher les commentaire d'une publication facebook sur son site
    Par bannik dans le forum APIs Réseaux sociaux
    Réponses: 0
    Dernier message: 27/07/2011, 10h45
  3. Afficher les tables sur une page php
    Par Maxime50 dans le forum Langage
    Réponses: 15
    Dernier message: 08/09/2009, 16h01
  4. Afficher un thème sur une autre page
    Par Chabanus dans le forum Langage
    Réponses: 5
    Dernier message: 21/11/2008, 15h58
  5. Réponses: 2
    Dernier message: 20/08/2007, 07h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo