• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:記事の掲載期間を指定したい)

PHP+MySqlで記事の掲載期間を指定する方法

このQ&Aのポイント
  • PHPとMySqlを使用して会員サイトに記事を掲載する方法を紹介します。
  • テーブルに記事を登録し、日付を指定して掲載することができます。
  • 記事の掲載期間を指定するSQL文の書き方や、「この記事の記載は終了しました」という文章を表示する方法について説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

判定方法としては WHERE CURDATE() BETWEEN start_date AND lastdate のようなやり方ですね 終了したものを選択するなら WHERE CURDATE() > lastdate ですが、同じリクエストでやるには抽出したデータから PHPで判定する必要があるでしょうね

akiaki64
質問者

お礼

ご回答ありがとうございます。 ご参考にさせて頂きます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Mysqlで掲載開始日と掲載終了日が設定されている商品レコードを抽出し

    Mysqlで掲載開始日と掲載終了日が設定されている商品レコードを抽出したい Perl+Mysqlでデーターの抽出する際に困っております。 商品テーブル(item)がありその中には、date型のstart_dateとlast_dateのカラムがあります。 +-----+----------+-----------+ |itemid | start_date |  last_date   | +-----+----------+------------+ | a001 | 2010-08-31 | 2010-09-31  | | a002 | 2010-09-01 | 2010-09-21  | | b002 |  NULL    |   NULL    | | c003 |  NULL    |  2010-09-03  | +-----+------------+------------+ まず、本日が2010/08/30だったとしたばあい、b002とc003は表示されるようにしたいのです。 Perl上で start_date とlast_dateの期間内であればprintすればいいというこではなく、 あくまでslq文上一回のQueryでそれを実現したいのです。 といいますのも、ページ送り(ページャー)を表示させるために予め 抽出条件の全レコードの件数を取得する必要があります。 大変恐れ入りますが、ご教授お願いいたします。

    • ベストアンサー
    • MySQL
  • MYSQLに更新日を自動的に挿入

    PHPとMYSQLで会員制のページを作っています。 更新した時、自動的に日付を入れようしていますがうまく出来ません、 何方か教えていただけませんか。。 よろしくお願いいたします。 下記のようにしています。 MYSQL table mem id int(10) name vacher(100) pass varcher(8) regdate date PHP $sql = "insert into mem (id , name , pass ,regdate) values (\"id\", \"$name\", \"$pass\", date())";

    • ベストアンサー
    • PHP
  • SQLで連続したカラムが何個あるかを求める方法

    お世話になっております。 PHPとmysqlでサイトを作っておりまして、そのログを分析しようとしています。 あるテーブルにユーザー名とログイン日付が入ったテーブルが有ったとして、その中で連続○日ログインしていた人は○人という結果を取りたいと考えているのですがこれをSQLで処理する方法はありますでしょうか? 今のところ、PHPで全データを取った後にPHP側で処理するしかないかと思っているのですが、件数が多いため可能であればmysql側で処理したいと思っています。 日付はUNIXTIMEに直すなどすればINTEGERに変換出来るとは思っているのですが、日付型(難しいようであればINT型の連続値でも問題ありません)でSQLで処理出来る方法はあるのでしょうか? ○○結合をすれば良いなど手がかりなど教えていただけると助かります。 ■テーブル username   login_date ほげ      2014/5/1 ほげ      2014/5/2 ほげ      2014/5/3 ほげ      2014/5/4 ふーばー   2014/5/2 ふーばー   2014/5/3 あああ     2014/5/1 あああ     2014/5/3 あああ     2014/5/4 ■ほしい結果 4日連続   1名 2日連続   2名

  • 会員制サイトで最終ログイン日を取得

    PHP4 Mysql4 で運営する会員制サイトで ログインしてきたIDで、日付を自動で取得したいのですが 的外れな事をしているのか? 出来ません。。。 トライアンドエラーで頑張って見たのですが、 どんどんおかしな方へ行っているみたいなので、質問させてください。 IDでログインした先のページを以下のようにしているのですが 日付が更新できません。 IDは varchar(5) で a001 b001 のようにアルファベットと数字になっています 更新日は reg_date で date にしています。 <?PHP require_once("auth.php"); require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $sql =" select * from member where id=$id";  $rst = mysql_query($sql, $con); $sql ="update member set reg_date =date() where id = $id"; $con = mysql_close($con); ?> 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPで表示期間の指定がしたい

    PHPで表示期間の指定がしたい こんにちは、いつもお世話になっております。 数日間、PHPカテゴリでPHPの表示期間指定についてやり取りをさせていただいてました。 http://okwave.jp/qa/q6102388.html 質問の概要は、PostgreSQLのデータベースの情報を表示するPHPを今日以降の1ヶ月間分だけを表示したいというものです。 何度も回答をいただいてPHPを修正していたのですが、エラーが出てしまいます。 PostgreSQLのカテゴリで聞いたほうが良いのではないかと回答者様にアドバイスをいただき、こちらに伺いに参りました。 情報は以下の通りです。 (1)テーブルの構造と入ってるデータ ------------------------------------------------------------ ee 年月日(「20100811」の形式) ti 記事タイトル na 記事内容 ca カテゴリー ------------------------------------------------------------ (2)回答者様に修正していただいたソース =================================================== $sql = "SELECT ee,ti,na,ca FROM テーブル名 WHERE ca = 'カテゴリー名'"; if($ym != "")$sql .= " and TO_DATE(ee, 'YYYYMMDD') BETWEEN TO_DATE('{$ym}', 'YYYYMMDD') AND TO_DATE('{$ym}', 'YYYYMMDD') + '1 months' + '-1 days'"; $sql .= " ORDER BY ee ASC"; =================================================== (3)2で表示されたエラー =================================================== Warning: pg_exec(): Query failed: ERROR: operator is not unique: date + "unknown" HINT: Could not choose a best candidate operator. You may need to add explicit type casts. in PHPのアドレス on line 102 ------------------------------------------------ ▼101行目の内容 $result = pg_exec($sql); ------------------------------------------------ Warning: pg_numrows(): supplied argument is not a valid PostgreSQL result resource in in PHPのアドレス on line 103 ------------------------------------------------ ▼102行目の内容 $rows = pg_numrows($result); ------------------------------------------------ Warning: pg_freeresult(): supplied argument is not a valid PostgreSQL result resource in in PHPのアドレス on line 147 ------------------------------------------------ ▼146行目の内容 pg_freeresult($result); ------------------------------------------------ この後に、何も情報がなかった場合の規定のメッセージが表示されます=================================================== 以上です。 PHPもデータベースも恥ずかしながら無知のため、お力をお貸しいただけると助かります。 よろしくお願いします。

  • PHPでのMySQLデータ抽出でおかしな現象

    お世話になります。 是非、知恵を貸していただきたく投稿させていただきました。 PHPにてMySQLのデータを持ってくる際におかしな現象がおきております。 登録日(entry_date)をデータ型datetime持つテーブルがあります。 そのテーブルに対し、以下のSQL文を発行し実行したところ、phpmyadminでは正常に動作するのに、PHPではある日付でのみ結果がおかしいという現象が発生しました。 ●正常パターン(2016-01) SELECT COUNT(*) AS cnt FROM テーブル WHERE DATE_FORMAT(entry_date, '%Y-%m')='2016-01'; phpmyadmin上で動作させた結果 cnt --- 155 phpで動作させた結果 Array ( [0] => Array ( [cnt] => 155 ) ) ●異常パターン(2017-01) SELECT COUNT(*) AS cnt FROM テーブル WHERE DATE_FORMAT(entry_date, '%Y-%m')='2017-01'; phpmyadmin上で動作させた結果 cnt --- 19 phpで動作させた結果 Array ( [0] => Array ( [cnt] => 0 ) ) 異常になるのは、何故か日付指定が「2017-01」の場合のみで、他の日付では問題ありません。 「2017」年のほかの日付はまだ存在しないので、そちらは確認できないのですが。 PDOが駄目なのかと思い、PDO以外でも実行してみましたが、結果は変わりませんでした。 ちなみに、SQL文で、DATE_FORMATを利用せずに、 entry_date LIKE '2017-01%' や entry_date between '2017-01-01 00:00:00' and '2017-01-31 23:59:59' なども実行してみたのですが、結果は一緒でした。 検索日付で動作がおかしくなるなんてことがあるのでしょうか・・・ <<環境>> さくらスタンダード mysqlバージョン:5.5 phpバージョン:5.3 もし何か思い当たること等ございましたら、ご教授願いたく思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP5+MySQLで現在日時とDB内の開始日時と終了日時との比較の方

    PHP5+MySQLで現在日時とDB内の開始日時と終了日時との比較の方法を教えてください。 table_a id start end ----+--------------------+---------------------+ 001 2010-01-01 10:00:00 2010-01-03 18:30:00 002 2010-01-01 12:00:00 2010-01-05 20:00:00 ・ ・ というデータがある時、 現在の日時がid:001のstartとendの間だったら1、 start前だったら0、endより後だったら2の値を表示させるにはどうしたらいいのでしょうか? $sql = "SELECT A.id ,A.start ,A.end FROM table_a A WHERE A.id = ".$id." "; $result = mysql_query($sql); で取得して time()などと比較すればいいとは思ってますが、DBから持ってきた日付との比較方法がわかりません。

    • ベストアンサー
    • PHP
  • mysqlでdate型のカラムに今日から1年分の日付を挿入するSQLは

    mysqlでdate型のカラムに今日から1年分の日付を挿入するSQLは書けますでしょうか ・テーブル  T_TEMP ・カラム  M_DATE (DATE型) ・SQL  insert into T_TEMP (select ???); 以上、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • PHPで期間指定の実装

    PHPで期間指定の検索機能を実装しています。var_dump($year)で値は取り出せていますが、SQL文の部分が分かりません。SQL文の部分をどのように修正すればいいですか? テーブルの構造は以下の通りです。 (timecardテーブル :id、 begin、 finish 、date ) (userテーブル :user_id、user_name、password) if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['year'])) { $year = filter_input(INPUT_POST, 'year'); try { // 該当する日付をSELECT文で検索する $sql = 'SELECT * FROM timecard WHERE date = ?'; $stmt = $dbh->prepare($sql); $stmt->bindValue(1, $year, PDO::PARAM_STR); $stmt->execute(); //全て取得するのでfetchALLでレコードを取得する $result = $stmt->fetchALL(); // phpmyadminには、2021-10-03の形式で保存されているので、2021の部分だけを抽出して$yearと比較する。 if(count($result) > 0 && $year === substr($result['date'], 0, 4)) { $msg[] = ('指定の出退勤の記録は以下の通りです。'); }else { $err_msg[] = ('指定の出退勤の記録はありません。'); } } catch (PDOException $e) { $err_msg[] = '出退勤の記録を取得できませんでした。'; } } } <div class="search"> <form method="post"> <?php for ($i=2000; $i <= 2021; $i++) { $year .= '<option value="'.$i.'">'.$i.'年</option>'; } ?> <input type="hidden" name="year" value="<?php $year;?>"> <select name="year">'.<?php echo $year;?> .'</select> <input type="submit" value="検索する"> </form> </div>

    • 締切済み
    • PHP
  • mysqlのif文かcase文で複数条件を指定する

    mysql初心者です。 3つのテーブルでスケジュールの仕組みを考えていますが Staff→スタッフデータ id  name 1   田中 Sch1→日付出勤 id  start_time  end_time  date  flg 1   9:00   22:30   2014-03-17   1 Sch2→曜日出勤 id  start_time  end_time  dateW 1   9:00   22:30   1 ※dateWは曜日(0~6) 日付出勤優先なので、なければ曜日出勤を出力します。 たとえば、 田中さん (1)日付登録:2014-03-17(月) 09:00-18:00 (2)曜日登録:1(月) 10:00-19:00 (3)曜日登録:2(火) 09:00-18:00 PHP側でやるなら、 for (一週間分回す) { if (Sch1[date]) { 日付設定出力 }else{ 曜日設定出力 } } 全出力した(日付、曜日)データを一個の配列に入れて、start_timeでソートするかで出力する。。 Mysqlのif文かcase文分でどう書いたらいいですか? 説明が下手ですが、 どなたかご存知の方がいらっしゃれば是非、ご教授ください。

    • ベストアンサー
    • MySQL