seimurakam の回答履歴
- PHP+MySQL 時間の比較がしたい
PHPとMySQLでメルマガ送信システムをつくっています。 会員登録時にメルマガ配信希望時間を選択してもらい、DBにtime型でインサートしています。 [member]テーブル mail fromtime totime --------------------------------------- aaa@aa.co.jp 10:00:00 18:00:00 bbb@bb.ne.jp 01:00:00 12:00:00 ccc@cc.ne.jp 22:00:00 06:00:00 管理者がメルマガを送信の際、配信時間内に該当する会員だけにメールを送信させたいのですが、配信時間に該当する会員の抽出が上手くいきません。 SQL文での抽出: SELECT * FROM `member` WHERE (`fromtime` <= `$sendtime`) AND (`$sendtime` <= `totime`); ($sendtimeはdate関数で取得した送信時間が入っています) PHPでの処理:fromtime,totime,$sendtimeに今日の日付を追加して、タイムスタンプに変換して比較演算子を使うことを検討しましたが、日をまたぐこともあるので、そこで行き詰ってしまいました。 SQLでもPHPでもいいので、正確に配信時間内に該当する会員データを抽出できる方法はありませんでしょうか? どうかご教授お願い致します。
- 同じSQL文で速度がだいぶ違う
10万件程度レコードをもつ2つのテーブルに対し、下記のようなSQL文を実行します。 (実際のSQL文とは違いますが、だいたいこんな感じです。) SELECT * FROM aaa JOIN bbb USING(key) WHERE ORDER BY ccc LIMIT 50 OFFSET 5000 すると、 CGIから実行→CPU使用率が一時的に60%を超える。1~2秒待たされる。 phpMyAdminから同じSQL文を実行→CPUほどんど消費せず。瞬時に終わる。 のようにCGIからとphpMyAdminからで速度に大きな違いがあります。 こんなに差が付いてしまう理由がわかりましたら教えていただきたく。
- インクルード関数
すみません、下記はインクルードの元のPHPファイルです。 これでインクルードすると CSSのリンクと画像のリンク のところでParse error: syntax error, unexpected T_STRING というエラーが出ます。 $HTMLHEADER の中を単純な文字にするとエラーが出ないという ことはインクルードそのものの構文は間違っていないということ だと思います。 インクルードの場合リンクはどうすればいいんでしょうか? <?php //ページタイトル $APPTITLE = "関東近県の格安出張"; //ヘッダ部 $HTMLHEADER = " <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'> <HTML> <HEAD> <META http-equiv='Content-Type' content='text/html; charset=utf-8'> <META http-equiv='Content-Style-Type' content='text/css'> <TITLE>" . $APPTITLE . "</TITLE> <link href="css/basic.css" rel="stylesheet" type="text/css" media="all" /> </HEAD> <BODY> <TABLE width='100%' bgcolor='#ff8000'> <TR> <TD> <div><img src="images/head.jpg" alt="" /></div> <div><img src="images/main.jpg" alt="" /></div> <ul class="u"> <li><a href="index.html"><img onmouseover="this.src='images/home2.jpg'" onmouseout="this.src='images/home.jpg'" src="images/home.jpg" alt="" border="0" /></a></li> </ul> </TD> </TR> </TABLE>"; //フッタ部 $HTMLFOOTER = "</BODY> </HTML>"; ?>
- ベストアンサー
- kurobon619
- PHP
- 回答数4
- リダイレクト元のURLの取得方法について
現在、以下2つのphp5プログラム(+ PEAR::AUTH)で、なんちゃってフォーム認証するCGIを作成しています。 環境 Windows XP、Web SV IIS 5.1 (1) aaa.php : PEAR:AUTHを使った、ログイン画面(フォーム認証CGI)。 : 機能 : MySQLに格納されたID/PWで認証する。認証OKだったら、bbb.phpが出力するDBレコードデータ参照ページへのリンク集を出力する。 リンク1)http://domain.jp/bbb.php?id=1001 リンク2)http://domain.jp/bbb.php?id=1002 リンクn)http://domain.jp/bbb.php?id=nnnn ・・・といった感じで、DBに登録されたレコードを表示するCGIへのリンクをずらずら出します。 (2) bbb.php : DBデータを整形し、多少見やすい形に加工したHTMLページを出力する。 この時、aaa.phpが認証OKの証?として出力したCookieが、 1.あったらHTMLページ出力し、 例1)http://domain.jp/bbb.php?id=1001 = 一意のキーid=1001の値で出力出来る、MySQL上のデータをHTML化したもの 例2)http://domain.jp/bbb.php?id=1002 = 一意のキーid=1002の値で出力出来る、MySQL上のデータをHTML化したもの 例n)http://domain.jp/bbb.php?id=nnnn = 一意のキーid=nnnnの値で出力出来る、MySQL上のデータをHTML化したもの 2.無かったら、 (a) http header 401を出力 (b) aaa.php(フォームログイン画面)にリダイレクトする。 一応、ここ迄はいいのですが、例えば、利用者が、上記例2のURLをブラウザ「お気に入り」で保存しておき、直接そのページをみたい、と言った時、リンク指定先のbbb.phpは、 ・ そのユーザがログインしていない場合(Cookieが無い場合)、aaa.phpのログインフォームへリダイレクトする ・ aaa.phpは認証後、リンク集ページを出力する、 といった動作になってしまいます(てゆうかそうゆう作りなんで当たり前ですが・・・)。 そこで、aaa.phpの機能で、 ・ 「どのURLから、リンク(リダイレクト)されてきたかを判定するロジック」を入れ、もし、「bbb.php?id=xxxx」だったら、 ・ 認証OK後、直接、そのbbb.phpが出力するHTMLのURL(http://domain.jp/bbb.php?id=xxxx)に、再度リダイレクトする処理を入れれば良い?、 のかなーと短絡的に考えました。 で、問題となるのが、aaa.phpが表示された時、どこからリダイレクトされてきたか(リダイレクト元のURL)を知る方法です。 そこで、PHPの、$_SERVER[HTTP_REFERER]を入れてみた所、 ・ bbb.phpにリダイレクトされる前のURLが、$_SERVER[HTTP_REFERER]に入っている(多分、別のHTMLのbbb.php?id=~へのリンク集?) ・ $_SERVER[HTTP_REFERER]の中が空(URL直接指定?) という現象で詰まってしまいました。 ここから抜け出す為、何か良いアイディア(別の方法、関数等)があればお知恵拝借したいと考えています(書いてある事を理解して頂ける文章か今イチ不安ですが・・・)。 何卒よろしくお願いします。
- インクルード関数
すみません、下記はインクルードの元のPHPファイルです。 これでインクルードすると CSSのリンクと画像のリンク のところでParse error: syntax error, unexpected T_STRING というエラーが出ます。 $HTMLHEADER の中を単純な文字にするとエラーが出ないという ことはインクルードそのものの構文は間違っていないということ だと思います。 インクルードの場合リンクはどうすればいいんでしょうか? <?php //ページタイトル $APPTITLE = "関東近県の格安出張"; //ヘッダ部 $HTMLHEADER = " <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'> <HTML> <HEAD> <META http-equiv='Content-Type' content='text/html; charset=utf-8'> <META http-equiv='Content-Style-Type' content='text/css'> <TITLE>" . $APPTITLE . "</TITLE> <link href="css/basic.css" rel="stylesheet" type="text/css" media="all" /> </HEAD> <BODY> <TABLE width='100%' bgcolor='#ff8000'> <TR> <TD> <div><img src="images/head.jpg" alt="" /></div> <div><img src="images/main.jpg" alt="" /></div> <ul class="u"> <li><a href="index.html"><img onmouseover="this.src='images/home2.jpg'" onmouseout="this.src='images/home.jpg'" src="images/home.jpg" alt="" border="0" /></a></li> </ul> </TD> </TR> </TABLE>"; //フッタ部 $HTMLFOOTER = "</BODY> </HTML>"; ?>
- ベストアンサー
- kurobon619
- PHP
- 回答数4
- 大規模システムを作りたい
趣味でPHPを作っているのですが 知り合い同士で結構大規模なシステムを作る予定があります そこで、クラスや変数の命名方法やフォルダやライブラリの作成方法なんかについて統一したいと思っているのですが 複数人で一つのシステムを作る際のコツやよく使われる規則を解説している サイトや本はないでしょうか?
- インクルード関数
すみません、下記はインクルードの元のPHPファイルです。 これでインクルードすると CSSのリンクと画像のリンク のところでParse error: syntax error, unexpected T_STRING というエラーが出ます。 $HTMLHEADER の中を単純な文字にするとエラーが出ないという ことはインクルードそのものの構文は間違っていないということ だと思います。 インクルードの場合リンクはどうすればいいんでしょうか? <?php //ページタイトル $APPTITLE = "関東近県の格安出張"; //ヘッダ部 $HTMLHEADER = " <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'> <HTML> <HEAD> <META http-equiv='Content-Type' content='text/html; charset=utf-8'> <META http-equiv='Content-Style-Type' content='text/css'> <TITLE>" . $APPTITLE . "</TITLE> <link href="css/basic.css" rel="stylesheet" type="text/css" media="all" /> </HEAD> <BODY> <TABLE width='100%' bgcolor='#ff8000'> <TR> <TD> <div><img src="images/head.jpg" alt="" /></div> <div><img src="images/main.jpg" alt="" /></div> <ul class="u"> <li><a href="index.html"><img onmouseover="this.src='images/home2.jpg'" onmouseout="this.src='images/home.jpg'" src="images/home.jpg" alt="" border="0" /></a></li> </ul> </TD> </TR> </TABLE>"; //フッタ部 $HTMLFOOTER = "</BODY> </HTML>"; ?>
- ベストアンサー
- kurobon619
- PHP
- 回答数4
- sqlの作り方
テーブルAAがありまして、code,rereki,name.....というフィールドなのですが、 code , rereki , name 1 , 1 , aaaaa 1 , 2 , aaaaaa1 1 , 3 , aaaaaa2 2 , 1 , bbbbb 2 , 2 , bbbb-2 3 , 1 , ccccccc 上記の内容ですが同じそれぞれのコードでrerekiの最大値のnameを とるSQLがわからずに悩んでいます、どなたかご教授宜しく御願いします 欲しい結果です 1,3,aaaaaa2 2,2,bbbb-2 3,1,ccccccc
- sqlの作り方
テーブルAAがありまして、code,rereki,name.....というフィールドなのですが、 code , rereki , name 1 , 1 , aaaaa 1 , 2 , aaaaaa1 1 , 3 , aaaaaa2 2 , 1 , bbbbb 2 , 2 , bbbb-2 3 , 1 , ccccccc 上記の内容ですが同じそれぞれのコードでrerekiの最大値のnameを とるSQLがわからずに悩んでいます、どなたかご教授宜しく御願いします 欲しい結果です 1,3,aaaaaa2 2,2,bbbb-2 3,1,ccccccc
- 正規表現で切り出せません。 < と > の間?
宜しくお願いいたします。 PHP5.1.6です。 メールの受信をするときにメールアドレスだけを切り出したいのですが うまく出来ません。 【例-1】の様に、すると < > の間が表示するのですが 【例-2】の例のように、変数を入れると何も表示しません。 【例-1】で使用した文字列は、【例-2】の$from を echo で表示させたものをコピーしています どのようにしたらいいでしょうか? 宜しくお願いいたします。 【例-1】 $test="教えてお名前 <****@*******.com>"; $pattern = "<(.*)>"; if (preg_match( "/".$pattern."/i", $test, $match ) ){ //$from0 = $match[0]; $from1 = $match[1]; //echo $from0; echo $from1; } これで、うまく echo $from1 でメールアドレスだけ表示してくれます。 *** なぜか、$from0 には元の文字列は表示しませんが。 置き換える元の文字列を下記変数に変えると表示しません。 【例-2】 $mboxes = imap_check($mbox); $head = imap_header($mbox, $i); $from = htmlspecialchars(mb_decode_mimeheader($head->fromaddress)); $pattern = "<(.*)>"; if (preg_match( "/".$pattern."/i", "$from", $match ) ){ //$from0 = $match[0]; $from1 = $match[1]; //echo $from0; echo $from1; } **$from の所は "" で囲んだり、外したりしましたが一緒でした。
- ベストアンサー
- kiyomidesuyo
- PHP
- 回答数3
- ワードで左右の三角の表示方法
ワードで、上下の三角(記号)はありますが、左右の三角が必要なのですが、どうしたら表示することができますか。無い場合は作成する方法もあれば。
- ベストアンサー
- ajisaisaku
- Windows Vista
- 回答数5
- 正規表現で切り出せません。 < と > の間?
宜しくお願いいたします。 PHP5.1.6です。 メールの受信をするときにメールアドレスだけを切り出したいのですが うまく出来ません。 【例-1】の様に、すると < > の間が表示するのですが 【例-2】の例のように、変数を入れると何も表示しません。 【例-1】で使用した文字列は、【例-2】の$from を echo で表示させたものをコピーしています どのようにしたらいいでしょうか? 宜しくお願いいたします。 【例-1】 $test="教えてお名前 <****@*******.com>"; $pattern = "<(.*)>"; if (preg_match( "/".$pattern."/i", $test, $match ) ){ //$from0 = $match[0]; $from1 = $match[1]; //echo $from0; echo $from1; } これで、うまく echo $from1 でメールアドレスだけ表示してくれます。 *** なぜか、$from0 には元の文字列は表示しませんが。 置き換える元の文字列を下記変数に変えると表示しません。 【例-2】 $mboxes = imap_check($mbox); $head = imap_header($mbox, $i); $from = htmlspecialchars(mb_decode_mimeheader($head->fromaddress)); $pattern = "<(.*)>"; if (preg_match( "/".$pattern."/i", "$from", $match ) ){ //$from0 = $match[0]; $from1 = $match[1]; //echo $from0; echo $from1; } **$from の所は "" で囲んだり、外したりしましたが一緒でした。
- ベストアンサー
- kiyomidesuyo
- PHP
- 回答数3
- 正規表現で切り出せません。 < と > の間?
宜しくお願いいたします。 PHP5.1.6です。 メールの受信をするときにメールアドレスだけを切り出したいのですが うまく出来ません。 【例-1】の様に、すると < > の間が表示するのですが 【例-2】の例のように、変数を入れると何も表示しません。 【例-1】で使用した文字列は、【例-2】の$from を echo で表示させたものをコピーしています どのようにしたらいいでしょうか? 宜しくお願いいたします。 【例-1】 $test="教えてお名前 <****@*******.com>"; $pattern = "<(.*)>"; if (preg_match( "/".$pattern."/i", $test, $match ) ){ //$from0 = $match[0]; $from1 = $match[1]; //echo $from0; echo $from1; } これで、うまく echo $from1 でメールアドレスだけ表示してくれます。 *** なぜか、$from0 には元の文字列は表示しませんが。 置き換える元の文字列を下記変数に変えると表示しません。 【例-2】 $mboxes = imap_check($mbox); $head = imap_header($mbox, $i); $from = htmlspecialchars(mb_decode_mimeheader($head->fromaddress)); $pattern = "<(.*)>"; if (preg_match( "/".$pattern."/i", "$from", $match ) ){ //$from0 = $match[0]; $from1 = $match[1]; //echo $from0; echo $from1; } **$from の所は "" で囲んだり、外したりしましたが一緒でした。
- ベストアンサー
- kiyomidesuyo
- PHP
- 回答数3
- 全角数値の判定
教えて頂けますか? フォームからPOSTされた文字列が半角数値、または文字列の場合許可し、全角数値の場合拒否したいのですが 全角数値が is_numeric で数値として認識しない為 うまくいきません。 他に良い方法がありますか? よろしくおねがいします。 if ( strlen($_POST['test']) != mb_strlen($_POST['test'],'UTF-8') && is_numeric($_POST['test']) == TRUE ){ echo '半角で入力してください。<br />'; }
- ベストアンサー
- psychesine
- PHP
- 回答数4
- 複数条件による検索
現在strutsを使用した「検索フォーム」を作成しています。 検索項目は6つあり、それぞれNOT NULLの項目と、NULL可の項目が あります。 全部NOT NULLですと、WHERE句で 「WHERE 項目A = '%?%'」 を条件にすればよいと思うのですが、NULL可の場合は 「WHERE 項目B = '%?%' OR 項目 IS NULL 」 となると思います。 しかしこれですと項目Bに検索条件で入力したものと NULL値のものが両方ヒットしてしまいます・・・ うまく文章がまとまらなくてとても恐縮ですが、 うまく構文を作る方法はないでしょうか・・・。 よろしくお願いします。
- 締切済み
- hiromi4124
- MySQL
- 回答数2
- web上のアンケートに関して
現在ウェブページでアンケートフォームを作成しようとしています。 仕様としては 1、webでの投票が可能 2、CSV等でのはきだし(クロス集計用のフォーマットではきだし) 【現在】 時間、項目別のはきだしは可能ですがそうすると、エクセル上ではセルに横一列に入ってしまいます。 ポイント集計ができません。 ポイント集計にしてしまうと、時間、項目別の細かなはきだしができなくなってしまいます。 ※サーバー情報 DB使用付加、MySQL不可 CGI,PHP5はOK 上記の状態でできるのでしょうか?また、どういったものを参考にしたらいいでしょうか?
- 締切済み
- yyyooo1029
- PHP
- 回答数3
- web上のアンケートに関して
現在ウェブページでアンケートフォームを作成しようとしています。 仕様としては 1、webでの投票が可能 2、CSV等でのはきだし(クロス集計用のフォーマットではきだし) 【現在】 時間、項目別のはきだしは可能ですがそうすると、エクセル上ではセルに横一列に入ってしまいます。 ポイント集計ができません。 ポイント集計にしてしまうと、時間、項目別の細かなはきだしができなくなってしまいます。 ※サーバー情報 DB使用付加、MySQL不可 CGI,PHP5はOK 上記の状態でできるのでしょうか?また、どういったものを参考にしたらいいでしょうか?
- 締切済み
- yyyooo1029
- PHP
- 回答数3
- Access2007における条件付き書式について
条件付き書式についてお尋ねしたいことがあります。 フォームの「数量」フィールドに対し、1と3と5と7については、赤字フォントを適用したいのですが、どのようにすれば1つの条件でまとまりますか? つけられる条件が3つまでなので [数量]=1 [数量]=3 [数量]=5 とやってしまうと、もう一つが条件になりません。 いろいろ考えてみたのですが、 たとえば、 [数量]=1 or 3 or 5 or 7 ↑上記はNGでした。。 わかりません・・。 条件付き書式にこだわってはいませんが、できないのであれば、別のやり方があればそれを受け入れます。
- ベストアンサー
- yukorin_t
- その他(データベース)
- 回答数2
- LEFT JOINの使い方
linkテーブルとcommentテーブルがあります。 下記のようなSQLをPHPから発行すると、 select c.id AS cid, c.pid AS cpid, c.name AS cname, l.id AS id, l.url AS url from comment AS c LEFT JOIN link AS l ON c.pid=l.id order by c.id desc LIMIT 0, 10; $rec['cid'] や $rec['cname'] にはデータがあるのですが $rec['id'] や $rec['url'] にはデータが入っておらずNULLになってしまいます。 ためしに LEFT JOINの左右を下記のように入れ替えみたところ、 select c.id AS cid, c.pid AS cpid, c.name AS cname, l.id AS id, l.url AS url from link AS l JOIN comment AS c LEFT ON c.pid=l.id order by c.id desc LIMIT 0, 10; 今度は $rec['id'] や $rec['url'] にはデータがあるのですが $rec['cid'] や $rec['cname'] にはデータが入っておらずNULLになってしまいました。 どこがおかしいのでしょうか? MYSQLは5.1.22-rcでレンタルサーバーはcoreserverを利用しています。