http://oshiete1.goo.ne.jp/qa3583661.htmlの質問の続きなのですが、条件分岐による検索のプログラムを書きたいのですが、
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\iiko.php on line 61
というエラーが起こってしまいました。
いろいろとPHPのサイトを見て回って考えたのですが、解決策がわかりません。
フォームの構造は
<html>
<head>
<title>abcde</title>
</head>
<body>
<FONT size="4">abcde</FONT>
<form action="iiko.php" method="post">
a<br>
<br>
ある<INPUT type="radio" name="a" value="ある"><br>
ない<INPUT type="radio" name="a" value="ない"><br>
<br>
b<br>
<br>
ある<INPUT type="radio" name="b" value="ある"><br>
少しある<INPUT type="radio" name="b" value="すこしある"><br>
ない<INPUT type="radio" name="b" value="ない"><br>
<br>
c<BR>
ある<INPUT type="radio" name="c" value="ある"><BR>
ない<INPUT type="radio" name="c" value="ない"><BR>
<BR>
d<br>
ある<INPUT type="radio" name="d" value="ある"><br>
ない<INPUT type="radio" name="d" value="ない"><br>
<br>
e<br>
ある<INPUT type="radio" name="e" value="ある"><br>
ない<INPUT type="radio" name="e" value="ない"><br>
<br>
<input type="submit" name="bottun1" value="送信">
</form>
</body>
</html>
検索リストのiiko.phpは、条件を選択すれば、デーブルのデータのID2~4番の人を表示させ様としています。
<html>
<body>
<?php
$a_1 = $_POST["a"];
$b_1 = $_POST["b"];
$c_1 = $_POST["c"];
$d_1 = $_POST["d"];
$e_1 = $_POST["e"];
require_once("DB.php");
$dbUser = "sample";
$dbPass = "password";
$dbHost = "localhost";
$dbName = "sampledb";
$dbType = "mysql";
$dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName";
$conn = DB::connect($dsn);
//接続にしっぱいしたらメッセージを表示して終了します。
if (DB::isError($conn)) {
die($conn->getMessage());
}
$sql = <<<EOS
SELECT * FROM member
if($a_1 == "ある"and $b_1 == "ある"and $c_1 == "ない"and $d_1 == "ある" $e_1== "ある")
{
$sql = $sql . " WHERE id BETWEEN 2 AND 4;";
}
$result = $conn->query($sql);
if (DB::isError($result)) {
die($result->getMessage());
}
$count = $result->numRows();
print "検索結果は".$count."件です。<BR>";
if($count>0){
?>
<TABLE width="450" border="1" cellspacing="0" cellpadding="8">
<TBODY>
<TR><TH>番号</TH><TH>氏</TH><TH>名</TH><TH>年齢</TH></TR>
<?php
while($rs = $result->fetchRow(DB_FETCHMODE_ASSOC))
{
?>
<TR><TD align="center"><?=$rs['id']?></TD>
<TD><?=$rs['last_name']?></TD>
<TD><?=$rs['first_name']?></TD>
<TD align="center"><?=$rs['age']?></TD></TR>
<?php
}
?>
</TBODY></TABLE>
<?php
}
$result->free();
$conn->disconnect();
?>
</body>
</html>
です。
解決策を教えて下さい。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
exit;の処理はご存知の通り、そこで処理を終了するということです。
つまり、処理を終了させた場所までのソースに画面表示系のものがない場合、画面は真っ白になります。
しかし、画面が真っ白=エラーも出ていない、ということになるので、そこまでのソースに問題はないということにもなりますね。
> DB Error: syntax error
このエラーはSQLの文法ミスの場合に出ます。
SQLの作成が終わったら、
echo $sql;
exit;
を書いてSQL文の表示をして確認をしてみると、何か解決につながるかもしれませんよ。
No.6
- 回答日時:
32行目のif文ですが、エラーの通り、中に『;』がありますね。
if文の判定部分にあってはならない文字なので、消しましょう。
それと、SQLを使わない判別の時は~とおっしゃってますが、SQLはこのソースでは最初から使われています。
SQLの意味やif文の基本的な書き方がわからないようですし、もしかするとtaku3510さんにはまだ、このコーディングは難しいかもしれません。
もう少し簡単なプログラミングから始めると、きっと上達も早いと思いますよ。
回答ありがとうございます。
そうですね。自分でもちょっと難しいかなっと思っているのですが、本一冊だけを参考には限界があります。
今回はなんとか動くようになりましたが、もっと難しいのになるとしんどいですね。
アドバイスありがとうございました。
No.5
- 回答日時:
if($a_1 == "ある" and $b_1 == "ある" and $c_1 == "ない" and $d_1 == "ある" and $e_1== "ある";)
条件の最後に ; が・・
No.4
- 回答日時:
連投になって申し訳ないのですが、ソースを見てふと思ったので。
>$sql = <<<EOS
>SELECT * FROM member
この部分ですが、ヒアドキュメントを使わずに、普通に
$sql = "SELECT * FROM member";
と書いてもよいのではないでしょうか。
もちろん、追加した『EOS;』も外してください。
今の状態だと、SQLの中にif文が入ってしまっているような気がします。
この回答への補足
プログラムを変えてみると、Parse error: syntax error, unexpected ';' in C:\xampp\htdocs\iiko.php on line 32とエラーが出てきました。
if (DB::isError($conn)) {
die($conn->getMessage());
}
$sql = "SELECT * FROM member";
※if($a_1 == "ある" and $b_1 == "ある" and $c_1 == "ない" and $d_1 == "ある" and $e_1== "ある";)※
{
$sql = $sql . " WHERE id BETWEEN 2 AND 4;";
}
$result = $conn->query($sql);
if (DB::isError($result)) {
die($result->getMessage());
}
32は※の行なので、IF文がおかしいみたいです。
SQLを使わない判別の時は、このIF文で動いたのですが、SQLを使う時は、何か変えなければいけないのでしょうか?
No.2
- 回答日時:
> DB Error: syntax error
その名の通りDBのエラーでしょう。
connect, query, fetch のどこでエラーが出ているのか
exitで止めたりしながらまずは発生箇所を見極めてください。
デバッグはコードの上達に不可欠だと思いますよ。
この回答への補足
exitを書きながら進めていくと、
$dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName";
$conn = DB::connect($dsn);
※exit;※
$sql = <<<EOS
SELECT * FROM member
と、
$sql = <<<EOS
SELECT * FROM member
if($a_1 == "ある"and $b_1 == "ある"and $c_1 == "ない"and $d_1 == "ある" $e_1== "ある")
{
$sql = $sql." WHERE id BETWEEN 2 AND 4;";
EOS;
※exit;※
$result = $conn->query($sql);
if (DB::isError($result)) {
die($result->getMessage());
}
の二箇所でエラーも何も表示されずに、真っ白になりました。
これは、何をあらわしているのでしょうか?
No.1
- 回答日時:
>on line 61
61行目にエラーがあると書いてあります。
60行目のけつに「;」をつけ忘れている可能性があります
この回答への補足
プログラムを以下の※の部分を加えるとParse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\iiko.php on line 61
が消えました。
if($a_1 == "ある"and $b_1 == "ある"and $c_1 == "ない"and $d_1 == "ある" $e_1== "ある")
{
$sql = $sql . " WHERE id BETWEEN 2 AND 4;";
※EOS;※
しかし、DB Error: syntax errorという画面が表示されてしまいました。これは、どこがおかしいのでしょうか?
解決策を教えてください。
よろしくおねがいします。
回答ありがとうございます。
61行目というう事は※のところがおかしいって事ですよね?
<?php
while($rs = $result->fetchRow(DB_FETCHMODE_ASSOC))
{
?>
※<TR><TD align="center"><?=$rs['id']?></TD>※
<TD><?=$rs['last_name']?></TD>
<TD><?=$rs['first_name']?></TD>
<TD align="center"><?=$rs['age']?></TD></TR>
<?php
}
?>
</TBODY></TABLE>
<?php
}
$result->free();
$conn->disconnect();
?>
</body>
</html>
?>の前などに「;」をつけて見てもエラーが消えません。
「;」をつけるところが間違っているのでしょうか?
根本的に※から下のプログラムの構造がおかしいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP php ログイン 1 2022/11/01 00:24
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームでのリセットを使う方法
-
PHP ボタンが押されたら処理を...
-
ラジオボタンをsessionで使いたい
-
HTMLで前の画面に戻る時、入力...
-
検索時の選択内容を保持する方法
-
<input type="hidden" >で配列...
-
ラジオボタンを押すと、表示が...
-
【HTML(PHP?)】複数のフォーム...
-
PHPで、ボタンを押すと同じペー...
-
フォームへの前回入力値をクリ...
-
適性診断テストみたいなものを...
-
エラーを元の画面に表示させるには
-
phpで分からないエラーが出てし...
-
チェックボックスがチェックさ...
-
フォームに入力された値を計算...
-
フォームの内容をクッキーに保...
-
チェックボックスの必須項目指定
-
PHP・MYSQLで複数のチェックボ...
-
チェックボックスによる検索
-
PHPでフォームデータをサンクス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<input type="hidden" >で配列...
-
HTMLで前の画面に戻る時、入力...
-
PHPでユーザー情報を入力して簡...
-
PHP ボタンが押されたら処理を...
-
PHPとHTML+Xamppの掲示板で画像...
-
syntax error, unexpected '}' ...
-
検索時の選択内容を保持する方法
-
PHPでCookieを使った訪問回数に...
-
チェックボックスによる検索
-
フォームでのリセットを使う方法
-
PHPで画像の渡しが上手く行きま...
-
チェックボックスによる検索(...
-
フォームへの前回入力値をクリ...
-
フォームボタンを押すたびに数...
-
php mysql でチェックボックス...
-
PHPの関数実行
-
phpで分からないエラーが出てし...
-
PHPで、ボタンを押すと同じペー...
-
ラジオボタンをsessionで使いたい
-
入力フォーム→確認画面→送信画...
おすすめ情報