![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
お世話になります。
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で質問しましょう!
似たような質問が見つかりました
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptの条件文の応用
-
UNIXの時間はどう変更すれ...
-
Prologの現在時間の取得
-
質問:年月日の表示方法について
-
postgresのカレンダーについて
-
DB登録に関する日付の認識
-
続・指定した時間にPHPプログラ...
-
PHP+MySQLで月ごとの数量を表...
-
文字2桁、3桁交じりの文字列...
-
SQLローダーCSV取込で、囲み文...
-
select文の実行結果に空白行を...
-
単一グループのグループ関数で...
-
2つの列が同じ値の行を取得するSQL
-
AccessのSQL文で1件のみヒット...
-
count関数の値をwhere句で使用...
-
レコードの登録順がおかしい
-
【PL/SQL】FROM区に変数を使う方法
-
テーブルの最後(最新)のレコー...
-
where句中のtrim関数について
-
SQL*Loader Append
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP+MySQLで月ごとの数量を表...
-
日替わりメッセージを表示させ...
-
【PL/SQL】DATE型の時刻の表示...
-
MySQLのUPDATE文でサブクエリ
-
PHPとMysqlを使用した集計表の...
-
Strict Standards: date() ...
-
DB登録に関する日付の認識
-
EXCELマクロのSQL文での引用符...
-
PHPでMySQL内のデータの合計値...
-
JavaScriptの条件文の応用
-
postgresのカレンダーについて
-
掲載日と更新日の管理の仕方
-
SQLでMAXを使った
-
Smarty
-
JOINを使った文で、date > now();
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
select文の実行結果に空白行を...
-
テーブルの最後(最新)のレコー...
-
count関数の値をwhere句で使用...
おすすめ情報