• ベストアンサー

PHPのみでDBの様な使用は可能でしょうか?

いつも適切な回答ありがとうございます。 独自ドメインのレンタルサーバーでHPを運用しているのですが、 SQL(MYSQLやポステージ)が使える環境ではありません。 PHPのみです。 このような環境のままでDBのようなことができないかと今、大変思案している日々です。 やろうとしていることは、 「HP内のある箇所を日時により表記を変えたい」です。 具体的には商店のサイトで 7月16日 10時はOOの商品セール中!11時30分はOOの商品セール中! 7月17日 15時はOOの商品セール中!21時はOOの商品セール中! というようにHP内のある部分のみ指定日時で表記を変えたいのです。 今、自分ではこのように変更したい箇所に埋め込んでます。 <?php //更新情報☆ $a = 200507161035; $b = 200507161050; $c = 200507161300; // if ( $a > date(YmdHi)) include "php/whatsnew.php"; // else if ( $b > date(YmdHi)) include "php/whatsnew1035.php"; // else if ( $c > date(YmdHi)) include "php/whatsnew1050.php"; // else include "php/whatsnew1300.php"; ?> ただ、これだと24時間分以上作らねばならないし(24時間営業なので)かなり長くなります。昼間などは分単位でも商品情報を入れ替えたい為。 もっと効率のよい方法を考えているところです。 だらだらした説明で申し訳ないのですが、 どなた様かよいアイデアお持ちでしたら是非ご教授を願いたいと思っております。 よろしくお願いします。

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

  • ベストアンサー
  • YSW
  • ベストアンサー率23% (33/141)
回答No.2

ちょっと不親切だと思ったので具体的に書きます。 例えば、 200507161035,OOの商品セール中! 200507161050,××の商品セール中! 200507161300,□□の商品セール中! というデータを作ります。(「,」じゃなくてタブの方がいいです) それをdata.csvと言うファイルに保存したとして、 $datas=file('data.csv'); foreach($datas as $one_data){  list($time,$text)=split("\t",$one_data);  if($time > date(YmdHi)){   $hour=substr($time,8,2)*1;   $minute=substr($time,10,2);   print $hour.'時'.$minute.'分は、'.$text;   break;  } } のように出来ます。 (ソースをコピーする場合、全角スペースが入っているのでご注意を) データ書き込み用のページを作る場合はsplitでなくjoinを使います。

fran-go
質問者

お礼

ありがとうございます! わからない関数substrなど自分でも検索しながら 書いていただいたものを勉強させていただいています。 この場合、実質DBにあたるdata.csvには画像やHTMLタグは書き込み可能なのでしょうか?.csvとは聞きなれない拡張子で勉強不足を痛感しております。 もう少し、ご教授いただけると幸いです。

その他の回答 (5)

回答No.6

No.4です。 PHP5ではSimpleXML関数により簡単にXMLを扱う事ができます。 $root = simplexml_load_file('***.xml'); でXML構造が$rootにはいります。 year要素へのアクセスは$root->year[$i];(yearが複数あるため配列) year要素のnum属性には$root->year[$i]['num']; itemへは$root->year[$i]->month[$i]->day[$i]->item[$i] とforeach文の中で行えばいいと思います。 ただ、マルチバイト文字への対策でinternal_encoding変換して出力する必要があります。 PHP4の場合、いきなり難易度がぐーんと上がってしまいますが。 PEARをインストールし、/PEAR/XML/にXML_Treeパッケージがなければ個別に取得します。 SimpleXML同様に記述が簡単で各要素を連想配列によって扱えるので、慣れてしまえば便利ではないでしょうか。

参考URL:
http://pear.php.net/manual/ja/
fran-go
質問者

お礼

PHP5すごいですね。 わたしは、4なのでちょっとすぐには使えそうにない話ですが、 大変!役に立つ内容でPHP自体バージョンをあげようかと検討したいと思います。 ありがとうございました。

  • YSW
  • ベストアンサー率23% (33/141)
回答No.5

> 実質DBにあたるdata.csvには画像やHTMLタグは書き込み可能なのでしょうか? 可能です。CSVは、単なるテキストファイルです。.csvの拡張子を使うメリットとしては、WindowsでExcelに関連付けされていることくらいです。別に.csvでなくても、.txtでも拡張子なしでも何でもいいです。 ただしExcelで開く場合、「"」などが勝手に消されたり、さまざまな「おせっかい」が起こる可能性もありますので注意してください。

fran-go
質問者

お礼

なるほど! 早速、私のサイトで練習してみます! 思い切って質問してみてよかった!! もし行き詰った際にはまたご指導いただけると幸いです。 ありがとうございました!!

回答No.4

以下を***.xmlとして保存。 PHP からnew XML()として、目的の情報を取得してください。分単位でファイル名の指定までできるはずです。 <?xml version="1.0" encoding="Shift_JIS"?> <root> <year num="2005"> <month num="12"> <day num="31"> <item hour="08" minute="00" file="nenmatu.php">年末大セール中!</item> </day> </month> </year> <year num="2006"> <month num="1"> <day num="1"> <item hour="10" minute="30" file="newyear.php">新春大セール中!</item> <item hour="11" minute="00" file="motituki.php">餅つき大会!</item> </day> </month> </year> </root>

fran-go
質問者

お礼

XMLという手もあったのですね! ありがとうございます!

  • taseki
  • ベストアンサー率66% (155/233)
回答No.3

> SQL(MYSQLやポステージ)が使える環境ではありません。 DBはSQLだけではありません。DBMあたり使えませんか?ほとんどのレンタルサーバーでは、何かしら使えると思うのですが。

fran-go
質問者

お礼

DBMですか!はじめてききました。 すぐググってみます!! ご親切にありがとうございます!!

  • YSW
  • ベストアンサー率23% (33/141)
回答No.1

データ数やアクセス数がそれほど多くないなら、テキストファイル(CSVファイル)を使ってできます。 レンタルサーバにDBがついていない頃は、それが普通でしたね。 つまりEXCELなどで、データを作り、CSV形式で保存します。 それをfile関数で読み取って、splitで分解して、変数に入れていけば、DBのように使えます。 同じように書き込みも出来ますので、書き込み用の管理画面を作ることも可能です。

fran-go
質問者

補足

ありがとうございます。 そんな方法もあるのですね! 手探りながらも教えていただいた言葉を頼りに自分でも調べてみようと思います。 もし、許されるならばもう少し詳しく教えていただけると幸いなのですが。 なによりレスいただけたことに感謝です。ありがとうございます!

関連するQ&A