PHPプログラミングでホームページの画面表示方法を解説

このQ&Aのポイント
  • PHPプログラミングを使用してホームページの画面表示方法をご紹介します。MySQLのテーブルからデータを読み込み、それをオプションメニューに表示する方法を解説します。
  • MySQLのテーブルからカテゴリデータを取得し、ABC順に並べてホームページの画面に表示する方法を解説します。
  • PHPプログラミングを利用して、ホームページの画面表示方法をカテゴリ名のABC順に並べる手順を解説します。
回答を見る
  • ベストアンサー

PHPプログラミングについて、ホームページの画面表示方法を教えてくださ

PHPプログラミングについて、ホームページの画面表示方法を教えてください。 (テーブルのid順以外に並べる方法) ・MySQLのテーブル名:category、フィールド2つ:idとname 1)すべてのカテゴリを読み込むSQLを組み立て $sql = "SELECT * FROM category"; 2)結果セットを取得し $rst = mysql_query($sql, $con); 3)オプションメニューを組み立て $stroption = ""; while ($col = mysql_fetch_array($rst)) { $stroption .= "<OPTION value='$col[id]'>$col[name]</OPTION>"; } 4) <SELECT name="categoryid"> <OPTION value="0" selected>--カテゴリ--</OPTION> <?=$stroption?> </SELECT> 結果→id順になる これをnameのABC順に並ぶようにする方法を ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 教えていただけないでしょうか? 是非よろしくお願いしたします。

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

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

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

$sql = "SELECT * FROM category order by name"; とするといかがでしょうか。

kksshhjp
質問者

お礼

TO:TANAKAHIRO様 ご回答ありがとうございました。返事遅くなりまして申し訳ございません。 おかげさまで解決できました。 ありがとうございました。

その他の回答 (1)

  • aigaion
  • ベストアンサー率47% (287/608)
回答No.1

一番簡単なのがSQLクエリの時点でソートして結果をもらう方法 $sql = "SELECT * FROM category ORDER BY name"; SQLとかめったに使わないのでこれで良いかわかりませんけど・・・ あとは、クエリの結果を配列なりに保存してasort関数などでソートするとかですね。

kksshhjp
質問者

お礼

TO:AIGAION様 ご回答ありがとうございました。 返事遅くなりまして申し訳ございません。 他の方法も呼んでみたいと思います。 ありがとうございました。

