Задать вопрос
Ответы пользователя по тегу PHP
  • Как после редактирования в модальном окне сохранить данные в БД?

    valera_91
    @valera_91 Автор вопроса
    Само модальное окно с формой добавления комментария и редактирования его в модальном окне
    <h2>Comments</h2>
                    <div id="comments-container">
                        <?php while ($comment = $comment_result->fetch_assoc()) { ?>
                            <div class="card mb-2">
                                <div class="card-body">
                                    <p class="card-text"><?= $comment['comment_text'] ?></p>
                                    <button class="btn btn-primary edit-comment" data-comment-id="<?= $comment['id'] ?>" data-toggle="modal" data-target="#edit-comment-modal">Edit</button>
                                    <button class="btn btn-danger delete-comment" data-comment-id="<?= $comment['id'] ?>">Delete</button>
                                </div>
                            </div>
                        <?php } ?>
                    </div>
    
                    <h2>Add Comment</h2>
                    <form id="comment-form">
                        <div class="form-group">
                            <textarea class="form-control" name="comment_text" rows="4" placeholder="Enter your comment"></textarea>
                        </div>
                        <button type="submit" class="btn btn-success">Add Comment</button>
                    </form>
      <div class="modal" id="edit-comment-modal">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h4 class="modal-title">Edit Comment</h4>
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                </div>
                <div class="modal-body">
                    <textarea class="form-control" id="edited-comment-text"></textarea>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-success" id="save-edited-comment">Save</button>
                    <button type="button" class="btn btn-secondary" id="cancel-edit-comment" data-dismiss="modal">Cancel</button>
                </div>
            </div>
        </div>
    </div>


    $(document).ready(function() {
        // AJAX для добавления комментария
        $("#comment-form").submit(function(e) {
            e.preventDefault();
            var commentText = $("textarea[name='comment_text']").val();
    
            $.ajax({
                type: "POST",
                url: "add_comment.php",
                data: {
                    company_id: <?= $company_id ?>,
                    user_id: <?= $user_id ?>,
                    comment_text: commentText
                },
                success: function(response) {
                    // Обновление контейнера с комментариями после успешного добавления
                    $("#comments-container").append("<div class='card mb-2'><div class='card-body'><p class='card-text'>" + commentText + "</p><button class='btn btn-primary edit-comment' data-comment-id='" + response + "' data-toggle='modal' data-target='#edit-comment-modal'>Edit</button><button class='btn btn-danger delete-comment' data-comment-id='" + response + "'>Delete</button></div></div>");
                    $("textarea[name='comment_text']").val(""); // Очистка текстового поля
                },
                error: function(error) {
                    console.log(error);
                }
            });
        });
    
        var commentId;  // Переменная для хранения ID комментария
    
        // Обработчик для открытия модального окна редактирования комментария
        $(document).on("click", ".edit-comment", function() {
            commentId = $(this).data("comment-id");  // Сохраняем ID комментария
            var commentText = $(this).parent().find(".card-text").text();
    
            // Заполнение модального окна текущим текстом комментария
            $("#edited-comment-text").val(commentText);
        });
    // AJAX для редактирования комментария
    $("#save-edited-comment").click(function() {
        var editedCommentText = $("#edited-comment-text").val();
    
        $.ajax({
            type: "POST",
            url: "edit_comment.php",
            data: {
                comment_id: commentId,
                edited_comment_text: editedCommentText
            },
            success: function(response) {
                if (response.trim().toLowerCase() === "success") {
                    // Обновление текста комментария на странице
                    $("button[data-comment-id='" + commentId + "']").parent().find(".card-text").text(editedCommentText);
    
                    // Закрытие модального окна
                    $("#edit-comment-modal").modal("hide");
                } else {
                    console.error("Error editing comment:", response); // Вывод ошибки в консоль
                    alert("Error editing comment. Check console for details.");
                }
            },
            error: function(error) {
                console.log(error);
            }
        });
    });


    Код файла редактирования
    <?php
    session_start();
    require_once 'config.php';
    
    if (!isset($_SESSION['user_id'])) {
        exit("User not logged in.");
    }
    
    $user_id = $_SESSION['user_id'];
    
    if ($_SERVER["REQUEST_METHOD"] === "POST") {
        // Получаем данные из запроса
        $comment_id = $_POST["comment_id"];
        $edited_comment_text = $_POST["edited_comment_text"];
    
        // Проверяем, принадлежит ли комментарий пользователю
        $check_query = "SELECT * FROM comments WHERE id = $comment_id AND user_id = $user_id";
        $check_result = $conn->query($check_query);
    
        if ($check_result->num_rows > 0) {
            // Обновляем текст комментария
            $update_query = "UPDATE comments SET comment_text = '$edited_comment_text' WHERE id = $comment_id";
            if ($conn->query($update_query) === TRUE) {
                echo "success";
            } else {
                echo "Error updating comment: " . $conn->error;
            }
        } else {
            echo "Invalid comment ID or unauthorized access.";
        }
    } else {
        echo "Invalid request method.";
    }
    
    $conn->close();
    ?>

    Добавление комментария
    <?php
    require_once 'config.php';
    
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $company_id = $_POST['company_id'];
        $user_id = $_POST['user_id'];
        $comment_text = $conn->real_escape_string($_POST['comment_text']);
    
        $query = "INSERT INTO comments (company_id, user_id, comment_text) VALUES ($company_id, $user_id, '$comment_text')";
        
        if ($conn->query($query) === TRUE) {
            echo "Comment added successfully";
        } else {
            echo "Error adding comment: " . $conn->error;
        }
    } else {
        echo "Invalid request";
    }
    
    $conn->close();
    ?>

    Может кому-то понадобится. Идет добавление без обновления страницы, редактирования в модальном окне.
    Ответ написан
    Комментировать
  • Как вывести строки с id_comp равный id текущей категории?

    valera_91
    @valera_91 Автор вопроса
    Разобрался, если кому-то будет нужно

    $sql = mysqli_query($link, "SELECT ID, comment, id_comp, reg_date FROM tasks WHERE id_comp = '" . $myid . "'");
    Ответ написан