2012-07-17 25 views
0


我试图尝试四个小时以获得不同名称的复选框值,我真的希望你们能帮我解决这个问题。提前致谢。这是我的问题:PHP:使用不同的名称/编号的多个复选框使用PHP

我有一个形式,有一些问题和选择哪个问题有自己的ID和每个替代品也有自己的ID,当然,每个替代品也有一个问题ID属于题。我有一个问题表和另一个表的替代品。 例如:

1)之所以选择一些方程得到20(比方说,这个问题得到question_id = 1)

A)5 * 4(比方说,这一个被alternative_id = 10)
B)6 * 5(alternative_id = 20)
C)100/5(alternative_id = 30)
d)4 * 5(和假设这一个被alternative_id = 40)

关当然,所有这些的上面会有question_id = 1

2)什么是英俊的代名词? (比方说,这个问题得到question_id = 2)

A)丑(比方说,这一个被alternative_id = 40)
B)美貌(alternative_id = 60)
C)好看(alternative_id = 7)
d)类(alternative_id = 5)

当然,所有这些上面会有question_id = 2

现在我的问题是如何得到的值与他们的问题-ID的那些替代-ID?

让我们从问题Nummber 1 => A,C和D(意思是id 10,30,40) 以及问号2 => B和C(这意味着id,60,7)中进行选择。 我想要获得这些价值,当我点击提交按钮,在这里,这是我在做什么。

如果我用这个在我的复选框形式

print '<input type="checkbox" name="alternative['.$row_q['question_id'].']" value="'.$row['alternative_id'].'">'.$row['alternative'].'</input>'; 
<input type="submit" name="submit" value="OK" /> 

当我提出我使用此代码:

$alt = $_GET['alternative']; 
if (isset($_REQUEST['submit'])&& $_REQUEST['submit'] != "") { 
if(isset($_GET['alternative'])&& $_GET['alternative'] != ''){ 
foreach($alt AS $key=>$alt3){ 
    echo $key."-".$alt3."<br>"; 

} 

}

} 

最后我所得到的是选择每个问题的选择。在这种情况下,使用键(question_id's)的40和7, 这意味着40是问题1中替代D的ID,而7是问题2中替代C的ID。

如果我使用复选框的名称,索引是这样的:

print '<input type="checkbox" name="alternative[]" value="'.$row['alternative_id'].'">'.$row['alternative'].'</input>'; 

然后我得到的所有选定的ID一起像一堆,但没有钥匙的(带出来question_id)。 我的意思是一起针对问题1号和2号这样的:
,而且很难知道,排序和插入其中的ID属于哪个问题。我觉得我必须在数组中循环数组,但我真的不知道如何去做。 我怎样才能得到所选择的问题的每个部分的价值?再次感谢您的帮助,我希望你们明白我的意思。

======================

$alt是被选择的替代ID的值。我从 $_GET['alternative'];得到它们,[备选]是复选框的名称。从问题2

例如,如果我选择A,B,C从问题1和B,C:

<input type="checkbox" name="alternative['.$row_q['question_id'].']" value="'.$row['alternative_id'].'">'.$row['alternative'].'</input> 

因此,我通过写

$alt = $_GET['alternative']; in another page.<br> 

的问题是得到的值然后我得到这样的print_rArray ([1] => 40 [2] => 7),你看到我从问题#1中只得到C,[1] => 40,它的问题ID是一个关键字,这是问题#1中的最后一个。我没有从第1个问题得到A和B只有C.我的意思是[1]是问题ID,并且=> 40是alternative_id但是问题#1的最后一个选择的替代方案。 ,我从问题#2得到C [2] => 7,这是问题#2的最后一个选择,它是问题ID。

我的目标是这样的: 我在我的问题表中有一个名为alt_id的列。 我的问题表是这样的: Q_idquestionalt_id

让我们的问题NR你选择了A,B和C女巫替代的ID是10,30,40 现在我想与破灭逗号收集他们()并把它们写为10,30,40,并把它们列在alt_id问题ID NR的第1行

Q_id  question           alt_id 
1   Chose some equation to get 20      10,30,40 
2   What's a synonym of handsome?      60,7 
3   ................................................. 89,6,50,30 

我希望他们这样

ARRAY([1]=>10,30,40 [2]=>60,7 [3]=>89,6,50,30) 

然后我想更新问题表像这样的(当然alt_id是NULL从一开始)

foreach($alt AS $key=>$alternativ){ 
    $query = 'UPDATE question SET alt_id = '.alternative.' WHERE q_id = '.$key.' '; 
    $result = mysql_query($query); 
    } 

所以我的问题是我怎么可以让他们这样ARRAY([1]=>10,30,40 [2]=>60,7 [3]=>89,6,50,30 and so on….

======= =======二uppdating:==========
要gererait从我的数据库的公益价值我使用这个脚本:(我会告诉你sourge页面太):

$sql_q = " SELECT * FROM questions WHERE title_id = ".$title_id." "; 
$res_q= mysql_query($sql_q); 
while($row_q = mysql_fetch_array($res_q)){ 
    $q_id = $row_q['q_id']; 
    $sql_a = " SELECT alt_id, alt, q_id FROM ice_alternative WHERE q_id = ".$q_id." "; 
    $res_a = mysql_query($sql_a); 
    while ($row_a = mysql_fetch_array($res_a)){ 
     $alt_id = $row_a['alt_id']; ?> 
     <input type="checkbox" name="alternative[<?=$row_q['q_id']?>]" value="<?=$row_a['alt_id']?>"/><?=$row_a['alt']?></input><br /><br /> 
     <?php 
     } 
     } 

而且当我看到sourge页它显示我是这样的:

<form action="st_q2.php" name="reply2" method="POST" enctype="multipart/form-data"> 

1) Chose some equation to get 20 

<input type="checkbox" name="alternative[1]" value="10"/>5*4</input><br /><br /> 
<input type="checkbox" name="alternative[1]" value="20"/>6*5</input><br /><br /> 
<input type="checkbox" name="alternative[1]" value="30"/>100/5</input><br /><br /> 
<input type="checkbox" name="alternative[1]" value="40"/> 4*5</input><br /><br /> 
<hr /><br><br><br> 

2) What's a synonym of handsome?<br><br>  

