Ну, я следую 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' /> <input type='radio' name='ch[]' value='1' /> </td>"; echo "<td class='tdhead2' valign='top'> </td>"; echo "</tr>"; } echo "<tr>"; echo "<td class='tdhead2'> </td>"; echo "<td class='tdhead2'> </td>"; echo "<td class='tdhead2'> </td>"; echo "<td class='tdhead2'> </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 " "; 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' /> "; echo "<input type='radio' name='ch_{$counter}[]' value='1' />"; echo "</td>"; echo "<td class='tdhead2' valign='top'> </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' /> "; <input type='radio' name='<?php echo $res2['sname'];?>' value='1' />";
этот solutio будет работать. Потому что это работает для меня в системе посещаемости.