• Как после редактирования в модальном окне сохранить данные в БД?

    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 . "'");
    Ответ написан
  • Как исправить зависание arduino мега?

    valera_91
    @valera_91 Автор вопроса
    Решение найдено. Проблема была в том что пропадало соединение с интернетом.
    Ответ написан
    Комментировать
  • Как отобразить выпадающий список меню?

    В категории стоит галочка показывать в главном меню?
    Ответ написан
  • Как настроить печать этикеток в 1с на А4?

    valera_91
    @valera_91 Автор вопроса
    Вопрос решен. Необходимо убирать автоматическую ширину столбца и ставит фиксированную.
    Ответ написан
    Комментировать
  • Почему фото товара не открывается в попап окне?

    valera_91
    @valera_91 Автор вопроса
    Может кому-то нужно будет. Переписал скрипт
    <script type="text/javascript">
    $(document).ready(function() {
      $('.thumbnails a').magnificPopup((
      
        items: [
        <?php if ($images) { ?>
        <?php if ($thumb)  { ?> {src: '<?php echo $popup; ?>'},<?php } ?>
        <?php foreach ($images as $image) { ?> {src: '<?php echo $image['popup']; ?>'},<?php } ?>
    <?php } else { ?>
      <?php if ($thumb) { ?> {src: '<?php echo $popup; ?>'} <?php } ?>
    <?php } ?>
    ],
    
    type: 'image',
    gallery: {
      enable:true
    }
    
    })
    });
    </script>


    На вот этот

    <script>
    $(document).ready(function() {
        $('.image').magnificPopup({
            type:'image',
            delegate: 'a',
            gallery: {
                enabled:true
            }
        });
    });
    </script>
    Ответ написан
    Комментировать
  • Как на сервере запустить проект в домен?

    Что значит отображался? - Работал на сервере при заходе на домен?
    Ты по ходу хочешь совместить несовместимое. Перенеси с локалки скрипт на сервер и радуйся.
    Ответ написан
  • Как вернуть картинки обратно, после переноса сайта на другой хостинг?

    Смотрю получилось картинки вернуть или нет?
    Как по мне лучше при переносе использовать резервное копирование от хостинга.
    Попробуйте в настройках пересохранить ссылки.
    Ответ написан
    1 комментарий
  • Легка ли в управлении панель BrainyCP?

    Использую уже год на 2-х серверах. Глюки есть везде. Если установить нормально и меньше лезть куда не следует система работает очень стабильно. Тех поддержка всегда отвечает и поможет. Если почитать форум можно найти много полезного.
    Ответ написан
    Комментировать
  • У кого была проблема с index.php?route=checkout/oct_fastorder? Кто может помочь?

    Напишите подробнее задачу или дайте ссылку на сайт. Какой модуль используете?
    Если вы хотите заменить корзину на быстрый заказ, то это делается проще.
    Ответ написан
    Комментировать
  • Как привязать метки к конкретным рубрикам?

    valera_91
    @valera_91 Автор вопроса
    Реализовал немного по другому. Использовал произвольные поля. Объем работы не большой, поэтому реализовал дополнительно фильтр по этим полям без плагинов.

    Думал насчёт реализации своей формы, но не разобрался как это делать...
    Ответ написан
    Комментировать
  • Как происвоить класс только для ссылки меню первого уровня?

    valera_91
    @valera_91 Автор вопроса
    Смог решить только так. У пункта меню у которого есть подпункты присваивается класс
    add_filter( 'nav_menu_link_attributes', 'add_class_to_items_link', 10, 3 );
    
    function add_class_to_items_link( $atts, $item, $args ) {
      // check if the item has children
      $hasChildren = (in_array('menu-item-has-children', $item->classes));
      if ($hasChildren) {
        // add the desired attributes:
        $atts['class'] = 'dropdown-toggle';
        $atts['data-toggle'] = 'dropdown';
        $atts['data-target'] = '#';
      }
      return $atts;
    }
    Ответ написан
    Комментировать
  • Как сделать сперва загрузку css, js на wordpress?

    valera_91
    @valera_91 Автор вопроса
    Всех благодарю за помощь, очень помогли. Воспользовался вот этой инструкцией.
    Ответ написан
    Комментировать