関連するQ&A

  • 別画面から遷移してきた時はDBを読み、それ以外のときはPHP_SELFを使いたい

    http://oshiete1.goo.ne.jp/kotaeru_thanks.php3?a=7486449 の#3さんにご提示いただいたサンプル(→update.phpとします)を 組み込んでみたのですが、 投稿者名<input type="text" name="name" value="{$_POST["name"]}">{$errStr["name"]}<br> の「value=""」の値について、 update.phpに遷移してきた際は、↓みたいなプロセスを経てMySQLから 読み込んだ$col["name"]を直に表示させたいです。 $myID = GetmyID(); $con = mysql_connect(localhost, root, pw); $selectdb = mysql_select_db(serv, $con); $sql = "SELECT * FROM MyTab WHERE ID = '$myID'"; $rst = mysql_query($sql, $con); $col = mysql_fetch_array($rst); $name = $col["name"]; その場合、冒頭の#3さんのサンプルの value="{$_POST["name"]}" …を、 value="if (PHP_SELFでなく別画面から遷移してきて表示する場合) {   {$_POST["name"]} } else {   {$_POST["name"]} }" みたいに分岐すればいいのではないかと思いますが、 「PHP_SELFでなく別画面から遷移してきて表示する場合」の判断は どのようにしたらできますでしょうか。

    • ベストアンサー
    • PHP
  • 複数のデータベースを使う場合

    php4 + MYSQL4.0.2で作業しています。 1つのサーバーにある、複数のデータベースに接続する方法を教えてください。 DB1:テーブルhoge(ID、name) DB2:テーブルhogehoge(ID, hogeID, comment) このような場合、データベースが全てDB1に入っているとすれば、 $con = mysql_connect(host, user, pass); sql="SELECT name, comment" . " FROM hogehoge INNER JOIN hoge ON hogehoge.hogeID = hoge.ID"; $rst = mysql_db_query(DB1, $sql, $con); $col = mysql_fetch_array($rst); print($col['name'] . $col['comment']); となりますが、 テーブルhogeとhogehogeが、異なるデータベースに存在する場合はどのようにすればよいのでしょうか? 以上、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • 一行目のレコードを2度表示させたい。

    レコードを読み込むのとは別に、最終書き込み者(ソートした最初のレコード)を表示させたいのですが、mysql_fetch_array($rst)を読み込ませると1位行目が消え、次ぎにmysql_fetch_array($rst)が読み込む時には2行目からになります。 ------------------------- 最終書き込み者 一太郎さん「一番目のタイトル」 -レコードの一覧- □一太郎 一番目タイトル □次郎  2番目のタイトル □佐武郎 三番目のタイトル ------------------------- としたいのですが。 SQLを2度実行すればできるのですが、無駄な処理な気もします。 別のテーブルやこの情報だけtextに保存するのも無駄な気もするし。 //一番目をゲット $sql = "select * from siritori order by db_no desc limit 1;"; $rst = mysql_query($sql,$con); //$rst2 = $rst; $col = mysql_fetch_array($rst); print "最終書き込み者".$col["name"]."さん".$col["title"]."<hr>"; //一覧を表示 $sql = "select * from siritori order by db_no desc limit 10;"; $rst = mysql_query($sql,$con); //SQL配列読み込み(select文) while($col = mysql_fetch_array($rst)){ print $col["name"]."さん".$col["title"]."<br>".$col["kome"]."<hr>";} //$rst2 = $rst; 配列をコピーできないかなー?とかもやったのですができない。 なんとか巧い解決方法はないでしょうか? 連想配置や、MySQLには詳しくないのでお教えください。

    • ベストアンサー
    • MySQL
  • テーブルの最後のレコードしか表示されない

    すごく初歩的な質問だと思い申し訳ないのですがご教授下さい。 タイトル通り、テーブルの最後のレコードしか表示されないのです。 この前までは全て表示できていたのですが、 どこをどういじったのか、このようなことになってしまいました。 itemというテーブルには53個登録があり、53番目のものしか表示されません… $sql = "select * from item order by id"; $rst = mysql_query($sql, $con); while($col = mysql_fetch_array($rst)) { $dbt = "<tr bgcolor='#FFFFFF'> <td align='center'><a href='use.php?key=".$col["name"]."'>".$col["name"]."</a></td> <td align='center'>".$col["name1"]."</td> <td align='center'>".$col["name2"]."</td> <td align='center'>".$col["name3"]."</td> <td align='center'>".$col["name4"]."</td> <td>".nl2br($col["name5"])."</td> <td align='center'>".$col["name6"]."</td> </tr>"; } mysql_free_result($rst); $con = mysql_close($con); それと、もう一つ解決したいことがあるのですが、 <a href='use.php?key=".$col["name"]."'>".$col["name"]."</a> のようにアンカーを張り、次のページに変数を渡す方法で、use.php?key=*****のように、表示させないことは可能でしょうか? 見た目にも悪いですし、セキュリティ上も好ましくないかと思いまして方法があればと思いました。

    • ベストアンサー
    • MySQL
  • チェックボックスでチェックした配列の値をDBに。

    チェックボックスでチェックした配列の値を データベースのカラム名と照らし合わせて 一致する所に「1」を入れたいのですが、うまくいきません。 PHP Version 5.1.6 MySQL - 5.0.45 で運用しています。 どうしたら、入れることができるでしょうか? ご教授、よろしくお願いいたします。 1 送るページ $sql = "select * from `class_tbl`"; $rest = mysql_query($sql, $con); while($col = mysql_fetch_array($rest)) { $classID = $col["classID"]; $class_name = $col["class_name"]; $sql = "select * from `member_sub_tbl` where `ID` ='$ID'"; $rst = mysql_query($sql, $con); while($col = mysql_fetch_array($rst)) { $kekka = $col["$classID"]; if($kekka==1) { echo <<<EOF <input type="checkbox" name="classID[]" value="$classID" checked/> $class_name EOF; } else{ echo <<<EOF <input type="checkbox" name="classID[]" value="$classID" /> $class_name EOF; } } } echo <<<EOF <input name="ID" type="hidden" value="$ID" /> EOF; 2 受けるページ $ID=$POST["ID"]; $classID=$POST["classID"]; var_dump($_REQUEST); 以下のように表示しています。 array(3) { ["classID"]=> array(10) { [0]=> string(4) "1010" [1]=> string(4) "1050" [2]=> string(4) "1110" [3]=> string(4) "1182" } ["sn"]=> string(2) "45" ["PHPSESSID"]=> string(32) "********************" } 「ID」の行に、配列の「1010」「1050」と 「member_sub_tbl(テーブル)」の「カラム名」を比較して、一致する所に「1」を入れたいのですがうまくいきません。 ※update をしたいのです。 試行錯誤していますが、方法が分かりません。 ご教授、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP+MYSQLで直近3件のデータ表示

    直近のデータを3件表示するのに $sql =" select * from テーブル order by フィールド(date型) desc limit 3" ; だとうまくいくのですが DATETIME形に変えるとうまくいかないのは、何か変な事してますでしょうか? $sql =" select * from テーブル order by フィールド(datetime型) desc limit 3" ; 他の箇所は両方とも全く一緒です。 データは入れてあります。 宜しくお願いいたします。 全文は書けなかったので <?php require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $sql =" select * from mem order by rupdate desc limit 3" ; $rst = mysql_query($sql, $con); $recmax = mysql_num_rows($rst); $body = "<B>$recmax 件のデータがみつかりました。</B>"; $body .= "<TABLE border='1' cellpadding='2' cellspacing='0'> <TR> <TH bgcolor='#00CCCC'>会員ID</TH> <TH bgcolor='#00CCCC'>会員名</TH> <TH bgcolor='#00CCCC'>性別</TH> <TH bgcolor='#00CCCC'>ジャンル</TH> <TR>\n"; while($col = mysql_fetch_array($rst)) { $body .= "<TR>\n"; $body .= "<TD>" . $col["id"] . "</TD>\n"; $body .= "<TD>" . $col["name"] . "</TD>\n"; $body .= "<TD>" . $col"seibetu"] . "</TD>\n"; $body .= "<TD>" . $col["cate"] . "</TD>\n"; $body .= "</TR>\n"; } $body .= "</TABLE>\n"; mysql_free_result($rst); $con = mysql_close($con); ?> 以下 <?= $body ?> を貼り付けています

    • ベストアンサー
    • PHP
  • 別テーブルからselectした値を他のテーブルにinsertしたいのですが、上手くできません

    以下のように行ったのですが、 全ての値が別テーブルにinsertされません。 $sql = "SELECT tbl_A.id, tbl_A.data FROM tbl_A "; $rst = mysql_query( $sql ); while ( $col = mysql_fetch_array( $rst ) ) { $sql = "INSERT INTO tbl_B (          date, id, data ) VALUES ( '" . date( 'Y-m-d' ) . "', '" . mysql_real_escape_string( $col['id'] ) . "', '" . mysql_real_escape_string( $col['data'] ) . "' )"; } このやり方では、テーブル内の1つの値しかinsertされません。 selectされた全ての値をinsertするにはどのようにしたら良いのでしょうか? よろしくお願いします。 DB:mysql5 SP:php5

    • ベストアンサー
    • MySQL
  • mysqlからphpに表示ですべての項目を出したい

    phpとmysqlの勉強をしているのですが、出したい項目がでてきてくれません。 今mysqlでidとnameとpriceの項目を作っているのですが、以下だとどうしてもnameしか出てきてくれません。 どうすれば3つの項目がでてくれますでしょうか? よろしくお願いします。 <?     mysql_connect('localhost' , 'root' , '') or die(mysql_error());     mysql_select_db('db1'); mysql_query('SET NAMES UTF8'); $sql="SELECT * FROM syouhin"; $res=mysql_query($sql); $options=""; while($row = mysql_fetch_array($res,MYSQL_ASSOC)){ $options.="<input type=\"radio\" name=\"syouhin1\" value='{$row['id']}' checked>        {$row['name']}\n<br>"; } $select="{$options}</select>\n";     print $select; ?>

    • ベストアンサー
    • PHP
  • リストから詳細画面に遷移するためのリンク作成と詳細画面の表示

    PHP5とMySQL4.0の組み合わせで、初歩的なことがわかりません。 例えば、(1)社員IDと、(2)年齢、(3)名前をリストアップする画面があるとして、 IDのところをハイパーリンクにして、それを押すとその社員の レコード内容を更新する画面を出す、みたいなことをしたいのですが、 これって method="POST" でなく、GETでやるのですよね? 「IDのリンク」とは、<a href="syain_detail.php?id=100">みたいなカタチに なるのでしょうが、具体的なスクリプトでご教示いただけないでしょうか。 単純に(IDへのリンクを考えずに)DBのレコードをPOSTでざーっと リストアップするHTMLまではできるのですが、 IDをハイパーリンクにして次の画面を構成するPHPがさっぱり わからないのです。下記、DBのサンプルと、わたしにわかるスクリプトです。 --------syainmaster---------- id   age  name ---------------------- 100   20   suzuki 200   24   sato 300   30   tanaka ----------------------- <?php   $con = mysql_connect(localhost, root, mypass);   $selectdb = mysql_select_db(mydb, $con);   $sql = "select * from syainmaster";   $rst = mysql_query($sql, $con);   $recmax = mysql_num_rows($rst);   $body = "<TABLE>";   for ($recnum = 0; $recnum < $recmax; $recnum++) {     $col = mysql_fetch_array($rst);     $body .= "<TR>";     $body .= "<TD>" . $col["id"] . "</TD>";     $body .= "<TD>" . $col["age"] . "</TD>";     $body .= "<TD>" . $col["name"] . "</TD>";     $body .= "</TR>";   }   $body .= "</TABLE>";   $con = mysql_close($con); ?> <HTML> <BODY> <?= $body ?> </BODY> </HTML>

    • ベストアンサー
    • PHP
  • PHP+MySQL データが無い時のみ追加したい

    PHP+MySQLで簡単なページカウンタを作っていますが、どうも正常に動いてくれません。 カウントを取りたいページに <IMG src="count.php?pagename=サンプルページ"> としてページネームを渡してあります。 count.phpの主要部分は //ページネームを取得(例:サンプルページ) $pagename = $_GET["pagename"]; とし、データベースに接続したあと // データ取り出し $sql = "SELECT name, count FROM shukei ORDER BY count;"; $rst = mysql_query($sql, $con); //データをループで読み込み while ($col = mysql_fetch_array($rst)) { $name = $col[name]; //渡されたページ名がDB内にあればカウント1増 if($name == $pagename){ $sql = "update shukei set count = count + 1 where name = '$name'"; } //渡されたページ名がDB内に無ければ新規追加 elseif($name != $pagename){ $sql = "INSERT INTO shukei(name,count) values(\"$pagename\",1)"; } } mysql_query($sql, $con); //接続解除 mysql_free_result($rst); $con = mysql_close($conn); としています、どんどん新規で追加されていってしまいます。 DB内にページ名が存在するならカウントアップをし、無い時はカウント1として新規追加をさせたいのですが…。 テーブル名はshukeiで id,name,count としております。 何か根本が間違っているのでしょうか。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • PHP