Intereting Posts
Инструкция PDO подготовить и сопоставить в логическом режиме Выберите данные таблицы LIKE данных другой таблицы Проверка Laravel, если запись существует WP_Query () не возвращает все записи Используйте Require_once () для правильного включения переменных подключения базы данных Почему символы escape добавляются к значению скрытого ввода Как использовать деревья выражений в PHP? как считать похожие слова в столбце # 1193 – Неизвестная системная переменная 'lc_messages' при попытке войти в phpmyadmin Где искать исключения в приложении PHP MVC? Неустранимая ошибка: нельзя использовать объект типа mysqli_result как массив в /home/william/public_html/forums/index.php в строке 228 Путаница между bindValue () и bindParam ()? PHP TCPDF ERROR: невозможно создать выходной файл, папка существует и имеет правильные разрешения TCPDF: когда-нибудь добавьте новую страницу, а затем переполнение содержимого следующей страницы Создать zip с PHP, добавляющим файлы с url

Уникальное имя радио в php while loop

Ну, я следую Php-коду, который генерирует таблицу с переключателем, чтобы пользователь мог выбрать только один переключатель в КАЖДОЙ строке. Но для выбора только одного переключателя в каждой строке это должно быть уникальное имя в КАЖДОЙ строке, правильно? Но я не могу понять, как установить уникальное имя в цикле while. Можете ли вы, ребята, дать мне какие-либо идеи или решения?

Код Php:

$action = htmlspecialchars($_SERVER['PHP_SELF'])."?class=$class_from"; echo "<form method='post' action='$action' name='attendence'/>"; echo "<table width='100%' cellpadding='0' cellspacing='0' border='0'>"; echo "<tr>"; echo "<td class='tdhead' valign='top' width='200'><b>Student Name</b></td>"; echo "<td class='tdhead' valign='top' width='250'><b>Roll No</b> </td>"; echo "<td class='tdhead' valign='top' width='250'><b>Class Name</b> </td>"; echo "<td class='tdhead' valign='top' width='200'><b>Present / Not present</b> </td>"; echo "<td class='tdhead' valign='top' width='200'>Check All <input type= 'checkbox' onclick='checkAll(this)' /></td>"; echo "</tr>"; while($res2 = mysql_fetch_array($sql2)) { $sname = inputvalid($res2['sname']); $roll = inputvalid($res2['roll']); $class = inputvalid($res2['class']); echo "<tr>"; echo "<td class='tdhead2' valign='top'>$sname</td>"; echo "<td class='tdhead2' valign='top'>$roll</td>"; echo "<td class='tdhead2' valign='top'>$class</td>"; echo "<td class='tdhead2' valign='top'> <input type='radio' name='ch[]' value='1' />&nbsp;<input type='radio' name='ch[]' value='1' /> </td>"; echo "<td class='tdhead2' valign='top'>&nbsp;</td>"; echo "</tr>"; } echo "<tr>"; echo "<td class='tdhead2'>&nbsp;</td>"; echo "<td class='tdhead2'>&nbsp;</td>"; echo "<td class='tdhead2'>&nbsp;</td>"; echo "<td class='tdhead2'>&nbsp;</td>"; echo "<td class='tdhead2'><input type='submit' value='Record' name='Submit' class='submit' /></td>"; echo "</tr>"; echo "</table>"; echo "</form>"; 

Спасибо за вашу помощь.

Обновить:

 echo "<td class='tdhead2' valign='top'>"; echo '<input type="radio" name="ch'.$counter++.'[]" value="1">'; echo "&nbsp;"; echo '<input type="radio" name="ch'.$counter.'[]" value="0">'; echo "</td>"; 

Вместо того чтобы сделать имя просто ch[] вы можете сделать имя ch[SOME_UNIQUE_VALUE] для каждой строки. Обычно используется код типа id. Возможно, $roll если это уникально для каждого ученика. Это также позволит вам узнать, к какому идентификатору относится радиокнопка. В форме submit вы можете foreach($_POST['ch'] as $id=>$value) и получить id.

Редактировать:

Пример кода:

 //start the counter variable $counter = 1; while($res2 = mysql_fetch_array($sql2)) { $sname = inputvalid($res2['sname']); $roll = inputvalid($res2['roll']); $class = inputvalid($res2['class']); echo "<tr>"; echo "<td class='tdhead2' valign='top'>$sname</td>"; echo "<td class='tdhead2' valign='top'>$roll</td>"; echo "<td class='tdhead2' valign='top'>$class</td>"; echo "<td class='tdhead2' valign='top'>"; //echo each radio with the counter for this row echo "<input type='radio' name='ch_{$counter}[]' value='0' />&nbsp;"; echo "<input type='radio' name='ch_{$counter}[]' value='1' />"; echo "</td>"; echo "<td class='tdhead2' valign='top'>&nbsp;</td>"; echo "</tr>"; //add one to the counter $counter++; } 

Обратите внимание, что, если вы не сделаете так, как я предложил выше, вы не сможете узнать, к какому ученику относится каждая радиогруппа. Вы можете предположить, что переключатели в строке группы 1 принадлежат ученику в строке 1, но вы, возможно, не знаете, какой студент находится в строке 1. Именно поэтому я предлагаю вам поместить уникальный идентификатор, который идет с каждым учеником с каждым переключателем вместо счетчика.

вы можете установить счетчик переменных:

 $counter = 1; while($res2 = mysql_fetch_array($sql2)){ echo '<input type="radio" name="ch'.$counter++.'[]" value="'.$counter++.'">'; } 

Вы можете сохранить счетчик $count и увеличить его после каждой итерации. Или, если у вас есть уникальный идентификатор из базы данных на строку (например, primary_key), вы можете использовать это вместо этого. $id = $res['id']

Затем сравните это значение с name=ch".$id."...

вы должны использовать имя ученика как уникальный массив и поместить это значение в name = "", и оно будет автоматически увеличиваться в соответствии с именем, и вы можете выбрать только одну опцию в одной строке. попробуй это :

 <input type='radio' name='<?php echo $res2['sname'];?>' value='0' />&nbsp;"; <input type='radio' name='<?php echo $res2['sname'];?>' value='1' />"; 

этот solutio будет работать. Потому что это работает для меня в системе посещаемости.