<input type="checkbox" name="alternative[2]" value="50"/>Ugly</input><br /><br /> 
<input type="checkbox" name="alternative[2]" value="60"/>Fine-looking</input><br /><br /> 
<input type="checkbox" name="alternative[2]" value="7"/>Good-looking</input><br /><br /> 
<input type="checkbox" name="alternative[2]" value="5"/>Kind</input><br /><br /> 
<hr />  
<input type="submit" name="submit" value="OK" /> 
    </form> 


然后在我的下一个页面(st_q2.php),我写我的代码是这样的:

$alt = $_POST['alternative']; 
if (isset($_REQUEST['submit'])&& $_REQUEST['submit'] != "") { 
if(isset($_POST['alternative'])&& $_POST['alternative'] != ''){ 
foreach($alt AS $key=>$alternativ){ 
    $query = 'UPDATE question SET alt_id = '.alternative.' WHERE q_id = '.$key.' '; 
    $result = mysql_query($query); 
    } 

==== =============第四版============
如果我提出问题1的所有字段的名称,如您所说:name="alternative[1][]" 然后我得到

1) Chose some equation to get 20 

<input type="checkbox" name="alternative[1][]" value="10"/>5*4</input> 
<input type="checkbox" name="alternative[1][]" value="20"/>6*5</input> 
<input type="checkbox" name="alternative[1][]" value="30"/>100/5</input> 
<input type="checkbox" name="alternative[1][]" value="40"/> 4*5</input> 
<hr /><br><br><br> 

2) What's a synonym of handsome?<br><br>  

<input type="checkbox" name="alternative[1][]" value="50"/>Ugly</input> 
<input type="checkbox" name="alternative[1][]" value="60"/>Fine-looking</input> 
<input type="checkbox" name="alternative[1][]" value="7"/>Good-looking</input> 
<input type="checkbox" name="alternative[1][]" value="5"/>Kind</input> 
<hr />  
<input type="submit" name="submit" value="OK" /> 
    </form> 

如果我给的名字都是我的name="alternative[<?=$row_q['q_id']?>][]" 区,然后我得到

