- 締切済み
PearDBで項目を1回だけ適切に表示するには?
何度もお問い合わせし申し訳ありません。本日2度目の問い合わせです。 MySQL + PearDBでコンテンツを作っています。 テーブルのカラムは「ID、都道府県名(pre_name)、都道府県ID(pre_no)、市町村名(p_name)、市町村ID(p_no)、会社名(company).....」です。 完成イメージは下記です。 ●ユーザーは都道府県IDをGETする。 ●都道府県名がヘッダーのタイトルに掲載される。 ●指定した都道府県下の市町村の一覧が表示される ●その一覧にあるリンクをクリックすると、市町村内のホテル一覧に飛ぶ そこで作ったのが下のソースです。 ヘッダーでは、GETされた任意のpre_noに基づき、抽出されたpre_nameを1つだけ表示する。 本文では、GETされた任意のpre_noに基づき、抽出された市町村名を1回だけ表示する(その市町村名にはリンクが張られており市町村ごとのホテルページへ飛ぶことが可能) 【結果】 【ソース1】の場合 市町村名へのリンクが、登録会社の数だけ出現! (表示数を指定しないためここまでは当たり前です) ここから、繰り返しさえ制御できれば完成のはずです。 ここで対策としてfetchOneを使おうとしたのですが、fetchOneはMDBからの機能のようでpearDBでは使えません。 ということで、【ソース2】の表示数を指定することにしました。 $rs=$db->limitQuery("SELECT * FROM reform_co where pre_no = '" .addslashes($_GET['pre_no'])." ORDER BY p_no ASC",1,1); しかし今回の使用用途では何故か Parse error: syntax error, unexpected $end in になります。 どなたか、私の間違いをご指摘いただけますでしょうか? ************************************************************ 【ソース1】(市町村名がホテルの数だけ出現) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <?PHP // サーバー情報接続 require_once '../../config_n_reform.php'; require_once '/usr/share/pear/DB.php'; $db = DB::connect($dsn); if (PEAR::isError($db)) { die($db->getMessage()); } print('接続に成功しました<br>'); $db->query('SET NAMES UTF8'); if (PEAR::isError($db)) { die($db->getMessage()); } //////GET URL表示 if(isset($_GET['pre_no'])){ $sql = "select * from reform_co where pre_no = '" .addslashes($_GET['pre_no'])."'"; } $res =& $db->query($sql); if (PEAR::isError($res)) { die($res->getMessage()); } //////タイトル表示 print<<<EOF <title> EOF; $i = 0; while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) { if ($i == 0) { print($row['p_name']); print<<<EOF のホテルのご紹介 </title> </head> <body> EOF; } $i++; //////ホテル名1回のみ表示 $rs=$db->limitQuery("SELECT * FROM reform_co where pre_no = '" .addslashes($_GET['pre_no'])." ORDER BY p_name ASC",1,1); while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) { print($row['pre_no']); //市町村へのリンク ここは機能しています //print '<a href="http://hoge.com/index1.php?p_no='; //print($row['p_no'].''); //print '">'; //print($row['p_name'].'<br>'); //print "</a><br><br>"; } $db->disconnect(); ?> </body> </html> **************************************************** **************************************************** 【ソース2】 繰り返しを制御したはずなのですが、エラー <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <?PHP // サーバー情報接続 require_once '../../config_n_reform.php'; require_once '/usr/share/pear/DB.php'; $db = DB::connect($dsn); if (PEAR::isError($db)) { die($db->getMessage()); } print('接続に成功しました<br>'); $db->query('SET NAMES UTF8'); if (PEAR::isError($db)) { die($db->getMessage()); } //////GET URL表示 if(isset($_GET['pre_no'])){ $sql = "select * from reform_co where pre_no = '" .addslashes($_GET['pre_no'])."'"; } $res =& $db->query($sql); if (PEAR::isError($res)) { die($res->getMessage()); } //////タイトル表示 print<<<EOF <title> EOF; $i = 0; while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) { if ($i == 0) { print($row['p_name']); print<<<EOF のホテルのご紹介 </title> </head> <body> EOF; } $i++; //////ホテル名表示 $rs=$db->limitQuery("SELECT * FROM reform_co where pre_no = '" .addslashes($_GET['pre_no'])." ORDER BY p_name ASC",1,1); while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) { //市町村へのリンク print '<a href="http://hoge.com/index1.php?p_no='; print($row['p_no'].''); print '">'; print($row['p_name'].'<br>'); print "</a><br><br>"; } $db->disconnect(); ?> </body> </html> ********************************************************
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- masa6272
- ベストアンサー率66% (93/140)
Parse Errorは、DBに関係ないPHPのエラーです。 閉じ括弧 } が1つ足りないだけでは?