2008-06-15
■ 目次の増強
えーと3/5に、ハッスルサーバーと契約し、この間、概念集の項目を少しづつ増やし「目次」に登録してきました。
PHP+mySQLという強力なデータベースを使用しているわりに静的な目次で(何故か逆順になっているだけの)した。ネットにUPしているものだけを選べる目次との二種類が、自動的に生成できていることろにデータベース使用の効果は表れてはいたのですが。
番号順/逆順/題名順/偶然順の4種類を切り替えられる形にしてみたいと前から思っていたのです。今日やっと実現することができました。
全部: http://666999.info/matu/mokuji.php
今読めるもの:http://666999.info/matu/mokuji18.php
ソースも長くなりました。記念にUPしておきます。
"<"を全角に変更して貼っています。
(・・ところでついでに、データを30件ごとに表示する、ことをしてみたい。スーパーサンプルという本のp572にやりかたが載っているようなのでできるだろう。・・・けっこう大変そうなので当分あきらめよう。)
<html>
<head>
<title>概念集 目次</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body style="background-color: rgb(255, 236, 226); color: rgb(0, 0, 0);">
<h3>概念集 目次</h3>
<form action="mokuji18.php" method="post">
表示順を選んでください。
<select name="sort">
<option value="jun">番号順 </option>
<option value="anti">逆順</option>
<option value="daimei">題名順</option>
<option value="random">偶然順</option>
</select>
<input type="submit" value="送信!">
</form>
<?php
$name='mokuji8';
(省略)
$table = 'gainen';
$table2 = 'counter2';
$page = 'page';
$count = 'count';
// データベースに接続する
$conn = mysql_connect($sv, $user, $pass) or die("接続エラー");
mysql_select_db($dbname) or die("接続エラー");
// ここからカウンタ
$sql = "UPDATE $table2 SET $count=$count+1 WHERE $page='$name'";
$result = mysql_query( $sql, $conn )
or die( "Failed to query of [$sql]" );
$sql = "SELECT $count FROM $table2 WHERE $page='$name'";
$result = mysql_query( $sql, $conn )
or die( "Failed to query of [$sql]" );
$row = mysql_fetch_assoc( $result );
$num= $row[$count];
/* mysql_close($conn); */
print ("<div align=\"right\"><a href=\"http://from1969.g.hatena.ne.jp/\">戻る</a>"." Pv: ");
print ($num);
print ("</div>");
// データを取り出す
$sort = $_POST['sort'];
switch ($sort){
case anti:
$sql = "SELECT * FROM {$table} ORDER BY id DESC";
break;
case daimei:
$sql = "SELECT * FROM {$table} ORDER BY idea ASC";
break;
case random:
$sql = "SELECT * FROM {$table} ORDER BY RAND()";
break;
case jun:
$sql = "SELECT * FROM {$table} ORDER BY id ASC";
break;
default:
$sql = "SELECT * FROM {$table} ORDER BY id ASC";
}
$res = mysql_query($sql, $conn) or die("データ抽出エラー");
// 取り出したデータを表示する
echo "<table border=\"0\">";
echo "<tr>";
echo "<td>ID</td>";
echo "<td>題</td>";
echo "<td>頁</td>";
echo "<td>リンク</td>";
echo "</tr>";
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
if($row["url"]==""){ echo "";}
else{
echo "<tr>";
echo "<td>".$row["id"]."</td>";
echo "<td>".$row["idea"]."</td>";
echo "<td>".$row["kan"]."-".$row["page"]."</td>";
echo "<td>"."<a href=".$row["url"].">内容</a>"."</td>";
}
echo "</tr>";
}
echo "</table>";
// 接続を解除する
mysql_close($conn);
?>
</body></html>