KL
Konstantin LazarevСәуір 4, 2017, 7: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
  • Сәуір 4, 2017, 7:50 Т.Ж.

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

    Evgenii Legotckoi
    • Сәуір 4, 2017, 8: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
      • Сәуір 4, 2017, 8:22 Т.Ж.

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

        Evgenii Legotckoi
        • Сәуір 4, 2017, 8: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
          • Сәуір 4, 2017, 8:38 Т.Ж.

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

            Evgenii Legotckoi
            • Сәуір 4, 2017, 9 Т.Ж.

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

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

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

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

              KL
              • Сәуір 4, 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
                • Сәуір 4, 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
                  • Сәуір 4, 2017, 10:26 Т.Ж.

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

                    Пікірлер

                    Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
                    Кіріңіз немесе Тіркеліңіз
                    Г

                    C++ - Тест 001. Первая программа и типы данных

                    • Нәтиже:66ұпай,
                    • Бағалау ұпайлары-1
                    t

                    C++ - Тест 001. Первая программа и типы данных

                    • Нәтиже:33ұпай,
                    • Бағалау ұпайлары-10
                    t

                    Qt - Тест 001. Сигналы и слоты

                    • Нәтиже:52ұпай,
                    • Бағалау ұпайлары-4
                    Соңғы пікірлер
                    G
                    GoattRockҚыр. 3, 2024, 1:50 Т.Қ.
                    Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
                    d
                    dblas5Шілде 5, 2024, 11:02 Т.Ж.
                    QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                    k
                    kmssrАқп. 8, 2024, 6:43 Т.Қ.
                    Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                    АК
                    Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
                    Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                    Енді форумда талқылаңыз
                    Evgenii Legotckoi
                    Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
                    добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                    F
                    FynjyШілде 22, 2024, 4:15 Т.Ж.
                    при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
                    BlinCT
                    BlinCTМаусым 25, 2024, 1 Т.Ж.
                    Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
                    BlinCT
                    BlinCTМамыр 5, 2024, 5:46 Т.Ж.
                    Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
                    Evgenii Legotckoi
                    Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
                    Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

                    Бізді әлеуметтік желілерде бақылаңыз