KL
Konstantin Lazarev04 квітня 2017 р. 07:49

Как отследить выбранный checkbox

<?php
mysqli_set_charset($con, "utf8");
$text=array();
$name=array();
$date=array();
$email=array();
$id=array();

$i=0;
if(mysqli_connect_errno())
{
    echo "Failed".mysqli_connect_error();
}
{
  $query="SELECT text, name, email, date_create, blog_id FROM tbl_comments WHERE moderate=0";
     $result=mysqli_query($con, $query);
     
     $count=mysqli_num_rows($result); // Данная функция определяет количество записей выведенных из таблици
     if($count!=0)
     {
         while($row=mysqli_fetch_array($result))
         {
             $text[$i]=$row['text'];
             $name[$i]=$row['name'];
             $email[$i]=$row['email'];
             $date[$i]=$row['date_create'];
             $id[$i]=$row['blog_id'];
             $i++;
         }   
     }
}
 ?>
 <html>
    <head>
        <title>Модерация комментариев</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">   
    </head>
    <body style="width: 1340px; margin: 0px auto; background: #8fa8a8; font-family: arial;">       
            <div style="width:1340px; background: grey; height:50px;"></div> 
            <?php
            if(count($text)==0)
            {
                echo"<div style='background:white;  line-height: 300px;
 font-size: 40px; width: 1340px; height: 550px; text-align:center;'>Нет сообщений для модерации</div>";
            }
            else
            {
                 echo "<div style='background: blue; width: 1340px; height:50px; border-bottom: 1px solid black;' >
                <div style='background: red; width: 210px; float:left; height: 50px; font-size: 20px; line-height:40px; text-align:center;'>Название статьи</div>
                <div style='background: yellow; width: 110px; float:left; height: 50px; font-size: 20px; line-height:40px; text-align:center;'>Дата</div>
                <div style='background: blue; width: 180px; float:left; height: 50px; font-size: 20px; line-height:40px; text-align:center;'>Email</div>
                <div style='background: yellow; width: 210px; float:left; height: 50px; font-size: 20px; line-height:40px; text-align:center;'>Имя</div>
                <div style='background: orange; width: 510px; float:left; height: 50px; font-size: 20px; line-height:40px; text-align:center;'>Текст сообщения</div>
                 <div style='background: green; width: 120px; float:left; height: 50px; font-size: 20px; line-height:40px; text-align:center;'>Активация</div>
                </div>"; 
                
                for($x=0; $x<count($text); $x++)
                {
                    echo "<div style='width: 1340px; height: 50px; background: white; border-bottom: 1px solid black;'>
                    <div style='background: white; width: 209px; border-right: 1px solid black; float:left; height: 50px; font-size: 12px; line-height:40px; text-align:center;'>$id[$x]</div>
    <div style='background: white; width: 109px; font-size: 10px; border-right: 1px solid black; float:left; height: 50px; line-height:40px; text-align:center;'>$date[$x]</div> 
    <div style='background: white; width: 179px; float:left; border-right: 1px solid black; height: 50px; font-size: 12px; line-height:40px; text-align:center;'>$email[$x]</div>
    <div style='background: white; width: 209px; float:left; height: 50px; font-size: 12px; border-right: 1px solid black; line-height:40px; text-align:center;'>$name[$x]</div>                
     <div style='background: white; width: 509px; float:left; height: 50px; font-size: 12px; border-right: 1px solid black; line-height:40px; text-align:center;'>$text[$x]</div>                
     <div style='background: white; width: 120px; float:left; height: 50px;  line-height:40px; text-align:center;'> <input type='checkbox' name='Tabs' id='Button' style='margin-top:20px;'></div>               
                   
                    </div>";
                }
                echo "<div style='background: white; width: 1340px; height:50px;'>
      <button  type='button' style='margin-top: 10px; width:100px; height: 30px; border: 1px solid blue; margin-left:1230px;'>Активировать</button>            
                </div>";
            }
            ?>
    <div style="width:1340px; background: grey; height:50px;"></div> 
        
    </body>
    
