
はじめて投稿させていただきます。
php初心者です。
本やネットで検索し、ifやforeachやarraysearchやforやといろいろ試していますが、12時間以上かかり、まだ苦戦しています。
これかと思うものをいろいろ書いてみましたが、ほんとに単純な一文でできるように思うのですが、基礎知識が未熟でうまくいきません。
やりたいことは、予約テーブルの時間帯ごとの予約済人数を出し、予約枠(50)から引いて残席数を時間帯ごとに出力。
残席数がない場合は、ラジオボタンを選択できなくする。
$yo_time=$timezon[$i] の時の$goukeiの値をfor文の中で出力したいのですが、どうしても中に組み込めません。
レベルが低くて大変申し訳ないですが、ご教授お願いいたします。
<データベース>
予約テーブル:予約日 予約時間帯 予約人数
例
20/11/13 17:00 25
20/11/15 17:00 10
20/11/15 19:00 20
20/11/15 20:00 50
-省略-
$waku=50;
$sql='SELECT yo_time,sum(ninzu) as goukei FROM yo_table WHERE yo_date=? group by yo_time order by yo_time';
$stmt=$dbh->prepare($sql);
$data[]=$date;
$stmt->execute($data);
$dbh=null;
$timezone=array('17:00','18:00','19:00','20:00','21:00');
for($i=0;$i<count($timezone);$i++)
{
while(true)
{
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
$yo_time=$rec['yo_time'];
$goukei=$rec['goukei'];
if($rec==false)
{
break;
}
$goukei=[$goukei=>$yo_time];
$goukei=array_search($timezone[$i],$goukei);
}
print '<input type="radio" name="time" value="'.$timezone[$i].'" />'.$timezone[$i].'残席数:'.$waku-$goukei[$i].'<br />';
}
<希望出力形式>
〇17:00 残席数 40
〇18:00 残席数 50
〇19:00 残席数 30
20:00 残席数 満席
〇21:00 残席数 50
No.4ベストアンサー
- 回答日時:
printの位置が間違ってました。
下記が訂正です。
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
$timezone=array('17:00','18:00','19:00','20:00','21:00');
foreach($timezone AS $time){
foreach($rec AS $record){
if($time != $record['yo_time']){
$nokori = $waku;
} else {
$nokori = $waku - $record['goukei'];
}
}
print '<input type="radio" name="time" value="'.$time.'" />'.$time.'残席数:'.$nokori.'<br />'."\n";
}
No.3
- 回答日時:
ちょっと美しくない上に、デバッグしてませんが…
雰囲気としてはこんな感じでしょうかね。
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
$timezone=array('17:00','18:00','19:00','20:00','21:00');
foreach($timezone AS $time){
foreach($rec AS $record){
if($time != $record['yo_time']){
{
$nokori = $waku;
} else {
$nokori = $waku - $record['goukei'];
}
print '<input type="radio" name="time" value="'.$time'" />'.$time.'残席数:'.$nokori.'<br />';
}
}
ありがとうございます!!本当に助かります。
書いてみたのですが、
17:00 50
17:00 50
18:00 50
18:00 50
・
・
・
というように2行ずつで、全部50になってしまいました。
if($time != $record['yo_time']){
の最後の{を消したのですが、それがいけないでしょうか?
No.2
- 回答日時:
ゴメンナサイ、追伸です。
例示されてるテーブル内容の予約人数をコピペミスしてるので、私の出力例の人数が違ってました。
正しくは↓です。
予約日 予約時間帯 予約合計 残席数
2020-11-13 17:00:00 25 25
2020-11-15 17:00:00 10 40
2020-11-15 19:00:00 20 30
2020-11-15 20:00:00 50 0
ちなみに、クエリはMySQLを想定しての例示です。
ありがとうございます。
日付で絞っているので、11/15を選択すると、
2020-11-15 17:00:00 40
2020-11-15 19:00:00 30
2020-11-15 20:00:00 0
とまではできるのですが、
issetを使うのかと書いてみるのですが、
&timezoneにない場合50を表示したく、
2020-11-15 17:00:00 40
2020-11-15 18:00:00 50
2020-11-15 19:00:00 30
2020-11-15 20:00:00 0
2020-11-15 21:00:00 50
という表示ができません。
No.1
- 回答日時:
DBのクエリ側でもう少し加工してから処理したほうが簡単じゃないでしょうか。
SELECT 予約日
,予約時間帯
,sum(予約人数) AS '予約合計'
, 50 - sum(予約人数) AS '残席数'
FROM 予約テーブル
GROUP BY 予約日,予約時間帯
予約日 予約時間帯 予約合計 残り
2020-11-13 17:00:00 25 25
2020-11-15 17:00:00 10 40
2020-11-15 19:00:00 30 20
2020-11-15 20:00:00 40 10
これをforで回した方が簡単かと。
早速お返事ありがとうございます!!
本当に困っているので、とても助かります。
とてもすっきりしますね。
満席な時間帯は元から非表示にしちゃうと簡単なのですね!
でも、予約がない時間帯は50とだしたいのですが、それをfor文で出力できるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
美容院の予約内容(メニュー)は...
-
2回目デート直前にLINE減る。
-
美容院でカット、カラーの予約...
-
総合病院にかかる場合は紹介状...
-
サンリオピューロランドの株主...
-
風俗店を予約する際について 一...
-
ホットペッパービューティーで...
-
同棲している彼とのペースがあ...
-
運転免許証を初めて更新します
-
人数様?
-
ラウンドワン[ROUND1] PC団体予...
-
取消・予約の繰り返して2月ま...
-
予約する際、電話とweb予約どっ...
-
正規化したテーブルのinsertの方法
-
PHPで病院の予約システム作成
-
シティヘブンという風俗サイト...
-
新幹線自由席の乗車券と特急券...
-
航空チケットの名前の変更 名前...
-
早朝に新大阪駅で駅弁を買いたい
-
往復航空券の復路を乗らず捨て...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
総合病院にかかる場合は紹介状...
-
風俗店を予約する際について 一...
-
ホットペッパービューティーで...
-
運転免許証を初めて更新します
-
サンリオピューロランドの株主...
-
Switch2が本気で欲しいのですが...
-
美容院の予約内容(メニュー)は...
-
人数様?
-
美容院でカット、カラーの予約...
-
同棲している彼とのペースがあ...
-
ドコモショップの来店予約 家族...
-
ラウンドワン[ROUND1] PC団体予...
-
ホットペッパーの美容院の予約...
-
教えてください。 MNP予約番...
-
Accessで予定表を作成しようと...
-
企業説明会へ2回参加したいと思...
-
2回目デート直前にLINE減る。
-
『予約優先』『予約制』『完全...
-
歯医者って治療は全て終わった...
-
昨日仕事が休みだったので車の...
おすすめ情報
MYSQLです。
予約がないタイムゾーン内の枠も表示したいです。
$waku=50;
と書きましたが、
予約枠テーブル:予約日 予約枠
20/11/13 40
20/11/15 50
と別テーブルがあり、そこから、$wakuへ引っ張っています。
日付は、同フォーム内の上部で日付を選ぶとその日付に合わせて、希望出力形式になるのが目標なのですが、現在同じformの中ではうまく値を渡せず、前ページで日付を選択し、formで渡してきて$dateに入れて絞り込み条件にしています。