0


我尝试并尝试了四个小时以获取具有不同名称的复选框的值,我真的希望你们能帮助我解决这个问题。提前致谢。这是我的问题:

我有一个表格,其中包含一些问题和备选方案,可以选择哪些问题有自己的 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 值?

让我们从问题编号 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>";

}

}

}

我得到的是每个问题的最后一个选择。在这种情况下,40 和 7 带有键(question_id's),这意味着 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 像这样:
10
30
40
60
7
而且很难知道、排序和插入哪个 id 属于哪个问题。我觉得我必须在数组中循环数组,但我真的不知道该怎么做。我怎样才能得到问题每个部分的选择的价值?再次感谢您提前提供的帮助,我希望你们明白我的意思。

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

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

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

所以我通过写来获得价值

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

问题是:

例如,如果我从问题 1 中选择 A, B, C 和从问题 2 中选择 B , C 然后我得到print_r这样的结果: Array ( [1] => 40 [2] => 7 ),你看我[1] => 40从问题 #1 中只得到 C,它的问题 id 作为键,这是最后一个来自问题#1的一个。我没有从问题 nr 1 中得到 A 和 B 只有 C。我的意思是 [1] 是问题 id 并且 =>40 是alternative_id 但是问题 #1 的最后一个选择的替代方案。我从问题 #2 中得到 C [2] => 7 ,这是问题 #2 中最后选择的问题 ID。

我的目标是这样的:我的问题表中有一个名为 alt_id 的列。我的问题表如下所示: Q_id, question,alt_id

让我们问一下您选择 A、B 和 C 女巫的替代 id 是 10、30、40 现在我想用 implode() 用逗号收集它们并将它们写为 10、30、40 并将它们放在问题 id 行中的列 alt_id 中编号 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….

=============第二次更新:==========
为了从我的数据库中获取价值,我使用这个脚本:(我也会向你展示 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) 即使我在里面运行 SELECTIONforeach loop with implode(','$_POST['alternative']) 我想要的是更新问题表中的列 alt_id 。从一开始就是这样的问题表:
Q_id question alt_id
1 选择一些方程得到 20 Null
2 帅的同义词是什么?空
3 ............................................. 。 空值                

但是在更新之后,我希望它看起来像下面这样:

Q_id question alt_id
1 选择一些方程得到 20 10,30,40
2 帅的同义词是什么?60,7
3 .................................................. ... 89,6,50,30                 

4

1 回答 1

0

问题是给定问题的所有替代字段都具有相同的名称,因此只有最后一个字段被传递到下一页。要正确使用数组表示法,请为问题 1 命名所有字段<input type="text" name="alternative[1][]">。然后在$_POST下一页的数组中,alternative将是一个数组,其中 element1是一个包含您为问题 1 提交的每个选项的数组。

然后,您将使用以下内容迭代 $_POST['alternative']:

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
    }
}
于 2012-07-19T05:58:30.920 回答