dポイントプレゼントキャンペーン実施中!

いつも適切な回答ありがとうございます。

独自ドメインのレンタルサーバーで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時間営業なので)かなり長くなります。昼間などは分単位でも商品情報を入れ替えたい為。
もっと効率のよい方法を考えているところです。

だらだらした説明で申し訳ないのですが、
どなた様かよいアイデアお持ちでしたら是非ご教授を願いたいと思っております。

よろしくお願いします。

A 回答 (6件)

ちょっと不親切だと思ったので具体的に書きます。


例えば、
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を使います。
    • good
    • 0
この回答へのお礼

ありがとうございます!
わからない関数substrなど自分でも検索しながら
書いていただいたものを勉強させていただいています。

この場合、実質DBにあたるdata.csvには画像やHTMLタグは書き込み可能なのでしょうか?.csvとは聞きなれない拡張子で勉強不足を痛感しております。

もう少し、ご教授いただけると幸いです。

お礼日時:2005/07/16 03:01

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/
    • good
    • 0
この回答へのお礼

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

ありがとうございました。

お礼日時:2005/07/18 22:27

> 実質DBにあたるdata.csvには画像やHTMLタグは書き込み可能なのでしょうか?



可能です。CSVは、単なるテキストファイルです。.csvの拡張子を使うメリットとしては、WindowsでExcelに関連付けされていることくらいです。別に.csvでなくても、.txtでも拡張子なしでも何でもいいです。

ただしExcelで開く場合、「"」などが勝手に消されたり、さまざまな「おせっかい」が起こる可能性もありますので注意してください。
    • good
    • 0
この回答へのお礼

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

ありがとうございました!!

お礼日時:2005/07/16 03:33

以下を***.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>
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/07/17 02:51

> SQL(MYSQLやポステージ)が使える環境ではありません。



DBはSQLだけではありません。DBMあたり使えませんか?ほとんどのレンタルサーバーでは、何かしら使えると思うのですが。
    • good
    • 0
この回答へのお礼

DBMですか!はじめてききました。
すぐググってみます!!

ご親切にありがとうございます!!

お礼日時:2005/07/16 03:03

データ数やアクセス数がそれほど多くないなら、テキストファイル(CSVファイル)を使ってできます。


レンタルサーバにDBがついていない頃は、それが普通でしたね。

つまりEXCELなどで、データを作り、CSV形式で保存します。
それをfile関数で読み取って、splitで分解して、変数に入れていけば、DBのように使えます。

同じように書き込みも出来ますので、書き込み用の管理画面を作ることも可能です。

この回答への補足

ありがとうございます。

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

補足日時:2005/07/16 02:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!