| 投稿者 | 
    メッセージ | 
  
  
    | 
		 | 
	
  
    | <  PHPプログラミング  ~  変数が正しく通りません。 | 
  
  
  
     | 
    
        
           時間:
            日 9月 03, 2006 10:33 pm 
            
             | 
            
              | 
         
        | 
  
  
    | 
 | 
phpに関する初歩的な質問です。初心者ですので用語が不確かですがどうかご容赦ください。
 
htmlページのformタグから送られた変数をphpで受け取り、その変数を元に必要とする結果を表示させるスクリプトを作成しました。ところがその変数を用いた処理の一部だけがどうしてもうまく表示されません。以下にスクリプトの一部を抜粋いたしますので、どうかどなたかアドバイスをいただけたらと思います。
 
 
**htmlページ**
 
<form action = "quiz.php"
 
      method = "post">
 
Name
 
<input type = "text"
 
       name = "student">
 
<ol>
 
<li>
 
  1+0
 
  <ol type = "A">
 
    <li>
 
      <input type = "radio"
 
             name = "quest[1]"
 
             value = "A">
 
      1
 
    </li>
 
    <li>
 
      <input type = "radio"
 
             name = "quest[1]"
 
             value = "B">
 
      2
 
    </li>
 
    <li>
 
      <input type = "radio"
 
             name = "quest[1]"
 
             value = "C">
 
      3
 
    </li>
 
    <li>
 
      <input type = "radio"
 
             name = "quest[1]"
 
             value = "D">
 
      4
 
    </li>
 
  </ol>
 
  <hr>
 
</li>
 
 
(以下、quest[2], [3]...が存在する)
 
 
**phpページ(quiz.php)**
 
//htmlページで選ばれた答えを確認する。
 
for ($questionNumber = 1; $questionNumber <= count($_POST['quest']); $questionNumber++){
 
  $guess = $_POST['quest[$questionNumber]'];
 
 
//↑ここがうまく通らない。
 
//htmlページで選ばれた答えが通ってほしい。
 
 
  $correct = $key[$questionNumber]; //$keyは正答を表示する(定義済み)
 
  $correct = rtrim($correct);
 
  //print "$questionNumber, Guess = $guess, Correct = $correct.<br>\n";
 
  if ($guess == $correct){
 
    //user got it right
 
    $numCorrect++;
 
    print "problem #". $questionNumber. "was correct.<br>\n";
 
  } else {
 
    print "<font color = red>problem #". $questionNumber. " was incorrect.
 
    The correct answer is " . $correct."
 
    . Your answer was " . $guess . ".</font><br>\n";
 
  } // end if
 
} // end for |  
 |  
 
 |  
  | 
  
  
     | 
     | 
  
  
      | 
  
  
     | 
    
        
           時間:
            月 9月 04, 2006 1:05 pm 
            
             | 
            
              | 
         
        | 
  
  
    | 
 | 
ラジオボタンなのでPOSTで配列にして受け取る必要はないと思いますが配列で受け取る理由は何かあるのですか?
 
 
後</form>はちゃっと終わらしてますか?
 
 
以下のように書くとPHP側で
 
 
<form action = "quiz.php" method = "post">
 
Name
 
<input type = "text" name = "student">
 
<ol>
 
<li>
 
1+0
 
<ol type = "A">
 
<li>
 
<input type = "radio" name = "quest" value = "A">
 
1
 
</li>
 
<li>
 
<input type = "radio" name = "quest" value = "B">
 
2
 
</li>
 
<li>
 
<input type = "radio" name = "quest" value = "C">
 
3
 
</li>
 
<li>
 
<input type = "radio" name = "quest" value = "D">
 
4
 
</li>
 
</ol>
 
<hr>
 
</li>
 
<input type="submit" />  
 
</form> 
 
 
 
 
こんな配列がもらえるはずです。
 
 
Array
 
(
 
    [student] => aaaaa
 
    [quest] => B
 
)
 
 
一回print_r($_$POST)をでPOSTの中身を見るのも手だと思います。 |  
 |  
 
 |  
  | 
  
  
     | 
     | 
  
  
      | 
  
  
     | 
    
        
           時間:
            水 9月 06, 2006 10:44 pm 
            
             | 
            
              | 
         
        | 
  
  
    | 
 | 
questをquest[1], quest[2], quest[3]というように配列にしたいのは、いくつ配列があるのか固定されていないからです。最初のhtmlページがすでにphpによって生成されたページで、配列が2つであったり、7つであったりする可能性があるからです。
 
 
$questionNumberや$_POST['quest']は通っているようですが、$_POST['quest[$questionNumber]では何も結果が表示されなくなってしまいます。
 
 
どうかアドバイスをいただけませんでしょうか。 |  
 |  
 
 |  
  | 
  
  
     | 
     | 
  
  
      | 
  
  
     | 
    
        
           時間:
            水 9月 06, 2006 10:50 pm 
            
             | 
            
              | 
         
        | 
  
  
    | 
 | 
questをquest[1], quest[2], quest[3]というように配列にしたいのは、いくつ配列があるのか固定されていないからです。最初のhtmlページがすでにphpによって生成されたページで、配列が2つであったり、7つであったりする可能性があるからです。
 
 
$questionNumberや$_POST['quest']は通っているようですが、$_POST['quest[$questionNumber]']では何も結果が表示されなくなってしまいます。
 
 
formタグもちゃらっと終わらせてます。
 
 
どうかアドバイスをいただけませんでしょうか。 |  
 |  
 
 |  
  | 
  
  
     | 
     | 
  
  
      | 
  
  
     | 
    
        
           時間:
            水 9月 06, 2006 10:51 pm 
            
             | 
            
              | 
         
        | 
  
  
    | 
 | 
questをquest[1], quest[2], quest[3]というように配列にしたいのは、いくつ配列があるのか固定されていないからです。最初のhtmlページがすでにphpによって生成されたページで、配列が2つであったり、7つであったりする可能性があるからです。
 
 
$questionNumberや$_POST['quest']は通っているようですが、$_POST['quest[$questionNumber]']では何も結果が表示されなくなってしまいます。
 
 
formタグもちゃらっと終わらせてます。
 
 
どうかアドバイスをいただけませんでしょうか。 |  
 |  
 
 |  
  | 
  
  
     | 
     | 
  
  
      | 
  
  
     | 
    
        
           時間:
            木 9月 07, 2006 2:42 pm 
            
             | 
            
              | 
         
        | 
  
  
    
       
       
       
      登録日: 2006年4月 05日 
      投稿記事: 14 
      
  | 
  | 
念のため
 
 
誤↓
 
$_POST['quest[$questionNumber]']
 
 
正↓
 
$_POST['quest'][$questionNumber] |  
 |  
 
 |  
  | 
  
  
     | 
     | 
  
  
      | 
  
  
     |