以前、http://www.hatena.ne.jp/1079674954でphpの作り方を教えていただき、ソースをコピーせず、手で入力してみましたが、フォームに「1」と入れボタンを押しても何も起りません。


下記ソースはどこが悪いでしょうか?

--------------------------------------

<html>
<body>
<form action=”index.php” method=”post”>
<input name=”choice_num” value=”” type=”text” />
<input name=”submit” value=”submit” type=”submit” />

<?php

if($_POST[’choice_num’]){
$fp = fopen(’goods.csv’,’r’);
while($line = fgetcsv($fp,1024)) {
if($_post[’choice_num’]==$line[0]{
echo $line[1];
}
}
}
?>

</body>
</html>

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/03/29 14:30:23
  • 終了:--

回答(13件)

id:chokobo No.1

chokobo回答回数34ベストアンサー獲得回数42004/03/29 14:38:05

ポイント14pt

$_post[’choice_num’]

でしょう

$_POST[’choice_num’]

じゃないと・・・

id:misia

変えてみましたが、同じでした・・・

四角のフォームに「1」と入れ「submit」ボタンを

押すという操作でいいんですよね?

ボタンを押すと「1」の数字も消えてしまい、

何もおこりません。

2004/03/29 14:50:04
id:mochy No.2

mochy回答回数41ベストアンサー獲得回数02004/03/29 14:52:28

ポイント14pt

</form>

がないからではないでしょうか?

id:misia

<html>

<body>

if($_POST[’choice_num’]){

$fp = fopen(’goods.csv’,’r’);

while($line = fgetcsv($fp,1024)) {

if($_POST[’choice_num’]==$line[0]{

echo $line[1];

}

}

}

?>

</body>

</html>

現在こうなってます。

これも同じでした・・・

------------------

<html>

<body>

これでボタンを押すと、「1」が残ったまま

何も起りません・・

if($_POST[’choice_num’]){

$fp = fopen(’goods.csv’,’r’);

while($line = fgetcsv($fp,1024)) {

if($_POST[’choice_num’]==$line[0]{

echo $line[1];

}

}

}

?>

</body>

</html>

2004/03/29 15:18:31
id:moke3rd No.3

moke3rd回答回数34ベストアンサー獲得回数32004/03/29 14:53:04

ポイント14pt

PHPのバージョンはいくつですか?

$_POSTのような変数が使えるのは4.1.0からです。

確認してみたらどうでしょうか?

以前のバージョンであれば $HTTP_POST_VARS としなければいけません。

id:misia

バージョンは4.3.4です。

つい先日ダウンロードしました。

2004/03/29 15:24:24
id:yamazo No.4

yamazo回答回数66ベストアンサー獲得回数02004/03/29 14:54:43

ポイント14pt

手元のマシンで試したところ、すでに指摘されている、

$_post[’choice_num’]

$_POST[’choice_num’]

と、

if($_POST[’choice_num’]==$line[0]{

if($_POST[’choice_num’]==$line[0]){

の修正(閉じカッコが無い)で作動しました。

id:misia

私のほう、ダメです〜

php自体の問題なんでしょうか!?

ちなみに、商品一覧の「みかん」やらの

内容はどこに表示されるんでしょう?

まだ一度も表示されないので・・・

2004/03/29 15:34:04
id:topo No.5

topo回答回数47ベストアンサー獲得回数02004/03/29 15:04:17

ポイント13pt

エラーが出ていないところを観ると、

if($_post[’choice_num’]==$line[0]{

の所が

if($_post[’choice_num’]==$line[0]){

のように括弧を閉めていない事は無いと思いますが、

忘れていたら括弧を閉じて下さい。

あと、goods.csvの中身ですが、仮に下記の様な内容だとすると、1を入れるとリンゴ、2を入れるとメロンが出るはずです。

1,リンゴ,200

2,メロン,1000

3,バナナ,100

また、csvファイルの中身が

リンゴ,1,200

メロン,2,1000

バナナ,3,100

のようになっていたら「1」を入れても見かけ上はなにもおこりません。

id:misia

括弧は閉じたんですが、ダメでした。

goods.csvは一つ目の例にあるように

1,りんご

2,メロン

となっています。

2004/03/29 15:35:38
id:accessmania No.6

accessmania回答回数62ベストアンサー獲得回数02004/03/29 15:10:56

ポイント13pt

if($_post[’choice_num’]==$line[0]{

ではなく、

if($_POST[’choice_num’]==$line[0]){

です。

動作確認もしました。

なお、goods.csvのデータは

1,fff

1,fff

としています。

<html>

<body>

<form action=”ss.php” method=”post”>

<input name=”choice_num” value=”” type=”text” />

<input name=”submit” value=”submit” type=”submit” />

<?php

if($_POST[’choice_num’]){

$fp = fopen(’goods.csv’,’r’);

while($line = fgetcsv($fp,1024)) {

if($_POST[’choice_num’]==$line[0]){

echo $line[1];

}

}

}

fclose($fp);

?>

</form>

</body>

</html>

id:misia

まるまるコピーすてみましたが

ダメでした。

となると、私のマシンのphpがおかしいのですね。

2004/03/29 15:40:59
id:hebe No.7

hebe回答回数43ベストアンサー獲得回数02004/03/29 15:28:25

ポイント13pt

ちゃんと自分で勉強しましょう。

でなければ分かる人に運営/制作を任せるべきです。

取り敢えずスクリプト書いておきますがあからさまな脆弱性を含むためこのままパブリックスペースで運用しないように。

また文字コードを考慮していないので日本語文字列は化ける/検索出来ない事があります。

取り敢えず 現状の知識 + はてな に頼るのがまちがいです。

---

<html>

<body>

<form action=”” method=””>

filename: <input type=”text” name=”filename”>

key: <input type=”text” name=”key”>

<input type=”submit” name=”submit”>

</form>

<hr>

<?php

error_reporting(E_ALL ^ E_NOTICE);

if (!file_exists($_REQUEST[’filename’]))

{

exit(”ファイル {$_REQUEST[’filename’]} は存在しません¥n”);

}

if (empty($_REQUEST[’key’]))

{

exit(”検索語が入力されていません¥n”);

}

$fp = fopen($_REQUEST[’filename’], ’r’);

while (!feof($fp))

{

$line = fgets($fp);

if(preg_match(”/{$_REQUEST[’key’]}/”, $line))

{

// ヘッダ

print ”<ol>¥n”;

// 行内容

$params = explode(’,’, $line);

foreach ($params as $param)

{

print ”¥t<li>”. htmlspecialchars($param) .”</li>¥n”;

}

// フッタ

print ”</ol>¥n”;

}

}

fclose($fp);

print ”<p>ファイル {$_REQUEST[’filename’]} の検索を完了しました。</p>”;

?>

</body>

</html>

id:misia

すみません。

これをそのまま運用することは考えていませんし、

会社のホームページは専門業者にまかせています。

ただ、今後の為に本を見ながらやっていたのですが、

やりたいことが載っていないのと、

参考にできるものもわからずはてなで質問。

さらにそれを使って色々ためそうと思っている中

全く動かないので、聞いた次第です。

ご意見ありがとうございます。

また、頂いた内容は練習用に使わせていただきます。

2004/03/29 15:48:21
id:nekogo No.8

nekogo回答回数113ベストアンサー獲得回数22004/03/29 15:31:36

ポイント13pt

if($_POST[’choice_num’]==$line[0]{

に)が足りないのではないでしょうか。

if($_POST[’choice_num’]==$line[0]){

です。

id:misia

試しました。

phpを入れなおさないとダメみたいですね〜

2004/03/29 15:49:01
id:mochy No.9

mochy回答回数41ベストアンサー獲得回数02004/03/29 15:37:09

ポイント13pt

goods.csvの中身がわからないのでなんとも言えませんが、 while の次の行で $_POST[’choice_num]、$line[0]、$line[1]を表示させてみて、実際に適切な値が得られているのか確認すれば良いと思います。

print ”NUM = ”. $POST[’choice_num’] . ”

”;

print ”line[0] = ”. $line[0] . ”

”;

print ”line[1] = ”. $line[1] . ”

”;

id:misia

csvの中身は単純に

1,リンゴ

2,メロン

3,イチゴ

です。

教えていただいた方法で試してみます。

2004/03/29 16:08:25
id:yamazo No.10

yamazo回答回数66ベストアンサー獲得回数02004/03/29 15:56:00

ポイント13pt

二度目の回答です。

もしかしてひょっとしてなのですが…

何度かここからコピペしている間に、全角の「’」や「”」が混在してる…なんてことはないですよね?(^-^;

手元で試したら、それで同じような現象が再現出来ましたので…。

id:misia

はい、コピーすると全角の「”」などが混じったり

するので、手入力しています。

2004/03/29 16:09:17
id:hebe No.11

hebe回答回数43ベストアンサー獲得回数02004/03/29 16:38:59

ポイント13pt

> phpを入れなおさないとダメみたいですね〜

原因特定が先だと思いますが。

可能性を上げればキリが無いのですが、取り敢えず PHP スクリプトと読込対象となる csv ファイルは同じディレクトリに設置してますか。

<? phpinfo() ?>

とだけ記入した PHP スクリプトファイルにブラウザからアクセスして正しく表示されるのであれば PHP のインストール自体に問題のある可能性は少ないと思います。

id:misia

と表示されました。

2004/03/29 17:15:16
id:topo No.12

topo回答回数47ベストアンサー獲得回数02004/03/29 16:51:06

ポイント13pt

2回目の回答です。

サンプルに若干手を加えて、一致しない場合「x」を表示するようにしてみました。

goods.csvの中身が

1,リンゴ

2,メロン

3,イチゴ

なので、「1」を入力して「submit」をクリックすると、

リンゴ

x

x

と表示されるはずです。

表示されない場合試しに表示されたページのHTMLコードを表示してみてどのようになっているか確認するといいかもしれません。

<html>

<body>

<form action=”index.php” method=”post”>

<input name=”choice_num” value=”” type=”text” />

<input name=”submit” value=”submit” type=”submit” />

<?php

if($_POST[’choice_num’]){

$fp = fopen(”goods.csv”,”r”);

while($line = fgetcsv($fp,1024)){

if($_POST[’choice_num’] == $line[0]){

echo ”

” . $line[1];

}else{

echo ”

x”;

}

}

fclose($fp);

}

?>

</body>

</html>

きっとスクリプト自体は間違っていないと思います。

そこで、

1)ファイルをアップロードする時の問題

2)goods.csvの問題

3)PHP自体の問題

等が考えられます。

・サーバのOSや、スクリプトを作成しているOSやソフトは何か?(バージョンも含めて)

・FTPに使っているソフトは何か?

等がわかると問題の切り分けも出来るような気がします。

また単純に文字を表示するだけのスクリプトを書いて実行できるか確認するのもいいかもしれません。

<html>

<body>

<?php

echo ”test

”;

?>

</body>

</html>

id:misia

下に書いていただいたテストソースは

何も表示されません。

今の環境ですが、私のコンピュータで行っています。

*Windows2000Pro

*PHP 4.3.4

*Apache 1.3.28

*MIFESにて編集

試しに、問題なく動作するはずの

phpファイル(当社のホームページで使っているもの)

を私のPCで見てみましたが、表示されませんでした。

テキストの羅列となってしまいます。

という事は、私の入力した練習用PHPにも誤まりは

多々ありましたが、それ以前の問題という事ですよね。

なんかあせってきました(>_<)

2004/03/29 17:38:43

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 accessmania 62 59 0 2004-03-29 17:50:19
  • id:kuippa
    通りすがりですが…

    質問者の方…。もしかして、phpスクリプトを自分のローカルマシンで動かしちゃいませんか??
    IEなりに表示されているアドレスが
    c:¥どっかのディレクトリー¥保存ディレクトリー¥ファイル名.php
    とかになっちゃいませんか???

    サーバーサイドスクリプトなので、アパッチ上などで動かさんと動きませんよ!?HTMLとは違うので注意してください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません