※ ChatGPTを利用し、要約された質問です(原文:PHP・MySQL使用で、年齢制限をかける場合の処理について)
PHP・MySQL使用で、年齢制限をかける場合の処理について
2008/03/10 13:53
このQ&Aのポイント
PHP4.3.8、MySQL4.0.16を使用しております。アンケートフォームなどで、次のページに遷移するときにDBの年齢の値を参照して制限をかけるというものを作成しているが、なかなかうまくいかない。男性の10代・20代・30代・40代・50代以上、女性についても同様で、それぞれ100人を越えると制限がかかりアンケート終了となるようにしたい。現在の状況では、17歳と入力した場合に17歳が100カウントされるため、「10代以下」という括りでの制限がどうしてもかけられない。処理方法を教えてほしい。
htmlでは下記のコードをincludeして、$limit_overが「1」ならば終了ページに遷移するようにしている。
PHP4.3.8、MySQL4.0.16を使用しており、アンケートフォームなどで次のページへの遷移時にDBの年齢の値を参照して制限をかける方法を作成している。男性と女性それぞれの10代、20代、30代、40代、50代以上について100人を超える場合は制限をかける仕組みを実現したい。しかし、現在の状況では17歳と入力した場合に17歳が100カウントされてしまい、「10代以下」の制限がかけられない。どのような処理方法が適切か教えてほしい。
PHP・MySQL使用で、年齢制限をかける場合の処理について
どなたかお手すきでしたら、稚拙な質問にお付き合いお願い致します。
PHP4.3.8、MySQL4.0.16を使用しております。
アンケートフォームなどで、次のページに遷移するときにDBの年齢の値を
参照して制限をかけるというものを作成しているのですが、なかなかうまくいきません。
それぞれ男性の10代・20代・30代・40代・50代以上、女性についても前記同様で、
それぞれ100人を越えると制限がかかりアンケート終了となるようにしたいのです。
現在の状況ですと、17歳と入力したならば17歳が100カウントされると
制限がかかるようになってしまっており、「10代以下」という括りでの
制限がどうしてもかけられません。
どのように処理をしたらうまくいくのでしょうか?
よろしくお願いいたします。
htmlでは下記のコードをincludeして、$limit_overが「1」ならば終了ページに遷移するようにしています。
/**********************/ PHP /**********************/
<?php
//----- DB接続 -----//
include("./inc_php/db_connect.php");
//アクセスデータリミッター集計
//SQL文を作成
$sql = "";
$sql = "SELECT f1, f2, end_flag, count(log_id) AS log_id_cnt
FROM table_test
GROUP BY f1, f2, end_flag
HAVING (((f1) = ".$f1.") AND ((f2) = ".$f2.") AND ((end_flag) = 1))";
//SQL文を実行する
$rs = @mysql_db_query($db,$sql);
//行を取得する
$row = @mysql_fetch_array($rs);
$log_id_cnt = 0;
if($row["log_id_cnt"] == NULL){
$log_id_cnt = 0;
}else{
$log_id_cnt = (int)$row["log_id_cnt"];
}
//リミッター人数オーバーチェック
if ( $f1 == 1 && $f2 <= 19 && $log_id_cnt >= 100 || //男性・10代
$f1 == 1 && $f2 >= 20 && $f2 <= 29 && $log_id_cnt >= 100 || //男性・20代
$f1 == 1 && $f2 >= 30 && $f2 <= 39 && $log_id_cnt >= 100 || //男性・30代
$f1 == 1 && $f2 >= 40 && $f2 <= 49 && $log_id_cnt >= 100 || //男性・40代
$f1 == 1 && $f2 >= 50 && $log_id_cnt >= 100 || //男性・50代以上
$f1 == 2 && $f2 <= 19 && $log_id_cnt >= 100 || //女性・10代
$f1 == 2 && $f2 >= 20 && $f2 <= 29 && $log_id_cnt >= 100 || //女性・20代
$f1 == 2 && $f2 >= 30 && $f2 <= 39 && $log_id_cnt >= 100 || //女性・30代
$f1 == 2 && $f2 >= 40 && $f2 <= 49 && $log_id_cnt >= 100 || //女性・40代
$f1 == 2 && $f2 >= 50 && $log_id_cnt >= 100 ){ //女性・50代以上
//リミッター人数オーバー画面出力
//データ追加
//---- 日付け取得 ----
$day_date_01 = "";
$day_date_01 = date("Y/n/j G:i:s");
$lim_over = 1;
/* ----- データを更新 ----- */
$sql_w = "";
$sql_w = "UPDATE table_test SET f1 = '".$f1."',f2 = '".$f2."',day_date_01 = '".$day_date_01."',end_flag = 1,lim_over = '".$lim_over."' WHERE (k)='".$k."'";
//SQL文を実行する
$rs_w = "";
$rs_w = mysql_db_query($db,$sql_w);
}
//DBへの接続を切断
@mysql_close($dbHandle);
}
?>
質問の原文を閉じる
質問の原文を表示する
お礼
書き込みありがとうございます! 四苦八苦してなんとか思ったとおりの処理が出来るようになりました。 SQL部分で年齢を括るという言葉がとてもヒントになりました!