お世話になります。
http://oshiete1.goo.ne.jp/qa3423046.html
にて質問させて頂いたのですが、追加で以下の質問をさせて頂きたく思います。ぼやけた質問ですので、こういう感じでどうでしょうというアドバイスでも頂ければ幸いでございます。
で、前回アドバイスいただきました事項を参考にさせて頂いて、
DBにて各情報を管理して、メール送信のプログラムはPHPをCRONにて動作させようと考えました。
・メール関連DBテーブル
-> IDを一意の値として管理する。
postgres=# select * from mail_gen;
id | seireki | tuki | nitiji | jikan | word1 |
----+---------+------+--------+-------+-----------------+
31 | 2008 | 01 | 01 | 00 | メール内容 |
id | integer | not null default nextval
また、HTMLからメール関数の変数を引き継いだ際に、DBでデータ挿入以外にも、日時データをテキストファイルで追加するようにして、
<?
require('../include/init.inc');
$seireki = $_POST{'seireki'};
$tuki = $_POST{'tuki'};
$nitiji = $_POST{'nitiji'};
$jikan = $_POST{'jikan'};
$word1 = $_POST{'word1'};
$sql = "insert into mail_generator
(seireki,tuki,nitiji,jikan,word1,word2,word3)
values
('$seireki','$tuki','$nitiji','$jikan','$word1');";
pg_query("$sql");
$fhn = fopen("./at.txt","a");
fwrite($fhn,$seireki);
fwrite($fhn,"-");
fwrite($fhn,$tuki);
fwrite($fhn,"-");
fwrite($fhn,$nitiji);
fwrite($fhn," ");
fwrite($fhn,$jikan);
fwrite($fhn,":00");
fwrite($fhn,"\n");
fclose($fhn);
?>
ご教示頂いたことを参考にして、at.txtで時間が一致した時に、
指定したメール送信関数を起動させようと思ったのですが、
$now = date("Y-m-d H:i");
$atfile = "at.txt";
$atarr = file($atfile);
if(count($atarr)>0){
foreach($atarr as $at){
if($at == $now) mySendMail();
}
}
・at.time
# more attime.txt
2008-01-01 00:00
2008-01-01 00:00
メール送信されるトリガーで、日時の条件だけでは条件として一意ではないため、IDと一致する条件も加えたいと考えております。
なにかうまい?方法はないでしょうか。
No.2ベストアンサー
- 回答日時:
>'H-i-s H:i:00'の形に(snip)
ユーザ側で時間を指定できる仕様であれば
年月日ごとにフォームを分け、PHP側で値を合成してあげると良いです。
[HTML側]
<select name="yyyy">
<option value="2000">2000年</option>
</select>
<input type="text" name="mm" size=2 maxlength=2 />
(snip..)
[PHP側]
$ymd = sprintf( // ←この前にis_numeric()で検査したほうが良い
"%04d-%02d-%02d %02d:%02d:00"
,$_POST["yyyy"]
,$_POST["mm"]
,$_POST["dd"]
,$_POST["hh"]
,$_POST["mi"]
);
$sql .= "in sert into TABLE(id,sendtime) values(".$id.",".$ymd.")";
No.1
- 回答日時:
年月日をDBで持っているならfileを作る必要はないですよ。
内容が同じデータを分散させるのは良い方法ではありません。
それと、DBの日付はdatetime型で持たせたほうが良いかと。
日付のcolumnが sendtime datetime で定義されているとして、
[送信用PHP]
(snip..)
$now = date('H-i-s H:i:00');
$sql = "select word1,word2,word3 from mail_generator ";
. "where sendtime=to_date('".$now."', 'YYYY-MM-DD HH24:MI:SS')";
(snip..)
こうすることでfileやidを意識することなく必要なデータのみとることが出来るかと。
// 800文字の壁は大きいなぁ・・・
蛇足ですが、$_POSTの値を直接クエリに組み込むのは恐怖です。
せめてpg_escape_string()を噛ましましょう。
あと連想配列は$_POST["seireki"]す。{"seireki"}じゃないす。
なるほど、ご丁寧な回答ありがとうございます。
追加で申し訳ないのですが、DBのdatetimeにHTMLより値を変数に渡す場合の良い方法がありますでしょうか。
'H-i-s H:i:00'の形にして、テキストにてDBに挿入するしかない?でしょうか。
> $_POSTの値を直接クエリに組み込むのは恐怖です。
> せめてpg_escape_string()を噛ましましょう。
ありがとうございます。
インジェクション対策は充分に実施しておきます。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付で0を抜く
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
select文の実行結果に空白行を...
-
テーブルの最後(最新)のレコー...
-
「数字で始まらない」ものを抽...
-
SQLで条件にヒットしたレコード...
-
トランザクションログを出力せ...
-
ファイルの漢数字の順番につい...
-
【PL/SQL】FROM区に変数を使う方法
-
並べ替えについて
-
int型フィールドにnullを登録で...
-
データ
-
where句中のtrim関数について
-
SQL*Loader Append
-
テーブルレーコードをソートし...
-
ExcelかAccessで五十音順にソー...
-
AccessのSQL文で1件のみヒット...
-
SQLのORDERBY句について質問です。
-
SELECT FOR UPDATE で該当レコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP+MySQLで月ごとの数量を表...
-
携帯サイトのAUの自動更新について
-
日替わりメッセージを表示させ...
-
postgresのカレンダーについて
-
MySQLのUPDATE文でサブクエリ
-
dateのフィールドタイプについて
-
更新履歴を古い順に表示させる...
-
UNIX時間で今月1日~末日を取得...
-
掲載日と更新日の管理の仕方
-
現時刻とjson(オブジェクト形...
-
EXCELマクロのSQL文での引用符...
-
データ更新用のphpの記述でデー...
-
PHPでMySQL内のデータの合計値...
-
DB登録に関する日付の認識
-
PHPとMysqlを使用した集計表の...
-
By moving its office to Calif...
-
SQLローダーCSV取込で、囲み文...
-
ファイルの漢数字の順番につい...
-
【PL/SQL】FROM区に変数を使う方法
-
select文の実行結果に空白行を...
おすすめ情報