<input type="checkbox" name="alternative[1][]" value="10"/>5*4</input> 
<input type="checkbox" name="alternative[1][]" value="20"/>6*5</input> 
<input type="checkbox" name="alternative[1][]" value="30"/>100/5</input> 
<input type="checkbox" name="alternative[1][]" value="40"/> 4*5</input> 
<hr /><br><br><br> 

2) What's a synonym of handsome?<br><br>  

<input type="checkbox" name="alternative[2][]" value="50"/>Ugly</input> 
<input type="checkbox" name="alternative[2][]" value="60"/>Fine-looking</input> 
<input type="checkbox" name="alternative[2][]" value="7"/>Good-looking</input> 
<input type="checkbox" name="alternative[2][]" value="5"/>Kind</input> 

如果我给的名字我所有的字段name="alternative[<?=$row_q['q_id']?>][<?=$row_a['alt_id']?>]" 然后我得到

<input type="checkbox" name="alternative[1][10]" value="10"/>5*4</input> 
<input type="checkbox" name="alternative[1][20]" value="20"/>6*5</input> 
<input type="checkbox" name="alternative[1][30]" value="30"/>100/5</input> 
<input type="checkbox" name="alternative[1][40]" value="40"/> 4*5</input> 
<hr /><br><br><br> 

2) What's a synonym of handsome?<br><br>  

<input type="checkbox" name="alternative[2][50]" value="50"/>Ugly</input> 
<input type="checkbox" name="alternative[2][60]" value="60"/>Fine-looking</input> 
<input type="checkbox" name="alternative[2][7]" value="7"/>Good-looking</input> 
<input type="checkbox" name="alternative[2][5]" value="5"/>Kind</input> 

但还是老样子,我可以”吨让他们作为ARRAY([1]=>10,30,40 [2]=>60,7 [3]=>89,6,50,30) 即使我跑内部选择foreach loop with implode(','$_POST['alternative']) 我想要的是更新列alt_id我问题表。从一开始的问题表是这样的:
Q_id                问题                                                                                alt_id
1中选择一些方程得到20                                空
2什么是帅气的代名词?                                空
3 ............................... ..................                       空                               

但后来uppdating我希望它看起来像这样经过如下:

Q_id                问题                                                                                alt_id
1中选择一些方程以获得20                                 10,30,40
2什么是英俊的代名词?                                 60,7
3 ............................. ....................                                 89,6,50,30                                

+0

什么是$ alt2?它在哪里设置? – octern 2012-07-17 21:26:37

+0

谢谢Octern,我的意思是$ alt不是$ alt2。但是也会出现同样的问题。 – 2012-07-17 21:55:12

+0

$ alt的确切内容是什么?请使用print_r()显示它。 – octern 2012-07-18 03:16:21

回答

0

的问题是,对于一个给定的问题,所有的替代领域具有相同的名称,所以只有最后一个是越来越传递到下一个页面。要正确使用数组符号,请将问题1的所有字段命名为<input type="text" name="alternative[1][]">。然后在你的$_POST数组的下一个页面上,alternative将是一个数组,其中元素1是包含每一个你提交的问题1.

然后选择一个数组你会遍历$ _ POST [“替代”]像这样:

foreach($_POST['alternative'] as $qid => $question) { 
    foreach($question as $altnum => $alternative) { 
     // deal with alternatives here 
     // using $qid for question ID and $altnum for alternative number 
    } 
} 
+0

我在18小时前编辑过它,但是当你说你是否指复选框,对不对?不能输入文字。因为我没有文本字段当我从数据库中选择它们时,我将它们放入复选框中。 – 2012-07-19 18:57:26

+0

对不起,我很困惑。我正在考虑在编写问题时用于输入选项的代码,而不是用户如何选择选项。我认为我不能帮你解决这个问题。这太复杂了,我没有那么多时间花在它上面。我认为你需要做更多的调试,并试图找出错误的根源。 – octern 2012-07-19 19:08:45

+0

我同意,使用单选按钮很容易,因为您只有一个选择从每个问题中选择。但是我会通过插入另一个新表来解决这个问题,方法是给每个选择的替代项插入这个带有id的新表,并获得与所选替代项相同的q_id。我可以这样做,我只是想让他们成为一个阵列,但你看到它很难。我现在想说的是“非常感谢你的时间。”我不能停下来谢谢你。 – 2012-07-19 19:50:12

相关问题