データベースから読み込んで表示させる方法について
PHP、MySQL共に超初心者です。
説明も下手で申し訳ないのですが、どうぞご教授お願いいたします。
WEBページから小説をデータベースに登録させる管理画面をPHPで作成しております。
登録はうまくいったのですが、登録内容を一覧表示させるページで、思ったように表示させることが出来なくて困ってしまいました。
テーブルの主な内容は以下の通りです。
■genre(ジャンル名テーブル)
└【id】…数字
【genre_name】…小説のジャンル名
■novel●●(小説を入れるテーブル。●●の部分はgenreテーブルの【id】と同じ)
└【genre】…genreテーブルの【id】と同じにしてジャンル分け。
【title】…小説タイトル
【writing_date】…執筆日
【release】…0は非公開、1は公開。
やりたいことは、
【release】が1(公開)となっている【title】(小説タイトル)を、【writing_date】(執筆日)の新しい順に全て表示させ、それを【genre】ごとにまとめたテーブルに表示させる事。
(【release】が0しかないジャンルは表示させない)
です。
現在、公開設定となっていない小説しかないジャンルまでもが表示されてしまっています。
(もちろん内容がないので、ジャンル名と項目名だけが不恰好に表示されてしまいます。)
結合など色々検索して試してみたのですが、解決できずにいます。
どのような方法があるか
本当に説明下手で大変申し訳ないのですが、ご助力宜しくお願いいたします。
初心者ゆえ、どこまで説明すれば良いかもわかっておりませんので、説明不足な部分は補足させていただきます。
どうぞ宜しくお願いいたします。
■環境
MYSQL:4.0.24
PHP:5.2.6
■プログラム
<?php
$genre_sql = "select * from genre";
$genre_que = mysql_query($genre_sql);
while ($genre_row = mysql_fetch_array($genre_que)) {
$genre_id = $genre_row['id'];
$genre_id = sprintf("%02d", $genre_id);
$genre_name = $genre_row['genre_name'];
$novel_sql = "select * from novel$id order by writing_date desc limit 1";
$novel_que = mysql_query($novel_sql);
while ($novel_row = mysql_fetch_array($novel_que)) {
$novel_id = $novel_row['id'];
$novel_genre = $novel_row['genre'];
echo "▼".$genre_name. "<br>
<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td class=\"tdTitleEdi\" width=\"90%\">タイトル</td>
<td class=\"tdTitleEdi\" width=\"10%\">更新日</td>
</tr>";
$title_sql = "select * from title$genre_id";
$title_que = mysql_query($title_sql);
while ($title_row = mysql_fetch_array($title_que)) {
$title_id = $title_row['id'];
$title_name = $title_row['title_name'];
$novel_sql = "select * from novel$genre_id where genre=$genre_id and title=$title_id";
$novel_que = mysql_query($novel_sql);
while ($novel_row = mysql_fetch_array($novel_que)) {
$novel_id = $novel_row['id'];
$novel_genre = $novel_row['genre'];
$novel_title = $novel_row['title'];
$novel_writing_date = $novel_row['writing_date'];
$novel_release = $novel_row['release'];
echo "<tr>";
echo "<td class=\"tdEdiTi\">";
$novel_sql = "select * from novel$genre_id where genre=$genre_id and title=$title_id";
$novel_que = mysql_query($novel_sql);
while ($novel_row = mysql_fetch_array($novel_que)) {
echo $title_name;
echo " </td>";
}
}
}
echo "<td class=\"tdEdiLi\">";
$novel_sql = "select * from novel$genre_id where genre=$genre_id and title=$title_id order by writing_date desc limit 1";
$novel_que = mysql_query($novel_sql);
while ($novel_row = mysql_fetch_array($novel_que)) {
$year = mb_substr($novel_writing_date,0,4);
$month = mb_substr($novel_writing_date,5,2);
$day = mb_substr($novel_writing_date,8,2);
echo $year. "." .abs($month). "." .abs($day);
}
echo " </td>";
echo "</tr>";
}
}
echo "</table>\n";
}
}
?>
お礼
回答ありがとうございます。 わざわざ貴重な読書メモまで書いてくださって大感激です。 やっぱり平安貴族の記録にあるんですね。 私の記憶間違いじゃなかったことがわかって嬉しいです。 >虹は神の世界と俗界との架け橋なのでそこで市を立て神を喜ばせなくてなならぬ観念を持っていたのではないか。 >市場は境に設定されそこは神の世界に近い場所。 なるほどですねっ。 市は斎(いつき)と同義だという話を聞いたことがあるんです。 北野天満宮や東寺に市がたつのはそういうことなんですね。 また大阪天満宮や道明寺天満宮では「鷽替神事」というのがあって 鷽鳥が入った封筒を参拝者同士で交換しあうんです。 これを繰り返すことで、嘘を誠に変えられるとか。 市にもこれと似たような意味があるんじゃないかと思ったりします。