0


別の名前のチェックボックスの値を取得するために4時間試行錯誤していましたが、この問題の解決を手伝ってくれることを本当に願っています. 前もって感謝します。これが私の問題です:

いくつかの質問と代替案を含むフォームがあり、どの質問にも独自の 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でそれらのalternative-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>";

}

}

}

私が得ているのは、すべての質問の最後に選択された選択肢です。この場合、キー (question_id) を持つ 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 を次のようにまとめて意味 し ます 。配列内で配列をループする必要があるように感じますが、実際にはそれを行う方法がわかりません。質問のすべての部分で選択された選択肢の値を取得するにはどうすればよいですか? 事前にご協力いただきありがとうございます。私の言いたいことを理解していただければ幸いです。




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

$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から1つ。質問番号 1 から A と B のみ C を取得できません。つまり、[1] は質問 ID で、=>40 は alternative_id ですが、質問 #1 の選択された選択肢の最後の 1 つです。[2] => 7 そして、質問IDを持つ質問#2の最後に選択された質問#2からCを取得します。

私のターゲットは次のようなものです: 質問テーブルに alt_id という名前の列があります。私の質問表は次のようになります: Q_id, question,alt_id

あなたが選択した A、B、C の代替 ID を質問してみましょう。代替 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….

==============2回目の更新: ==========
データベースから値を取得するには、次のスクリプトを使用します: (ページも表示します):

$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);  
    }

================= Forth Edition ============あなたが言った よう
に、質問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) 内部でSELECTIONを実行しても、それらを取得できませんforeach 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の配列には、要素1が質問 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 に答える