Получить идентификатор выбранного флажка

0

В настоящее время я работаю над приложением php и MySQL. В моем приложении я загружаю таблицу из MySQL, и я показываю ее на своем веб-сайте. Таблица состоит из столбцов (ID, Name, SurName). Когда я загружаю таблицу, я также создаю другой столбец, который состоит из разных флажков. Мой исходный код для создания таблицы следующий:

function user_clients_table() {

   $con = mysql_connect("localhost","root",'');
   if(!$con){

   die("Cannot Connect" . mysql_error());

   }
    mysql_select_db("client_app",$con);
    $get_user_clients = "SELECT 'ID','Name','SurName' FROM 'clients'  ";
    $clients = mysql_query($get_user_clients,$con);

   echo "<table  border=2>
   <tr>   
   <th>Client</th>
   <th>Name</th>
   <th>SurName</th>
   <th>Receive Message</th>
   </tr>";
   while($record = mysql_fetch_array($clients)){
    echo "<form action=pushnotification.php method=post>";
    echo "<tr>";
    echo "<td>".$record['ID']." </td>";
    echo "<td>".$record['Name']." </td>";
    echo "<td>".$record['SurName']." </td>";
    echo "<td>"."<input type=checkbox name= checkbox[".$record['ID']."] "."</td>";
    echo "</tr>";
    echo "</form>";
     }

echo "</table>";     
mysql_close();

}

В таблице выглядит Lke, что на Сайте:

Изображение 174551

То, что я хочу сделать, это эхо-идентификатор клиента из первого столбца таблицы, если флажок clienct isset после нажатия кнопки отправки на веб-сайте. Например, если верхний флажок isset, я хочу эхо "1", если установлен флажок в третьей строке, я хочу эхо "3".

Я сделал это до сих пор:

if (isset($_POST['checkbox']))
{
    foreach ($_POST['checkbox'] as $key => $value)
    {
        $receivemsg = $key;
    }

    echo '<span style="color:#AFA;text-align:center;">'.$receivemsg.'</span>';

}

Но он работает только для первого флажка, другие не работают. Может кто-нибудь, пожалуйста, помогите мне сделать это? Спасибо С уважением

  • 1
    ПРЕДУПРЕЖДЕНИЕ. Функции mysql_ устарели и были удалены с php 7.0. Ходят слухи, что как mysql_ расширение mysql_ будет mysql_ , есть шанс 1 к 5, что вы вызовете Вельзебосса. Защитите окружающих, переключившись на pdo или myqsli
  • 0
    В цикле foreach вы устанавливаете $receivemsg = $key; а затем после цикла вы $receivemsg последний элемент $key (который теперь является $receivemsg ) внутри некоторых тегов <span> . Это то, что вы хотите несколько? Если это так, вам нужно переместить этот echo вызов в пределах вашего foreach
Показать ещё 3 комментария
Теги:

1 ответ

1

(В HTML вы помещаете атрибуты в "", например, type = "checkbox". Используйте '' для своих тегов, чтобы вы могли использовать атрибуты "" для атрибутов. Также вам не хватает "/>" в конце вашего входной тег.)

С isset вы фактически проверяете только первый. Удалите его с помощью foreach, он вам не понадобится, поскольку он проходит через отмеченные флажки (если вы отправляете их из HTML в виде массива). Если ни один из этих флажков не выбран, цикл будет выполняться в 0 раз.

foreach ($_POST['checkbox'] as $key => $value)
    {
        $receivemsg = $key;
    }

Если вы напишете его таким образом, он сохранит только последний установленный флажок. Может быть, вы хотите

foreach ($_POST['checkbox'] as $key => $value)
        {
            $receivemsg[] = $key;
        }

И, конечно, инъекции, mysqli и другие, о чем упоминалось в комментариях.

(Лично мне кажется странным, что если флажки отправляются как массив, isset больше не работает с ними, или, если быть более точным, он работает на них как на элементы массива.)

Как сказал @Johannes, вы также объявляете форму для каждого флажка.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню