• ベストアンサー

MySQLで日記を作成

MySQLのDBに簡単な日記を保存したいのですが、 データのレコード方法のアドバイスをお願いします。 記録する項目は、日付、題名、本文としたときを想定します。 DBに既に8/1の日記、8/3の日記、という順にデータがレコードされているとします。 今、8/2の日記をレコードしようとします。 このときの考えられる記録の処理で、 1.DBの末尾に8/2のデータを記録する。  出力の際に、日付でソートする。 2.DBに既に登録してあるデータを日付でソートし、8/1、8/2、8/3の順で記録する。  出力はデータの順番通り。 どっちの方がスマートでしょうか。 アドバイス、お願いします。

  • MySQL
  • 回答数3
  • ありがとう数1

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

Mysqlにはファイルに保存するテキストデータやCSVデータにある「データの順番」という概念はありません。 効率のよい形で保存されますので、データの取り出しは日付でソートすることになります。

hana_Z
質問者

お礼

回答、ありがとうございます。 効率の良い日付のレコード方法を、よろしければお教えください。 たとえば、 2005/08/28のように日付データを1つにするか、 2005,08,28のようにデータを3つに区切るとか。

その他の回答 (2)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

date型 で保存するのが良いと思います。

回答No.1

この場合は例えば INSERT INTO DIARY VALUES ('2005/08/22', 'タイトル', 'いい天気だった); と発行すればよいだけで、あなたが「内部でどのような順で記録されているか」を意識する必要はありません。 記録するのは INSERT 文で、日付順にソートして表示させるのは SELECT 分の ORDER BY 句です。

hana_Z
質問者

補足

早速の回答、ありがとうございます。 日付が2005/08/22のような形式の場合は、 どのようにソートすればよいのでしょうか。

関連するQ&A

  • 日記の指定日のみ表示

    200908.txt 01,2009/08/01,2009,08,日記タイトル,日記本文,302 02,2009/08/02,2009,08,日記タイトル,日記本文,303 03,2009/08/03,2009,08,日記タイトル,日記本文,304 上記のようなログがあり 「日,日付,年,月,タイトル,本文,通しナンバー」の順に並んでいます。 たとえば、8/1なら「8/1のみ表示」するには、どのように条件付けすれば宜しいのでしょうか? 色々やってみましたが、出来ませんでした。どなたか教えて下さい。

  • [PHP+MySQL] 2列のソートと合計

    PHP勉強中で、まだ未熟でやりたいことが形にできません。どうか、時間ある方でけっこうですので、お答えいただければ幸いです。 Apache2.0 PHP 5.0.3 MySQL 4.0.2.3 という環境で稼動してます。 今困っているのが [日付]  [分類]  [価格]   という3つのフィールドがあり、 20050125 128 500 20050125 126 1200 20050126 124 800 ... といった感じのレコードが大量に入っております。 これをDBからとりだして表示させたときに、 1、日別に分類ごとの価格の合計をだし 2、日付でソートして、その日付内で分類もソート ということがやりたいのですが、なにか手はございますでしょうか? 20050125 123 1500(←価格の合計) 20050125 124 2500 ・・・ 20050126 123 1200 20050126 124 5600 ・・・ といった形です。 お勧めサイトや使えそうな関数など、ちょっとしたヒントでもかまいませんので、 どうかお力をお貸しください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP+MYSQLでレコードをランダム取得しページング

    PHP+MYSQLでMYSQLから特定キーの「昇順」や「降順」などでは無くランダムな順番で全てのレコードを取得し、複数ページに出力させたいと考えています。 1枚のページであれば、MYSQLで取得したデータを配列に入れて、array_randといった方法があるかと思いますが、"複数ページに渡って重複させず"にデータをランダム出力させるにはどのような方法があるでしょうか? 自分では並び順カラム(sort_num)を作成し、cronなどで定期的にランダムな数値を全レコードのsort_numに挿入し、ORDER BY sort_num LIMIT $pagestartrecord,$pageendrecord といった力技でページングする方法しか思いつきませんでした。 お力をお貸し願えたらうれしいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • MySQLをアクセスログとして使う場合について

    宜しくお願い致します。 MySQLのDBでアクセスログを取りたいと思っております。が、MySQLのDBに一度にアクセスできる人数と記録できるレコード数に限界ってあるんでしょうか?一日に数万アクセスあった場合、無条件に全て記録したら、一日で数万レコードになってしまうし、一度にアクセスが重複する数もかなりの数になると思います。かなり心配になってしまいました。。。

    • ベストアンサー
    • MySQL
  • MySQLのレコードを逆向きに並べる方法は?

    MySQLのレコードを逆向きに並べる方法は? MySQLを使って、掲示板を作ろうとしているのですが、 “db1”というデータベースに、“tbk”というテーブルを作り、 “bangou”というフィールドで、AUTO_INCREMENTで番号をふり、 下記のように、番号順にレコードをプリントしているのですが、 <?php $s=mysql_connect("localhost","root","パスワード"); mysql_select_db("db1"); $re=mysql_query("select * from tbk order by bangou"); while($kekka=mysql_fetch_array($re)){ print "<hr />"; print $kekka[0]; print "<br />"; print $kekka[1]; print "<br />"; print $kekka[2]; print "<br />"; print $kekka[3]; print "<br />"; } mysql_close($s); ?> このように、番号の若い順にレコードをプリントするのではなく、 番号(“bangou”)の古い順にレコードをプリントするようにするには、 どうすれば良いでしょうか?

  • VB.NETで日記ソフトを作成したいのですが。

    VB.NETでオリジナルな日記ソフトを作りたいと思っています。 日記の内容(日付と日記本文のみ)はテキストファイルで保存・読込で 済んでしまうような簡単な作りです。 お聞きしたいのですが,テキストデータを読み込むときに, どのようなクラスにデータを取り込むと, 日付をキーにした検索・削除・更新がし易い作りになるでしょうか? 私が調べた範囲なのですが, 二次元配列,ハッシュテーブルやDataTableクラスなど がありましたが,どのようにデータをプログラム内で 持っておけば良いのかが分かっていません。 SQL文は多少使えるのですが。。。 ご助言いただけませんでしょうか? よろしくお願いします。

  • MySQLで複数データベースの検索/ソートについて

    お世話になっております。 PHP4.4.1+MySQL4.1.15を使用しております。 複数のデータベースに含まれる複数のテーブルをひとつの大きなテーブルとして検索/ソートする方法はありませんでしょうか? 結合ではなく、全レコードを全て単体として検索/ソートをかけたいのです。 それぞれのデータベースに含まれるテーブルに、共通の項目があり、その共通の項目順にソートしたり、絞込をかけたりしたいのですが、調べてみても、どうしても結合(JOIN)に行き着いてしまいます。 JOINによる結合だと、共通の項目以外のレコードが表示されないので、これでは意味をなしません。 ご教授の程、お願い致します。

    • ベストアンサー
    • MySQL
  • DB(MySQL)から複数行のデータを取り出す方法

    最近PHPを勉強していて、初歩的な質問で申し訳ないのですが どうしてもわからないので質問させていただきます。 例えば、MySQLに以下のようなデータがあります。   年齢 名前 性別   28  AAA  男   20  BBB  男   25  CCC  女 ここで男のレコードだけ取り出したいと思い 以下のようなコードを書きました。   //MySQLへデータを保存する。   mysql_connect("localhost","root","");   mysql_select_db("DB名");   //データの取得   $id = mysql_query("SELECT '年齢','名前','性別' FROM テーブル名 WHERE '性別' = '男'");   $array=mysql_fetch_row($id); この場合、2行のレコードが選ばれるはずですが 後ろのレコードへのアクセスの仕方がわかりません。 $arrayには性別=男に該当する、一行目のレコードが入っています。 二行目のレコードへはどうやってアクセスすればよいのでしょか? 調べてもなかなかうまくいかずご質問させていただきました。 ご回答お願いします。

    • ベストアンサー
    • PHP
  • Smartyで日記のタイトル一覧を表示したい

    すいません。書き方がわからなく、どのように質問していいかも解らないのですが。 書籍に付いていた、フリーの日記スクリプト(PHP&MySQL、Smaty)を使って、日記データの表示に挑戦しています。 入力項目を増やして、DBに登録、表示まではできるようになったのですが、 例えば「登録した日記のタイトルだけを一覧表示して各々の記事ページへのリンクを貼る」 ような出力をしたいのですが、Smatyがいまいちよくわからなく行き詰っています。 xxx.tpl → xxx.class.php → index.tpl のような流れで、データの受け渡しをしているのは何となくわかるのですが、 タイトル一覧を出力する記述を tpl に書くのか、class.php に書くのか、よくわからない上に、 どのように質問したらいいのかもいまいちわかりません。 この様な質問で大変恐縮ですが、どなたかイメージがおわかりになる方でもいらっしゃれば、 ご教授頂けないでしょうか。恐れ入ります。

    • 締切済み
    • PHP
  • csvからmySQLのデータベース作成

    カンマ区切りのcsvファイルを読み込んでMySQLのデータベースを作成したくて、下記のプログラムを作成しました。 しかし、正常に動作しません。どこに問題があるのでしょうか。 よろしくお願いします。 <?php $file = '"test.txt"'; //------------------------------------------------------------- //データベースアクセス //------------------------------------------------------------- $url = 'test-test.com'; // MySQL hostname $user = 'test_user'; // Your MySQL user name. $pass = 'password'; // Your MySQL password. $db = 'test_db'; // MySQLへ接続する $link = mysql_connect($url,$user,$pass); if ( $link == FALSE ) { error(__line__); } // データベースを選択する $sdb = mysql_select_db($db,$link); if ( $sdb == FALSE ) { error(__line__); } mysql_query("SET NAMES utf8"); //CSVデータの取り込み $sql = "LOAD DATA LOCAL INFILE '$file' INTO TABLE test fields terminated by"; $sql .= " LINES "; $sql .= " TERMINATED BY '\r\n' "; $sql .= " IGNORE 1 LINES"; $result = mysql_query($sql, $conn); if (!$result) { $message = 'Invalid query: ' . mysql_error() . "\n"; $message .= 'Whole query: ' . $sql; die($message); } //------------------------------------------------------------- // エラーメッセージ表示 //------------------------------------------------------------- function error($line) { echo "error code:" . $line; exit; } ?> ---------- .CSVファイル ---------- 日付,内容,備考 0901,value,etc 0902,value2,etc2

    • ベストアンサー
    • PHP