アプリ版:「スタンプのみでお礼する」機能のリリースについて

皆様お世話にあんります。
PHPフォームでMySQLに接続して仮登録しようとしているのですが
Undefined index や variableエラーが出て、画面が真っ白でフォーム送信できない状態になります。
(PHP Notice: Undefined index: mode in。。。)
Undefinedエラーの問題と画面が白くなる問題は分けないといけないかと存じますが、、
下記プログラムのmysqli_fetch_assocの記述の問題でしょうか?

ご多忙のところ恐縮ですが、ご指導ご教示いただければ幸いです。<(_ _)>

ここから----------

require 'define.php';
$msg = " ";
$shop_code = "00";
$s_flg = 0;
$p_flg = 0;
$shop_ff = "" . TAI_A;

$mode = $_REQUEST['mode'];
$rt = $_REQUEST['rt'];

if ($mode == "mode") {
$shop_code = ($_GET['shop_code'] == "" ? $_POST['shop_code'] : $_GET['shop_code']);
$shop_name = ($_GET['shop_name'] == "" ? $_POST['shop_name'] : $_GET['shop_name']);
$shop_ff = ($_GET['shop_ff'] == "" ? $_POST['shop_ff'] : $_GET['shop_ff']);

// DB接続
if (!($cn = mysqli_connect(DBHOST,DBUSER,DBPASSWORD,DBNAME)
)) {
$msg = "DB接続不可"; exit; // DB接続不可
}

$sql = "select * from " . TENPO_TBL . " where shop_code = '" . $shop_code . "' ";
$rs = mysqli_query($cn, $sql);
if (mysqli_num_rows($rs) > 0) {
mysqli_close($cn);
$msg = "既に登録済みです。";
} else {
$sql = "select max(receipt_no) as max_receipt_no from " . TENPO_TBL . " ";
$rs = mysqli_query($cn, $sql);
if (mysqli_fetch_assoc($rs) == "" or is_null (mysqli_fetch_assoc($rs))) {
$max_receipt_no = 1;
} else {
$max_receipt_no = mysqli_fetch_assoc($rs) + 1;
}
$sql = "begin";
$rs = mysqli_query($cn, $sql);
$sql = "insert into " . TENPO_TBL . " values (";
$sql .="0, "; // 仮登録フラグ 正式登録true/仮登録false
$sql .= $max_receipt_no . ", "; // 受付番号 serial
$sql .= "'" . $shop_code . "', ";
$sql .= "'" . $shop_name . "', ";
$sql .= "'" . $shop_ff . "', ";
$sql .= "now(), "; // 登録日時
$sql .= "now() ) "; // 更新日時
if (!($rs = mysqli_query($cn, $sql))) { mysqli_close($cn); $msg = "insert 不可"; exit; }
$sql = "commit";
$rs = mysqli_query($cn, $sql);
// DB切断
mysqli_close($cn);
$msg = "登録しました。";
}
}

A 回答 (1件)

画面が真っ白になる理由は上記コードのみではわからないですが、PHP Notice: Undefined index: mode in..に関しては、$_REQUESTに「mode」というキーが存在しないからだと思います。


この画面に遷移する前の画面で、
<input type="text" name="mode" value="xxx">
のような記述があれば、この問題が発生しないはずです。
    • good
    • 0
この回答へのお礼

以前PostgressSQLで動いていたシステムの当該前ページを見たのですが mode の記述がありませんでした。
$_REQUESTは、PHP7になって厳密になったみたいですね。

ご教示ありがとうございました。

お礼日時:2018/04/02 10:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!