2013-03-20 5 views
1

У меня есть форма, где я могу подписаться и отписаться пользователей на бюллетень, то «форма» сама по себе выглядит следующим образом:Динамически создаваемые радио кнопки вопрос

enter image description here

Флажки создаются динамически с помощью этого кода:

<?php 
$i = 0; 
while($objResult1 = mysql_fetch_array($objQuery1)) 
{ 
$i++; 
?> 
<tr> 
    <td><div align="center"><?=$objResult1["ID"];?><input type="hidden" name="mailid[]" value="<?=$objResult1["ID"];?>"> </div></td> 
    <td><div align="center"><?=$objResult1["Titel"];?> </div></td> 
    <td><div align="center"><input type="checkbox" name="sub[]" value="10"> </div></td> 
    <td><div align="center"><input type="checkbox" name="sub[]" value="90"> </div></td> 
</tr> 
<?php 
} 
?> 

Я использую значение в другом сценарии, где я вставить их в базу данных, как это:

foreach($_POST['sub'] as $i=>$s){ 
$sql = mysql_query("INSERT INTO Subscriptions (Klant_ID, Mail_ID, Status, Datum) VALUES ('".$Klant_ID."', '".$_POST['mailid'][$i]."', '".$s."', '".$Datum."')") or die(mysql_error()); 
} 

Проблема состоит в том, что можно выбрать оба флажка в каждой строке (в основном я могу выбрать все флажки). Когда я устанавливаю тип ввода на «радио», я могу выбрать только 1 из 6 переключателей. Есть ли способ заставить это работать, поэтому я могу выбрать 1 радиокнопку в каждой строке? Если у вас есть какие-либо вопросы или вам нужна дополнительная информация, просто спросите в комментариях. Thnx заранее!

ПРИМЕЧАНИЕ: Не всегда 3 строки, строки динамически создаются в зависимости от количества строк в базе данных.

EDIT: Я получил его на работу с этим кодом, благодаря Jueecy's answer:

<?php for ($i = 0; $objResult1 = mysql_fetch_array($objQuery1); $i++) : ?> 
<tr> 
<td><div align="center"><?=$objResult1["ID"];?><input type="hidden" name="mailid[]"  value="<?=$objResult1["ID"];?>"> </div></td> 
<td><div align="center"><?=$objResult1["Titel"];?> </div></td> 
<td><div align="center"><input type="radio" name="sub[<?php echo $i; ?>]" value="10"> </div></td> 
<td><div align="center"><input type="radio" name="sub[<?php echo $i; ?>]" value="90"> </div></td> 
<tr> 
<?php endfor; ?> 

У меня есть только 1 другая проблема сейчас, строка с идентификатором 1 не показывает больше. Кто-нибудь знает, как это исправить? ^^

+0

вместо этого вы можете 'implode' размещен массив и вставить в базу данных и на использовании дисплея' explode' для отображения Это. –

+0

@DipeshParmar, может быть, вы имели в виду 'implode'? – Shoe

+0

@Jueecy yes..gosh не может даже набрать сейчас. –

ответ

1

Есть ли способ заставить это работать, поэтому я могу выбрать 1 радиокнопку в каждой строке?

Конечно, есть. Вы должны выбрать, чтобы иметь кнопки радио и группировать их по имени. Только радио-кнопки с тем же именем будет ограничено иметь только одно значение:

<input type="radio" name="row1" value="x">X</input> 
<input type="radio" name="row1" value="y">Y</input> 

<input type="radio" name="row2" value="x">X</input> 
<input type="radio" name="row2" value="y">Y</input> 

Я думаю, что вы можете легко придумать соответствующую петлю для этого.Что-то вдоль линий:

<?php for ($i = 0; $objResult1 = mysql_fetch_array($objQuery1); $i++) : ?> 
<tr> 
    <td><div align="center"><?=$objResult1["ID"];?><input type="hidden" name="mailid[]" value="<?=$objResult1["ID"];?>"> </div></td> 
    <td><div align="center"><?=$objResult1["Titel"];?> </div></td> 
    <td><div align="center"><input type="checkbox" name="sub<?php echo $i; ?>" value="10"> </div></td> 
    <td><div align="center"><input type="checkbox" name="sub<?php echo $i; ?>" value="90"> </div></td> 