</html>



    
Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

9
KL
  • 04 квітня 2017 р. 07:50

Как отследить какой checkbox был нажат.

    Evgenii Legotckoi
    • 04 квітня 2017 р. 08:16

    Можно к примеру добавить атрибут data-type="checkbox" и навешать на все объекты с этим атрибутом обработчик.

    То есть в html это будет выглядеть так:

    <input type='checkbox' data-type="checkbox" name='Tabs' id='Button' style='margin-top:20px;'>

    А в подключаемом javascript файле обработчик и подключение обработчика будет выглядеть так:

    function checkbox_clicked()
    {
        console.log($(this)); 
        // $(this) будет объектом, который будет являться чекбоксом, по которому кликнули
    
        // А здесь уже реализуете логику получения данных с чекбокса
    
        return false;
    }
    
    // Это автоматически подключит обработчик при загрузке javascript файла
    $(function() {
        $('[data-type="checkbox"]').click(checkbox_clicked);
    });

    Обработчик будет подключён ко всем чекбоксам, которые содержат данный атрибут data-type="checkbox" . Естественно, здесь используется jQuery

      KL
      • 04 квітня 2017 р. 08:22

      С помощью php можно что то сделать? Например, динамически присвоить id к checkbox и через метод post?

        Evgenii Legotckoi
        • 04 квітня 2017 р. 08:32

        Да, конечно. У вас же там в цикле создаются чекбоксы. Я так понял, что каждый чекбокс отвечает за конкретный комментарий, который вы модерируете. Можно либо присваивать id, который будет равен Primary Key комментария в базе данных. Либо также добавить атрибут data-id="Primary Key" комментария в базе данных. То есть в PHP помечаете это всё дело Id-шниками. Навешиваете обработчик, как я показал выше в javascript. А когда кликаете по чекбоксам, то кидаете POST AJAX Запрос в сторону сервера. Я сейчас так всякие лайки, дислайки и добавление в избранное переделываю на сайте. Вполне работоспособно.

        function checkbox_clicked()
        {
            var checkbox = $(this);
        
            $.ajax({
                url : "/url/to/moderate/comment/",
                type : 'POST',
                data : { 'obj' : checkbox.data('id') }, // Если задано в виде атрибута data-id="125" - 125 - это Primary Key комментария.
        
                success : function (json) {
                // ToDO comething
                }
            });
        
            return false;
        }
          KL
          • 04 квітня 2017 р. 08:38

          я javascript не знаю. Могу работать только с php. Как будет выглядеть функция обработки нажатия кнопки и проверки checkbox.

            Evgenii Legotckoi
            • 04 квітня 2017 р. 09:00

            Вот тут такой казус. Я как раз с PHP знаком ровно настолько, насколько необходимо было, чтобы поправить вёрстку и заполнение страниц для Wordpress.

            Если принимать POST запрос, то там будут передаваться параметры с id каждого элемента формы и соответствующий статус. В случае с чекбоксом это должно быть true или false (ну или checked, unchecked)

            Вот их и нужно растаскивать. Но без понятия, как правильно принимать PHP Post запрос, может если кто-то кто работает с PHP заглянет в тему, то подскажут.

            Что касается javascript - то учите его. Если бэкенд может быть разный, то фронтенд - это в основном javascript.

              KL
              • 04 квітня 2017 р. 10:22
               echo"<form method='post' action='checkboxForm.php'>";
                              for($x=0; $x<count($text); $x++)
                              {
                                   $article=array();
                                   $i=0;
                                   $query="SELECT name FROM tbl_press WHERE id=$id[$x]";
                   $result=mysqli_query($con, $query);
                   $count=mysqli_num_rows($result); // Данная функция определяет количество записей выведенных из таблици
                   if($count!=0)
                   {
                       while($row=mysqli_fetch_array($result))
                       {
                           $article[$i]=$row['name'];
                           $i++;
                       }   
                   }
                                  
                                  echo "
                                  <div style='width: 1340px; height: 50px; background: white; border-bottom: 1px solid black;'>
                                  <div style='background: white; width: 209px; border-right: 1px solid black; float:left; height: 50px; font-size: 12px; line-height:40px; text-align:center;'>
                                  
                                  $article[0]</div>
                  <div style='background: white; width: 109px; font-size: 10px; border-right: 1px solid black; float:left; height: 50px; line-height:40px; text-align:center;'>$date[$x]</div> 
                  <div style='background: white; width: 179px; float:left; border-right: 1px solid black; height: 50px; font-size: 12px; line-height:40px; text-align:center;'>$email[$x]</div>
                  <div style='background: white; width: 209px; float:left; height: 50px; font-size: 12px; border-right: 1px solid black; line-height:40px; text-align:center;'>$name[$x]</div>                
                   <div style='background: white; width: 509px; float:left; height: 50px; font-size: 12px; border-right: 1px solid black; line-height:40px; text-align:center;'>$text[$x]</div> 
                   <div style='background: white; width: 120px; float:left; height: 50px;  line-height:40px; text-align:center;'> <input type='checkbox' name='checkboxArray[]' value='$idmain[$x]' style='margin-top:20px;'></div>               
                                 
                                  </div>";
                              }
                              echo "<div style='background: white; width: 1340px; height:50px;'>
                    <button type='submit' name='button' style='margin-top: 10px; width:100px; height: 30px; border: 1px solid blue; margin-left:1230px;'>Активировать</button>            
                             </div>";
                          }
                          echo "</form>";
              Форма отсылает данные в файл checkboxForm.php
                KL
                • 04 квітня 2017 р. 10:25
                • Відповідь була позначена як рішення.
                <?php  
                   $aDoor = $_POST['checkboxArray'];
                  if(empty($aDoor))
                  {
                    echo '<meta http-equiv="refresh" content="0; url=http://www.example.com/moderate.php">';
                  }
                  else
                  {
                    $N = count($aDoor);
                    for($i=0; $i<$N; $i++)
                    {
                        $con=mysqli_connect("localhost", "*******", "*******", "******");
                        $query="UPDATE tbl_comments SET moderate=1 WHERE id=$aDoor[$i]";
                     $result=mysqli_query($con, $query);
                    }
                     echo '<meta http-equiv="refresh" content="0; url=http://example.com">';
                  }
                ?>
                Файл обработки формы, с редиректом обратно на страницу.
                  KL
                  • 04 квітня 2017 р. 10:26

                  Удалите ссылки на сайты пожалуйста)

                    Коментарі

                    Only authorized users can post comments.
                    Please, Log in or Sign up
                    AD

                    C++ - Тест 004. Указатели, Массивы и Циклы

                    • Результат:50бали,
                    • Рейтинг балів-4
                    m
                    • molni99
                    • 26 жовтня 2024 р. 01:37

                    C++ - Тест 004. Указатели, Массивы и Циклы

                    • Результат:80бали,
                    • Рейтинг балів4
                    m
                    • molni99
                    • 26 жовтня 2024 р. 01:29

                    C++ - Тест 004. Указатели, Массивы и Циклы

                    • Результат:20бали,
                    • Рейтинг балів-10
                    Останні коментарі
                    ИМ
                    Игорь Максимов22 листопада 2024 р. 11:51
                    Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                    Evgenii Legotckoi
                    Evgenii Legotckoi31 жовтня 2024 р. 14:37
                    Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                    A
                    ALO1ZE19 жовтня 2024 р. 08:19
                    Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                    ИМ
                    Игорь Максимов05 жовтня 2024 р. 07:51
                    Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                    d
                    dblas505 липня 2024 р. 11:02
                    QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                    Тепер обговоріть на форумі
                    Evgenii Legotckoi
                    Evgenii Legotckoi24 червня 2024 р. 15:11
                    добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                    t
                    tonypeachey115 листопада 2024 р. 06:04
                    google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
                    NSProject
                    NSProject04 червня 2022 р. 03:49
                    Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
                    9
                    9Anonim25 жовтня 2024 р. 09:10
                    Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

                    Слідкуйте за нами в соціальних мережах