ラジオボタンを使う(PHP)
ラジオボタンを作ってますが、31行目がエラー表示されます。
綴りも合ってますし、 全角も入ってないです。
何が問題だと思われますか。
お手数おかけしますが、ご回答頂けると幸いです。
宜しくお願いします。
<!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("util.php");
//文字エンコードの検証
if (!cken($_POST)) {
$encoding = mb_internal_encoding();
$err = "Encoding Error! The expected encoding is " . $encoding;
// エラーメッセージを出して、以下のコードを全てキャンセルする
exit($err);
}
//HTMLエスケープ(XSS対策)
$_POST = es($_POST);
?>
<?php
//エラーを入れる配列
$error = [];
//POSTされた性別を取り出す
if (isSet($_POST[ "sex" ])) {
//性別かどうか確認する
$sexValue = [ "男性","女性" ];
//$sexValueに含まれている値ならばtrue
$isSex = in_array($_POST[ "sex" ], $sexValues);
if ($isSex) {
//選択されている値を取り出す
$sex = $_POST[ "sex" ];
} else {
$sex = "error";
$error[] = "「性別」に入力エラーがありました。";
}
} else {
//POSTされた値がない時
$isSex = false;
$sex = "男性";
}
//POSTされた結婚を取り出す
if (isSet($_POST[ "marriage" ] )) {
//結婚かどうか確認する
$marriageValues = [ "独身" , "既婚" , "同棲中" ];
// $marriageValuesに含まれている値ならtrue
$isMarriage = in_array($_POST[ "marriage" ],$marriageValues);
if ($isMarriage) {
//選択されている値を取り出す
$marriage = $_POST[ "marriage" ];
} else {
$marriage = "error";
$error[] = "「結婚」に入力エラーがありました。";
}
} else {
//POSTされた値がない時
$isMarriage = false;
$marriage = "独身";
}
?>
<?php
//初期値でチェックするかどうか
function checked($value, $question) {
if (is_array($question)) {
//配列の時、値が含まれていればtrue
$isChecked = in_array($value, $question);
} else {
//配列ではない時、値が一致すればtrue
$isChecked = ($value===$question);
}
if ($isChecked) {
//チェックする
echo "checked";
} else {
echo "";
}
}
?>
<form method="POST" action="<?php echo es($_SERVER['PHP_SELF']); ?>">
<ul>
<li><span>性別:</span>
<label><input type="radio" name="sex" value="男性" <?php checked("男性",$sex); ?>>男性</label>
<label><input type="radio" name="sex" value="女性" <?php checked("女性",$sex); ?>>女性</label>
</li>
<li><span>結婚:</span>
<label><input type="radio" name="marriage" value="独身" <?php checked("独身",$marriage); ?>>独身</label>
<label><input type="radio" name="marriage" value="既婚" <?php checked("既婚",$marriage); ?>>既婚</label>
<label><input type="radio" name="marriage" value="同棲中" <?php checked("同棲中",$marriage); ?>>同棲中</label>
</li>
<li><input type="submit" value="送信する" ></li>
</ul>
</form>
<?php
//性別と結婚が受信されていれば結果を表示する
$isSubmited = $isSex && $isMarriage;
if ($isSubmited) {
echo "<HR>";
echo "あなたは「{$sex}、{$marriage}」です。";
}
?>
<?php
//エラー表示
if (count($error)>0) {
echo "<HR>";
//値を"<br>"で連結して表示する
echo '<span class="error">' , implode("<br>",$error), '</span>';
}
?>
</div>
</body>
</html>
エラーコード
[30-Jul-2018 03:00:29 UTC] PHP Notice: Undefined variable: sexValues in /Applications/MAMP/htdocs/profile.php on line 31
[30-Jul-2018 03:00:29 UTC] PHP Warning: in_array() expects parameter 2 to be array, null given in /Applications/MAMP/htdocs/profile.php on line 31