質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

受付中

自動販売機で未入力の時にエラー表示

takashi5
takashi5

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1回答

0評価

1クリップ

20閲覧

投稿2020/04/16 07:57

自動販売機で購入する課題を作成しています。その中で、テキストの金額とラジオボタンを選択しなかった時
に、エラー分を出したいのですが、ラジオボタンが押せていないエラー文が出ません。
ラジオボタンの値が空の時を実現したいと思っているのですが、分かりません。よろしくお願いします。

php

<?php //ステータス公開のドリンク情報は //商品画像、商品名、値段 $host = 'localhost'; // データベースのホスト名又はIPアドレス $user = 'codecamp31549'; // MySQLのユーザ名 $passwd = 'RXFXXBTL'; // MySQLのパスワード $dbname = 'codecamp31549'; // データベース名 $image = ''; $name = ''; $price = ''; $inventory = ''; $open_status = 1; $goods_data = []; $check = 0; $money = 0; $drink_id = ''; $link= mysqli_connect($host, $user, $passwd, $dbname); if($link) { mysqli_set_charset($link, 'utf8'); $sql = "SELECT image,name, price,inventory,id FROM drink_table WHERE open_status = " .$open_status; // var_dump($sql); $result = mysqli_query($link, $sql); while ($row = mysqli_fetch_assoc($result)) { $goods_data[] = $row; // var_dump($goods_data); } mysqli_free_result($result);//selectのすぐ後ろに付けないとアラームになる if($_SERVER['REQUEST_METHOD'] === 'POST') { if(isset($_POST['check'])) { $check = (int)$_POST['check']; } // if(isset($_POST['checker'])) { // $checker = (int)$_POST['checker']; // var_dump($checker); // var_dump($check); // } } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charaset="UTF-8"> <title>購入ページ</title> </head> <body> <h1>自動販売機</h1> <form method="post"action="./result.php"> <label>金額<input type="text" name="money" value=""></label> <ul> <input type="hidden" name="open_status"> <?php foreach ($goods_data as $value) { ?> <img src = "./uploads/<?php print htmlspecialchars($value['image'],ENT_QUOTES,'UTF-8');?>"> <li><?php print htmlspecialchars($value['name'],ENT_QUOTES,'UTF-8'); ?></li> <li><?php print htmlspecialchars($value['price'],ENT_QUOTES,'UTF-8'); ?></li> <p><?php if((int)$value['inventory'] === 0) { ?> <?php print '売り切れ'; ?> <?php } else { ?> <input type="radio" name="id" value=" <?php echo $value['id']; ?>"> <input type="hidden" name="checker" value="1"> <?php }?> </p> <?php } ?> </ul> <input type="submit" name="purchase" value="購入する"> </form> </body> </html>

php

<?php $host = 'localhost'; // データベースのホスト名又はIPアドレス $user = 'codecamp31549'; // MySQLのユーザ名 $passwd = 'RXFXXBTL'; // MySQLのパスワード $dbname = 'codecamp31549'; // データベース名 $image = ''; $name = ''; $price = ''; $inventory = ''; $open_status = 1; $goods_data = []; $money = (int)$_POST['money']; // var_dump($drink_id); $drink_id = 0; $err_msg = []; // var_dump($money); $link= mysqli_connect($host, $user, $passwd, $dbname); if($link) { mysqli_set_charset($link, 'utf8'); if(isset($_POST['purchase']) === true) { if($money === 0){ $err_msg[] = '金額を入力してください'; //このコードところが質問箇所です } else if (isset($_POST['id']) === false) { var_dump($drink_id); $err_msg[] = '商品を選んでください'; } if(isset($_POST['money']) ===true && (isset($_POST['id']) === true)) { $money = (int)$_POST['money']; $drink_id = (int)$_POST['id']; var_dump($drink_id); $sql = "SELECT image,name, price,inventory,id FROM drink_table WHERE open_status = " .$open_status. " AND id = " . $drink_id; $result = mysqli_query($link, $sql); $row = mysqli_fetch_assoc($result); $charge = $money - $row['price']; // var_dump($charge); mysqli_free_result($result);//selectのすぐ後ろに付けないとアラームになる $sql = "UPDATE drink_table SET inventory = inventory - 1 WHERE id = ".$drink_id ; $result = mysqli_query($link, $sql); } } } // var_dump($charge); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charaset="UTF-8"> <title>購入結果</title> </head> <body> <h1>自動販売機</h1> <div><img src="./uploads/<?php echo $row['image']; ?>"></div> <p>がしゃん!【<?php echo $row['name']; ?>】を買えました!</p> <p>おつりは【<?php echo $charge; ?>】です</p> <?php foreach($err_msg as $key => $string) { ?> <p><?php echo $string ; ?></p> <?php } ?> </body> </html>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

yambejp
yambejp

2020/04/17 03:48

課題なのにmysqliの手続き型で作っているのですか? せめてオブジェクト指向型ないしpdoでやったほうが 今後のためになると思いますが・・・

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。