重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

PHPでのアンケート設置について
同じカテゴリにて間隔を空けずに他にも質問してますので内容が若干被るかもしれませんがご了承ください。
下記サイトのアンケートを自身のサイトに設置したいと思い、とりあえず動作確認だけでもしてみようとソースをそのままコピペして(phpファイル名とテキストファイル名は変更)サーバーにアップしましたが上手く動作してくれません。

ソースが掲載されているサイトURL:http://rx78.mods.jp/php_sample/questionnaire/ind …

-------------ank.php--------------------
<html>
<head>
<title>アンケート</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>あなたの好きな教科を選んで投票してください。
<form name="form" method="post" action="ank.php">
<?php
//ラジオボタンを項目ごとに出力
$subject=array('国語','社会','数学','理科','英語');
for($i=0; $i<count($subject); $i++){
 echo "<input type='radio' name='kyouka' value='$i'>{$subject[$i]}<br>\n";
}
?>
<br>
<input type="submit" name="submit" value="投票">
</form>
<table border="1">
<?php
//データの書き込み
$data=file('data2.txt');
for($i=0; $i<count($subject); $i++){ $data[$i]=rtrim($data[$i]); }
if($_POST['submit']){
$data[$_POST['kyouka']]++;
$fp=@fopen('data2.txt','w');
for($i=0; $i<count($subject); $i++){
fwrite($fp,$data[$i]."\n");
}
fclose($fp);
}
//データの出力
echo "<hr>";
for($i=0; $i<count($subject); $i++){
echo "<tr>";
echo "<td>{$subject[$i]}</td>";
echo "<td><table><tr>";
$wd=$data[$i]*10; //出力幅の設定
echo "<td width='$wd' bgcolor='#eeeeee'> </td>";
echo "<td>{$data[$i]} 票</td>";
echo "</tr></table></td>";
echo "</tr>\n";
}
?>
</table>
</body>
</html>
----------------------------------------

上記のank.phpファイルと同じディレクトリに空のdata2.txtファイルを用意し、パーミッションを606に設定しました。
アップしてank.phpにアクセスすると真っ白のページになります。
お借りしているレンタルサーバー(Rental Orbit Space )はphp可でパスも設定しました。
上記サイトの他のサンプルを使用してみたらエラーがあった為(ネットで調べて自己解決済)、不信感を覚えこのサンプルのコードにも誤りがあるのでは?と思いましたが、私が初心者な為コードを見てもどこが間違っているのかさえ皆目見当付きません。

そこで詳しい方の力をお借りたくて質問しました。
私自身が半可通な為に説明不足な点もあるかと思いますが、ご教授いただければ幸いです。
何卒よろしくお願い致します。

A 回答 (3件)

メールフォームの方もですが、もしそのままサイトのソースをコピペしただけならば多分全角スペースが入っているのではないでしょうか?

    • good
    • 0
この回答へのお礼

duronさんご回答ありがとうございます。
ご指摘の通り全角スペースが入っておりました。
修正しサーバーにアップしたところ無事に動作しました。
こういうケースもあるものだととても勉強になりました。
メールフォームの方も同じく修正したところ正常に動作しました。
本当にありがとうございました。

お礼日時:2010/05/25 06:47

#Ano1 です。


文字コードを不ぞろいにすることで同じ症状を確認しましたので、その辺りだとは思うのですが…。
ちなみに、当該スクリプトは問題なく動作しています。

・「真っ白なページ」の時、HTMLソース自体はきちんと出力されているか?
ソースに何らかのErrorが出力されてはいないか?
・FTPソフトで転送時に自動的に別の文字コードに変換されているということはないか?
確認してみてください。

あとは(問題が文字コードと仮定して)
・ <?php header("Content-type: text/html; charset=SJIS"); ?> を明記してやる
・ またはShift_JIS以外のコードにしてみる(PHP内部の処理コードにあわせてみる)
とかです。
    • good
    • 0
この回答へのお礼

JaneDueさん、再度御回答ありがとうございます。

・「真っ白なページ」の時、HTMLソース自体はきちんと出力されているか?
ソースに何らかのErrorが出力されてはいないか?

HTML自体も表示されません。
Errorも出力されていません。

・FTPソフトで転送時に自動的に別の文字コードに変換されているということはないか?

私も前回の回答を頂いた時にそのような事もあるのでわ?と思いサーバー側のphpファイルもチェックしておりましたが、文字コードは変換されていませんでした。

・ <?php header("Content-type: text/html; charset=SJIS"); ?> を明記してやる
・ またはShift_JIS以外のコードにしてみる(PHP内部の処理コードにあわせてみる)

試みてはみましたが変わらずでした。

親切・丁寧に色々と原因を考えてくださって多謝しております。
ありがとうございます。

お礼日時:2010/05/25 04:40

たぶん文字コードまわりです。


html はcharset=Shift_JIS" ですが、ank.phpが UTF-8など Shift_JIS 以外で保存されていませんか?
ソースの文字コードと出力を統一してみてください。
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。
保存したファイルの文字コードを再度確認してみましたが、Shift-JISで保存されていました。
他に原因として考えられることはないでしょうか?
お手数をおかけしますが、よろしくお願いします。

お礼日時:2010/05/24 00:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!