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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1281閲覧

PHPでswitch文の中のプログラムが実行されない。

donut4

総合スコア170

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/04/10 04:00

初歩的な質問になってしますかもしれませんがよろしくお願いいたします。
現在php(べた書き)で簡単な電卓アプリを作っているのですが計算結果がかえってこないため困っております。
switch文の中の計算処理が行われていないような感じです。

変数や定数の取得の仕方を勘違いしているような気もするので
その部分の文法なども教えて頂けたら幸いです。

・Calculator.php

<?php require_once('Calculate.php'); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <title>電卓</title> <link rel="stylesheet" type="text/css" href="../css/calculator.css"> </head> <body> <div> <?php if(isset($calcu) && $calcu->iserror())echo($calcu->getErrormessage()) ?> </div> <form name="clcuform" onSubmit="submitscript()"> <input type="text" name="value1" id="value1" class="CalcArea" value="<?php if(isset($calcu))echo($calcu->getVal1()) ?>" size="10" maxlengh="10" > <select name="operand" class="SymbolArea"> <option value="-"></option> <option <?php if(isset($calcu) && $calcu->getOperand() == Calculate::PLUS )echo("selected") ?> value="plus">+</option> <option <?php if(isset($calcu) && $calcu->getOperand() == Calculate::MINUS )echo("selected") ?> value="<?php echo( Calculate::MINUS )?>">-</option> <option <?php if(isset($calcu) && $calcu->getOperand() == Calculate::MULTIPLIED )echo("selected") ?> value="<?php echo( Calculate::MULTIPLIED )?>">×</option> <option <?php if(isset($calcu) && $calcu->getOperand() == Calculate::DIVIDED )echo("selected") ?> value="<?php echo( Calculate::DIVIDED )?>">÷</option> </select> <input type="text" name="value2" id="value2" class="CalcArea" value="<?php if(isset($calcu))echo($calcu->getVal2()) ?>" size="10" maxlengh="10" > = <input type="text" name="result" id="result" class="CalcArea" value="<?php if(isset($calcu))echo($calcu->getResult()) ?>" size="10" maxlengh="10" > <table border="0" class="ButtonArea"> <tr> <td><button class="Button" type="button" onclick="setNum(7)" value="7">7</button></td> <td><button class="Button" type="button" onclick="setNum(8)" value="8">8</button></td> <td><button class="Button" type="button" onclick="setNum(9)" value="9">9</button></td> </tr> <tr> <td><button class="Button" type="button" onclick="setNum(4)" value="4">4</button></td> <td><button class="Button" type="button" onclick="setNum(5)" value="5">5</button></td> <td><button class="Button" type="button" onclick="setNum(6)" value="6">6</button></td> </tr> <tr> <td><button class="Button" type="button" onclick="setNum(1)" value="1">1</button></td> <td><button class="Button" type="button" onclick="setNum(2)" value="2">2</button></td> <td><button class="Button" type="button" onclick="setNum(3)" value="3">3</button></td> </tr> <tr> <td></td> <td><button class="Button" type="button" onclick="setNum(0)" value="0">0</button></td> <td><input class="Button" type="submit" onclick="prepareaction()" value="="></td> </tr> </table> </form> </body> <script> function setNum(val){ //最大入力桁数 const maxlength = 2; //最大入力桁数まで入力可能にさせる if( $("#value1").val().length < maxlength && $('[name=operand] option:selected').val() == "-" ) { var dispval = $("#value1").val() + val; $("#value1").val(dispval); }else if( $("#value2").val().length < maxlength ){ var dispval = $("#value2").val() + val; $("#value2").val(dispval); } } </script> <script> function submitscript(){ if( $('[name=operand] option:selected').text() == "÷" && ($("#value2").val() == "0" || $("#value2").val() == "00") ) { alert("二つ目の数はゼロ以外の数にしてください。"); }else{ document.clcuform.action="Calcuexe.php"; document.clcuform.method="POST"; } } </script> </html>

・Calcuexe.php

<?php require_once('Calculate.php'); $val1=$_POST['value1']; $operand=$_POST['operand']; $val2=$_POST['value2']; //画面から受け取った値をインスタンス化 $calcu = new calculate($val1, $operand, $val2); //入力値のエラーチェック if( $calcu->valuevalidate() ){ require_once('Calculator.php'); exit; } //計算実行 $calcu->calcuexe(); require_once('Calculator.php'); ?>

・Calculate.php

<?php class Calculate { private $val1;//値1 private $val2;//値2 private $operand;//演算記号 private $result;//計算結果 //演算記号の定数 const PLUS = 'plus'; const MINUS = 'minus'; const MULTIPLIED = 'multiplied'; const DIVIDED = 'divided'; //入力可能な最大桁数 const MAXLENGTH = '2'; private $iserror = false; private $errormessage = ""; //コンストラクタ public function __construct($val1, $operand, $val2) { var_dump($this->operand);//NULL $this->val1 = $val1; $this->operand = $operand; $this->val2 = $val2; var_dump($this->operand);//string(4) "plus" } //値1 public function getVal1() { return $this->val1; } //演算記号 public function getOperand() { return $this->operand; } //値2 public function getVal2() { return $this->val2; } //計算結果 public function getResult() { return $this->result; } //エラー判定 public function iserror() { return $this->iserror; } //エラーメッセージ設定 public function getErrormessage() { return $this->errormessage; } //入力値バリデーション public function valuevalidate(){ //入力値が数字かどうかのチェック if( !is_numeric($this->val1) || !is_numeric($this->val2) ){ $this->errormessage = "半角数字で入力してください"; $this->iserror = true; return true; } //入力値が最大桁数以下かチェック if( strlen($this->val1) > self::MAXLENGTH || strlen($this->val2) > self::MAXLENGTH ){ $this->errormessage = "入力桁数は".self::MAXLENGTH."桁以下にしてください"; $this->iserror = true; return true; } //ゼロ除算チェック if( $this->operand = self::DIVIDED && $this->val2 == "0" || $this->val2 == "00" ){ $this->errormessage = "二つ目の数はゼロ以外の数にしてください。"; $this->iserror = true; return true; } return $this->iserror; } //実際に計算処理をする public function calcuexe(){ var_dump($this->operand);//bool(false) ←なぜstring(4) "plus"にならない? switch ($this->operand) { case self::PLUS: $this->result = $this->val1 + $this->val2; break; case self::MINUS: $this->result = $this->val1 - $this->val2; break; case self::MULTIPLIED: $this->result = $this->val1 * $this->val2; break; case self::DIVIDED: $this->result = $this->val1 / $this->val2; break; } return; } } ?>

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ちゃんと見てないけど、これじゃない?

diff

1-if( $this->operand = self::DIVIDED && $this->val2 == "0" || $this->val2 == "00" ) 2+if( $this->operand == self::DIVIDED && $this->val2 == "0" || $this->val2 == "00" )

投稿2020/04/10 04:38

編集2020/04/10 04:39
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

donut4

2020/04/10 06:01

直りました。ありがとうございます。 なんでself::DIVIDEDを入力したらfalseになるんでしょうねw
退会済みユーザー

退会済みユーザー

2020/04/10 06:55 編集

演算子の優先度をわかった上で使うのであればいいけど、 タイプミスなどによって崩れないよう、 わかりやすくカッコで括っとくのも手ではないかと。 === じゃなく == 使うあたりも型チェックから逃げてる感じがあるし。
guest

0

ifで書き直して、きちんと想定通り合致するかチェックしてみればいいでしょう

投稿2020/04/10 04:06

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問