- ベストアンサー
指定した時間にPHPプログラムを実施する方法
- 指定した時間にPHPプログラムを実施する方法を教えてください。
- DBに情報を管理し、CRONを使用して指定した時間にメール送信プログラムを実行します。
- 日時条件とIDを組み合わせてメール送信のトリガーを設定する方法を教えてください。
- みんなの回答 (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.")";
その他の回答 (1)
- wp_
- ベストアンサー率54% (132/242)
年月日を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()を噛ましましょう。 ありがとうございます。 インジェクション対策は充分に実施しておきます。 よろしくお願いいたします。
お礼
PHP側で値を合成とは、なるほどです。 うまく動作させることができました。 どうも、ありがとうございます。