ポータルサイトの詳細画面作成について

このQ&Aのポイント
  • ポータルサイトの詳細画面の作成方法について質問です。
  • 現在ポータルサイトの詳細データの表示が手間取っています。
  • ディテイル画面のフィールド表示方法についてアドバイスをお願いします。
回答を見る
  • ベストアンサー

【PHP・SQL】ポータルサイトの詳細画面について

現在ポータルサイトの最終的な詳細データが表示させる ディテイルページを作成しているのですが、 なにぶん表示させる項目数が莫大なため、 とても手間取っています。 データベースからフィールドの内容を呼び出す if(array_key_exists("フィールド名", $row)){ echo $row["フィールド名"]; } みたいな感じなのを 1フィールド1フィールド何個も何個も書いてるのですが、 基本的にポータルサイトのディテイル画面は 1フィールド1フィールド丹念にいくつも 書いてかないといけないものなんでしょうか。 同じような記述を10個も20個も書いてると さすがにもっといい方法があるんじゃないかと思い 質問させていただきました。 もっとスマートな記述方法があればアドバイスよろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

この「面倒くさい」作業をどこまでを面倒くさいとするか、なんですけど、例えば下記のような方法 <?php $var_defines = array( 'head' => array('filed名', 'field名'), 'photo'=> array('field名', 'field名'), ); //といった感じで、語群リストのようなものを作っておいて、 //可変変数を使って変数を展開する。 foreach($var_defines as $key => $fields){ foreach($fields as $field){ ${$key . "_" . $field} = isset($row[$field]) ? $row[$field] : ""; //つまり、$key = 'head', $field = 'name'だったら、 //$head_nameという変数が作られ、そこにフィールドの値が代入される。なければ空文字が代入される } } //とここまでやったなら、使いたい変数は先に定義されている物からチョイスされるはずなので //単純な変数で取得できるようになります。 echo $head_name; echo $photo_smallimage; //みたいなね。 ?> 先に定義したい内容の塊(設定的な物)を書いておいて、設定によって書き換えて、その値が存在していることを約束させちゃえば、毎回issetとか、array_key_existなんかで、あるかどうかを確認しないですむので、HTMLに挿入したいテンプレート側ではある程度スマートにかける、とかそういう感じです。

その他の回答 (1)

回答No.1

その情報だけではなんとも言えないんですが、 <?php foreach($row as $value){ echo $value; } ?> でもフィールドの内容を呼び出せそうです。 ある特定の項目は、横並びにしなければいけないとか、変則的なルールがあったりすると、また別の方法を考えなければいけないと思いますが。

yuzuru0024
質問者

補足

結構変則的です…。 リンクになってたりなってなかったり 写真を表示したり…。 foreachに掛ける前に、連想配列名を $row['head_フィールド名1'] $row['head_フィールド名2'] $row['head_フィールド名3'] $row['photo_フィールド名4'] $row['photo_フィールド名5'] $row['photo_フィールド名6'] とジャンル名を付け加える方法が思いつきましたが 連想配列名を再定義するのが結構な作業で あんまり、意味ないような気もして 迷っているところです。