<tr> 
<?php endfor; ?> 
+0

Эй, я использовал вашу петлю с небольшим редактированием (name = "sub []"), И радиокнопки теперь работают thnx! однако проблема, которую я имею сейчас, заключается в том, что первая строка с идентификатором 1 больше не отображается. Любая идея, как это исправить? – Daanvn

+0

@Daanvn, не могли бы вы вставить весь скрипт в Pastebin и связать его здесь, в комментарии? – Shoe

+0

Я уже решил проблему ^^ Я случайно сохранил цикл while, таким образом, он автоматически схватил вторую строку. Просто удалив цикл while, проблема была решена! Thnx btw! – Daanvn

0

Для того чтобы это было возможно, имя переключателей должно быть общим для каждой строки, так как имя определяет группу радиостанций, из которых только один может быть проверен.

Фиксация этого, очевидно, имеет последствия для остальной части вашего решения, но я уверен, что вы можете обойти эти проблемы.

0

я приведу пример для радио-кнопки:

<html> 
    <head> 
    <title>My Page</title> 
    </head> 
    <body> 
    <form name="myform" action="http://www.mydomain.com/myformhandler.cgi" method="POST"> 
    <div align="center"><br> 
    <input type="radio" name="group1" value="Milk" /> Milk<br /> 
    <input type="radio" name="group1" value="Butter" checked /> Butter<br /> 
    <input type="radio" name="group1" value="Cheese" /> Cheese 
    <hr /> 
    <input type="radio" name="group2" value="Water"/> Water<br /> 
    <input type="radio" name="group2" value="Beer" /> Beer<br /> 
    <input type="radio" name="group2" value="Wine" checked /> Wine<br /> 
    </div> 
    </form> 
    </body> 
    </html> 

Для группы radioboxes использовать атрибут "имя". я просто изменить ваш пример следующим образом:

<?php 
    $i = 0; 
    while($objResult1 = mysql_fetch_array($objQuery1)) 
    { 
    $i++; 
    ?> 
    <tr> 
     <td><div align="center"><?=$objResult1["ID"];?><input type="hidden" name="mailid[]" value="<?=$objResult1["ID"];?>"> </div></td> 
     <td><div align="center"><?=$objResult1["Titel"];?> </div></td> 
     <td><div align="center"><input type="checkbox" name="sub1" value="10"> </div></td> 
     <td><div align="center"><input type="checkbox" name="sub1" value="90"> </div></td> 

     <td><div align="center"><input type="checkbox" name="sub2" value="10"> </div></td> 
     <td><div align="center"><input type="checkbox" name="sub2" value="90"> </div></td> 
    </tr> 
    <?php 
    } 
    ?> 
0

Либо использовать один радио группы кнопок в строку или использовать JavaScript, чтобы отменить выбор отказаться от подписки при выборе подписки, и наоборот.

0

Вы можете использовать этот код: он работает 100%

<tr> 
      <td><div align="center">1</div></td> 
      <td><div align="center">2</div></td> 
      <td><div align="center"><input type="radio" name="sub[1]" value="10"> </div></td> 
      <td><div align="center"><input type="radio" name="sub[1]" value="90"> </div></td> 
     </tr> 
     <tr> 
      <td><div align="center">1</div></td> 
      <td><div align="center">2</div></td> 
      <td><div align="center"><input type="radio" name="sub[2]" value="10"> </div></td> 
      <td><div align="center"><input type="radio" name="sub[2]" value="90"> </div></td> 
     </tr> 
     <tr> 
      <td><div align="center">1</div></td> 
      <td><div align="center">2</div></td> 
      <td><div align="center"><input type="radio" name="sub[3]" value="10"> </div></td> 
      <td><div align="center"><input type="radio" name="sub[3]" value="90"> </div></td> 
     </tr> 
+0

Не всегда 3 строки, строки динамически создаются в зависимости от того, сколько в базе данных. – Daanvn

+0

Поместите это в цикл for: он работает уверенно. Napster

+0

Также поместите $ i ++ в конец цикла. НЕ НАЧАЛО ПОВРЕЖДЕНИЯ – Napster

Смежные вопросы