- 締切済み
php 送信されたフォームについて
送信されたフォームの受け取る側のソースを書いたのですが、 <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> を付け加えるとエラーが表示されます。エラーの対象になっているのは print('正解数'.$i./4'です');らしいのですが、なぜエラーになるのかわかりません 回答お願いします。 以下ソースです。 <html> <head> <title>解答</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style type=""text/css""> #container{ width:1000 } #main{ width:500px; float:right; } #sidebar{ width:500px; float:left; } </style> </head> <body> <div id="container"> <div id="main"> <p>問題の解答</p> <p>問1</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> </div> <div id="sidebar"> <p><>あなたの解答<></p> <p>問1</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran24'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran32'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran33'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran34'], ENT_QUOTES, 'UTF-8')); ?> </p> </div> </div> <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> </body> </html>
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- agunuz
- ベストアンサー率65% (288/438)
>if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') printの戻り値を'a'と比較しているのは何ですかねぇ。この時点でのprintの出力も画面に表示されてしまっていると思いますが・・・。またhtmlspecialcharsを通す必要はないですよね(何のための関数かを考えれば自明)。 if ( $_POST['kaitouran31'] === 'a' ) と書くべきでは?
- Picosoft
- ベストアンサー率70% (274/391)
> 全部正解したとき > 1111正解数4/4です > と表示されてしまいます。 > おそらくi++;が表示されてしまっているのですが > これは何が原因でしょうか? $i++;というコードはiを1増やすだけで、何も出力しません。 PHPで何かを出力するために使うのはprintですよね? コード中に余計なprintがないか、よく探してみてください。
- Picosoft
- ベストアンサー率70% (274/391)
> print('正解数'.$i./4'です');らしいのですが、なぜエラーになるのかわかりません まず、「どういう処理をさせたいか」をよく考えてください。 →「正解数」(正解数)「/4です」と表示したい 次に、自分の書いたコードをよく見てください。 →print('正解数'.$i./4'です'); (注)ドット(".")は「文字列と文字列を連結する」という意味です どこに誤りがあるか、わかりましたか?
お礼
回答ありがとうございます /4が’’内に書かれていなかったからですよね。 ただプログラムは実行できたのですが、今度は print('正解数'.$i./4'です');についてですが全部正解したとき 1111正解数4/4です と表示されてしまいます。 おそらくi++;が表示されてしまっているのですが これは何が原因でしょうか?