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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

Q&A

解決済

3回答

1325閲覧

入力された値が数値化どうか、0でないかをチェックする

bitcoiner2045

総合スコア47

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

0グッド

0クリップ

投稿2018/07/27 04:51

割り勘フォームで合計金額や人数を入力して実行しても、localhost/193.phpで何も表示されません。エラーコードの該当箇所を見ても何が間違っているのかが理解できません。どなたかご教示頂けると幸いです。お手数おかけしますが何卒宜しくお願いします。

エラーコード

[27-Jul-2018 04:47:54 UTC] PHP Fatal error: Uncaught Error: Call to undefined function cken() in /Applications/MAMP/htdocs/193.php:13 Stack trace: #0 {main} thrown in /Applications/MAMP/htdocs/193.php on line 13

186.php

<?php function es($data, $charset = 'UTF-8') { if (is_array($data)) { return array_map(__METHOD__, $data); } else { return htmlspecialchars ($data, ENT_QUOTES, $charset); } } ?>

192.php

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>フォーム入力</title> <link href=" ../../css/style.css" rel="stylesheet"> </head> <body> <div>  <form method="POST" action="193.php">    <ul> <li><label>合計金額:<input type="number" name="goukei" ></label></li> <li><label>人数:<input type="number" name="ninzu" ></label></li> <li><input type="submit" value="割り勘する" ></li> </ul> </form> </div> </body> </html>

193.php

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>割り勘計算</title>  <link href=" ../../css/style.css" rel="stylesheet"> </head> <body> <div> <?php require_once("186.php"); if (!cken($_POST)) { $encoding = mb_internal_encoding(); $err = "Encoding Error! The expected encoding is " .$encoding; exit($err); } $_POST = es($_POST); ?> <?php $errors = []; ?> <?php if (isset($_POST[ 'goukei' ])) { $goukei = $_POST[ 'goukei' ]; if (!ctype_digit($goukei)) { $errors[] = "合計金額を整数で入力して下さい。"; } } else { $errors[] = "合計金額が未設定"; } if (isset($_POST[ 'ninzu' ])) { $ninzu = $_POST[ 'ninzu' ]; if (!ctype_digit($ninzu)) { $errors[] = "人数を整数で入力して下さい。"; } else if ($ninzu==0) { $errors[] = "0人では割れません"; } } else { $errors[] = "人数が未設定"; } ?> <?php if (count($errors)>0) { echo '<ol class="error">'; foreach ($errors as $value) { echo "<li>" , $value , "</li>"; } echo "</ol>"; ?> <form method="POST" action="192.php"> <ul> <li><input type="submit" value="戻る" ></li> </ul> </form> <?php } else { $amari = $goukei % $ninzu; $price = ($goukei - $amari) / $ninzu; $goukei_fmt = number_format($goukei); $price_fmt = number_format($price); echo "{$goukei_fmt}円を{$ninzu}人で割り勘します。","<br>"; echo "一人あたり{$price_fmt}円を支払えば、不足分は{$amari}円です。"; } ?> </div> </body> </html>

イメージ説明

イメージ説明

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

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

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

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

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

guest

回答3

0

未定義のfunctionであるcken()を呼ぼうとしている為エラーが発生しています。

投稿2018/07/27 04:54

terrace

総合スコア249

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

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

0

ベストアンサー

I'm a ESPer.

186.phpは↓ではないのですか?

php

1<?php 2// XSS対策のためのHTMLエスケープ 3function es($data, $charset='UTF-8'){ 4 // $dataが配列のとき 5 if (is_array($data)){ 6 // 再帰呼び出し 7 return array_map(__METHOD__, $data); 8 } else { 9 // HTMLエスケープを行う 10 return htmlspecialchars($data, ENT_QUOTES, $charset); 11 } 12} 13 14// 配列の文字エンコードのチェックを行う 15function cken(array $data){ 16 $result = true; 17 foreach ($data as $key => $value) { 18 if (is_array($value)){ 19 // 含まれている値が配列のとき文字列に連結する 20 $value = implode("", $value); 21 } 22 if (!mb_check_encoding($value)){ 23 // 文字エンコードが一致しないとき 24 $result = false; 25 // foreachでの走査をブレイクする 26 break; 27 } 28 } 29 return $result; 30} 31// ?>

もしかして「詳細! PHP 7+MySQL 入門ノート(大重 美幸 (著))」を参照したりしてます?
参考

投稿2018/07/27 06:29

papinianus

総合スコア12705

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

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

0

何故分からないのかが、全然分かりません。ckenという関数はどこで定義しているつもりですか?

投稿2018/07/27 04:58

otn

総合スコア84499

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問