1

現在、フォームからデータベースの値を挿入しようとしています。

 <?php do { ?>
  <tr>
    <td><?php echo $row_questions['question']; ?><br /><table><tr><td style=

    "padding:15px; text-align:center">
      <label>
        <center><input type="radio" name="answers_<?php echo $row_questions['id']; ?>_<?php echo $row_questions['sub_category']; ?>" value="1" id="answers_1" /></center><br />
        Low</label>
      </td><td style="padding:15px; text-align:center">
      <label>
        <center><input type="radio" name="answers_<?php echo $row_questions['id']; ?>_<?php echo $row_questions['sub_category']; ?>" value="2" id="answers_2" /></center><br />
        Fairly Low</label>
      </td><td style="padding:15px; text-align:center">
      <label>
        <center><input type="radio" name="answers_<?php echo $row_questions['id']; ?>_<?php echo $row_questions['sub_category']; ?>" value="3" id="answers_3" /></center><br />
        Average</label>
      </td><td style="padding:15px; text-align:center">
      <label>
        <center><input type="radio" name="answers_<?php echo $row_questions['id']; ?>_<?php echo $row_questions['sub_category']; ?>" value="4" id="answers_4" /></center><br />
        Fairly High </label>
      </td><td style="padding:15px; text-align:center">
      <label>
        <center><input type="radio" name="answers_<?php echo $row_questions['id']; ?>_<?php echo $row_questions['sub_category']; ?>" value="5" id="answers_5" /></center><br />
        High</label>
      </td></tr></table><br />
  </tr>
  <?php } while ($row_questions = mysql_fetch_assoc($questions)); ?>

フォームは、データベース内のテーブルから質問を取得します (質問と呼ばれます)。それらは 3 つのカテゴリに分類され、一度に 1 つのカテゴリの質問セットのみが取得されます。

各回答を別のテーブル (user_answers と呼ばれる) に個別に挿入する必要があります。

私はこれをどのように行うかについてかなり苦労しており、頭を悩ませ始めています!

フォームは $_POST を介して値を渡すことprint_r($_POST);ができます。

配列 ( [answers_90_5] => 3 [answers_91_5] => 3 )

90 と 91 が質問 ID で、5 が両方のインスタンスのサブカテゴリです。

ここから私は困惑しています。

個々の投稿のこれらの部分を回答とともに特定し、表にそれぞれ行として挿入するにはどうすればよいですか?

私は、MySQL の挿入を正常に実行し、値を渡す標準フォームなどで問題ありませんが、これを行う方法に完全に困惑しています!

よろしくお願いします!

4

3 に答える 3

3

多次元配列を使用すると、反復作業が容易になります。

<input 
    type="radio" 
    name="answers[<?php echo $row_questions['id']; ?>][<?php echo $row_questions['sub_category']; ?>]" 
    value="1" 
    id="answers_<?php echo $row_questions['id'] . '_' . $row_questions['sub_category']; ?>" />

これをデバッグすると、次$_POSTのような配列が表示されます。

Array ( [answers] => Array(
     90 => Array ( 5 => 3 ),
     91 => Array ( 5 => 3 ),
))
于 2012-11-07T21:05:58.323 に答える
0

確かに、クエリを分離し、クエリ1の投稿値1とサブ猫1、およびクエリ2が猫2とサブ猫2に対して同じことを行います。

とても簡単です。

于 2012-11-07T21:00:26.207 に答える
0

マルチディム配列を示唆する他の答えは非常に理にかなっていると思います。ただし、文字列を解析する方法の例を引き続き提供すると思いました。それは次のような単純なものかもしれません:

foreach ($post as $k => $v) {
    $parts = explode('_', $k);
    $questionId = $parts[1];            
    $questionCategoryId = $parts[2];    
    $sql = "INSERT INTO answers (questionId, subCategoryId, answerValue ) VALUES ($questionId, $questionCategoryId, $v)";

    ....
}

...うまくいけば、POSTデータのエスケープが改善されます。

于 2012-11-07T21:22:52.440 に答える