関連するQ&A

  • SQL+PHP,セレクト文、シンプルwhile文法

    SQL+PHPでサイト制作をしております データベースからセレクト文でデータを引っ張りたいのですが、当方、プログラム初心者のため稚拙な記述方法しか浮かばず困っております。どなたかお力をお貸し願えたらと存じます。 【内容】 テーブルにa1~a80までのフィールドがあり、それぞれにレコードがあります。 【例】 $sql = "SELECT * FROM テーブル名 WHERE フィールド名 LIKE '$xxx'"; $dyn = mysql_query($sql); while($row = mysql_fetch_array($dyn)){ ////この部分の記述方法 } mysql_close($cn); 単純に $a0 = $row['a0']; $a1 = $row['a1']; $a2 = $row['a2']; $a3 = $row['a3']; $a4 = $row['a4']; $a5 = $row['a5']; $a6 = $row['a6']; $a7 = $row['a7']; ・ ・ ・ として、セレクト文からwhileにて必要に合わせPHPを書いているのですが繰り返し受け取るプログラムがシンプルな記述ができません。 できましたら、フィールド数が多いので長くなりがちな記述を短くしたいと考ええています。 forやfordach、またはarrayを使ってはみたのですが、$row['axx']の部分がネックとなりうまく記述することが出来ません。 困っております。お力添え、宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • MySQLにSQLを実行できない

    こんにちは。 今MySQLを勉強中なのですが、以下のようなエラーが解決できずに困っています。 どなたかお助けよろしくお願いいたします。 状況と致しまして、 レンタルサーバーにphpMyAdminを設置し 管理者に与えられたデータベースに「MLB」というテーブルを作成(特権なし)しました。 そこで以下のような単純なphpを組んで読み込んで見ることにトライしたのですが <?php //サーバーに接続 $my_Con = mysql_connect("localhost","データベース名","パスワード"); if($my_Con == false){ die("MYSQLの接続エラー"); }else{ echo "接続成功<br>"; if(mysql_select_db("データベース名",$my_Con)){ echo "データベースにアクセス成功<br>"; $my_Row = mysql("SELECT * FROM MLB",$my_Con); if(!$my_Row){ die(mysql_error()); } while($row = mysql_fetch_array($my_Row)){ echo $row["id"]; echo $row["stadium"]; echo "<br>"; } }else{ die("データベースへのアクセスエラー"); } } ?> 以下のようなエラーが出てしまい解決できない状態です。 接続成功 データベースにアクセス成功 Access denied for user 'データベース名'@'localhost' to database 'SELECT * FROM MLB' これは特権なしが影響しているのかな?とも考えたのですが、 調べてみた所、 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ root で接続をしようとする場合に、次のようなエラーが出るときには、'root' の User フィールドに、user テーブルのエントリがないことを示します。そのため、mysqld がクライアントのホスト名を識別できない状態です。 Access denied for user ''@'unknown' to database mysql この場合、--skip-grant-tables オプションでサーバを立ち上げ、/etc/hosts ファイル、または \windows\hosts で、ホストのエントリを付加します。 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 解決になるらしいのですが、これはレンタルサーバー側に何か問題があるということでしょうか? どのように解決すればよいか、どなたかご教授をよろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • PHP + MySQLを使用して詳細画面を開く

    いま下記のソースで一覧画面が表示されます! 氏名をクリックしたら別ウインドウで詳細画面を表示させたいのですがやり方がわかりません 参考までに教えてください <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>一覧画面</title> </head> <body> <BLOCKQUOTE> <BR>一覧画面<BR><BR> <?php $con=mysqli_connect("localhost","root","password","db_test"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $result = mysqli_query($con,"SELECT * FROM tbl_test"); echo "<table border='1'> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> </tr>"; while($row = mysqli_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['番号'] . "</td>"; echo "<td>" . $row['氏名'] . "</td>"; echo "<td>" . $row['住所'] . "</td>"; echo "</tr>"; } echo "</table>"; mysqli_close($con); ?> <BR><BR><BR> <A HREF="http://localhost/regist.php"> <INPUT TYPE = "SUBMIT" VALUE = "新規登録"></A> </BLOCKQUOTE> </body> </html>

    • ベストアンサー
    • MySQL
  • php

    while($row = mysql_fetch_array($res,MYSQL_NUM)) { echo $row[1]."\n"; ここの文字コードを調べたいのですがどう書いたらいいでしょうか? 又参考になるサイトがありましたらお願いします

  • php+mysqlでポータルサイトを作りたい

    php+mysqlでポータルサイトを作りたいと思っているのですが、 今データベースを構築しようと思いまして 仮にsalonlistというテーブルを作って そこのフィールドとして name(お店名)、nameyomi(お店読みがな)、category(カテゴリー)、area(エリア) の4つを作りました。 そこで次に 各お店のテーブル 例えば、aaa(AAA美容室)とします。 aaaの中にフィールドで name、nameyomi、tel、address、time、campain1name、campain1naiyou… と作っていったとして、salonlistとaaaのnameの内容がかぶるので 修正するのなら2つのテーブルを修正することになりますよね? だとするとsalonlistにすべてお店内容まで書いていった方がいいと言う事になります? どっちが利便性がいいのでしょうか?

    • ベストアンサー
    • PHP
  • ポータルについて

    Windowsでファイルメーカー6を使用しています。 ポータルなんですが、見積書に応用を考えています。 Aデータベースは見積書。 顧客名と日付と合計金額。内容はポータル Bデータベースには 日付、顧客名、品名、数量、単価、金額を 入力できるようにしています。 Aから日付でBをリレーションを組み、それをポータルで 表示しようと考えます。 しかし、Aで入力したものはBに反映されていくはずですが、 日付でどんどん入っていくことに関して、 顧客名がBに反映されません。 Aのポータル内で顧客名を入力したくないので どのようにすればよいか教えてください。

  • PHPの記述内容

    以下の記述内容と意味が分からず困っています。初心者にも分かりやすく教えていただけないでしょうか。 <?php // 読み込み $file = 'side.html'; if(file_exists($file)){ $content = file_get_contents($file); $content = preg_replace(array("/\r\n|\n\r|\n|\r/", "/'/"),array("", "\'") , $content); echo 'document.write(\'' . $content . '\');'; } ?>

  • ポータルについて教えてください。

    現在ポータルについて調べていますが よくわかりません。情報データベースの 入り口というのはわかるのですが、 具体的なイメージがわかりません。 ポータルについて、 その基礎知識 具体的な商品名 その効果(TCO削減数値など) わかりやすく書かれているサイトを 知っていたら教えてください。 よろしくお願いします。

  • phpでのhtmlタグの表示方法

    データベースのデータをphpで表示する際に echo "<table border=\"1\">"; echo "<tr>"; echo "<td>参考書名</td>"; echo "<td>解説</td>"; echo "</tr>"; while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { echo "<tr>"; echo "<td>".cnv_enc($row["publish"], $enc_disp, $enc_db)."</td>"; echo "<td>".$row["ninki"]."</td>"; echo "</tr>"; } echo "</table>"; こんな感じでechoを使って配列に格納して表示しているのですが、この際に echo "<a href="http://aaa.com/">test</a>" みたいな、URLを表示するタグを組み込むと、エラーが出ているのか、表示画面が真っ白になってしまいます。 何分初心者なもので、くだらない問題だと思いますが、色々<a href以下をいじくってもなかなか改善できません。 phpとhtmlで分けて記述すれば簡単なのですが、データを一覧表示する際に分けられるのかもちょっと分かりません。 とりあえずechoを使って<a href="">みたいなタグを表示するやり方を知りたいという感じです。 くだらない質問かと思いますが何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • php+MySqlでの検索結果について

    以下のソースで検索結果が表示されるのですが、検索結果が多数ある場合、例えば10件ずつ表示して「次へ」「前へ戻る」「最終頁」等のリンクを貼る方法が分かりません。 また、検索結果から並べ替え(データの更新日時等から)も出来ればと思い質問させていただきました。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>検索</title> </head> <body> <?php # 入力値に不正なデータがないかなどをチェック。 function checkInput($var) { if (is_array($var)) { return array_map('checkInput', $var); } else { if (get_magic_quotes_gpc()) { // magic_quotes_gpc対策 $var = stripslashes($var); } if (preg_match('/\0/', $var)) { // NULLバイト攻撃対策 die('不正な入力です。'); } if (!mb_check_encoding($var, 'UTF-8')) { // 文字エンコードの確認 die('不正な入力です。'); } return $var; } } function h($string) { // HTMLでのエスケープ処理をする return htmlspecialchars($string, ENT_QUOTES); } # POSTされたデータをチェック。 $_POST = checkInput($_POST); // データベース設定 $dbServer = 'localhost'; $dbUser = 'user'; $dbPass = 'password'; $dbName = 'sample'; $flag = TRUE; // MySQLデータベースに接続 if (!$link = mysql_connect($dbServer, $dbUser, $dbPass)) { $flag = FALSE; } // データベース選択 else if (!mysql_select_db($dbName, $link)) { $flag = FALSE; } // 文字エンコードの指定(PHP5以降かつMySQL 4.1以降) else if (!mysql_set_charset('utf8', $link)) { $flag = FALSE; } # $flagの値の判定 if ($flag === FALSE) { echo 'データベースエラー'; } else if (isset($_POST['data'])) { $data = $_POST['data']; $dataList = explode(' ', mb_convert_kana($data, 's')); $sql = 'SELECT * FROM search WHERE 1'; foreach ($dataList as $word) { if ($word == '') continue; $sql .= sprintf(" AND data LIKE '%s'", '%' . mysql_real_escape_string($word) . '%'); } echo '<p>SQL: ' . h($sql) . '</p>'; $query = mysql_query($sql, $link); if (!$query) { echo 'データベースエラー'; } else if (mysql_num_rows($query) == 0) { echo '<p>「' . h($data) . '」はデータベースに登録がありません。</p>'; } else { echo '<p>「' . h($data) . '」はデータベースに登録がありました。</p>'; echo '<p>検索結果</p>'; echo '<table border="1">'; echo ' <tr>'; echo ' <th>ID</th>'; echo ' <th>データ</th>'; echo ' </tr>'; while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) { echo ' <tr>'; echo ' <td>' . h($row['id']) . '</td>'; echo ' <td>' . h($row['data']) . '</td>'; echo ' </tr>'; } echo '</table>'; } $sql = 'SELECT * FROM search'; $query = mysql_query($sql, $link); if (!$query) { echo 'データベースエラー'; } else { echo '<p>データベースの内容一覧</p>'; echo '<table border="1">'; echo ' <tr>'; echo ' <th>ID</th>'; echo ' <th>データ</th>'; echo ' </tr>'; while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) { echo ' <tr>'; echo ' <td>' . h($row['id']) . '</td>'; echo ' <td>' . h($row['data']) . '</td>'; echo ' </tr>'; } echo '</table>'; } } ?> <form method="post" action=""> <p>検索ワードを入力して下さい</p> <input type="text" name="data" /> <input type="submit" value="検索する" /> </form> </body> </html> このソースのどの部分に記述してよいのか等も含めてご伝授頂きたく思います。 宜しくお願いします。

    • ベストアンサー
    • MySQL