phpのクラス呼び出しについてです。
↓性別のラジオボックスのクラス
ファイル名:Gender.php
<?php class Gender{ static function getGender(){ $checked = ( filter_input(INPUT_POST, 'gender') === '男性') ? ' checked="checked"' : ''; $options = '<input type="radio" class="men" id="men" name="gender" value="男性" ' . $checked . ' required />男性'; $checked = ( filter_input(INPUT_POST, 'gender') === '女性') ? ' checked="checked"' : ''; $options .= '<input type="radio" class="woman" id="woman" name="gender" value="女性" ' . $checked . ' />女性'; return $options; } } ?>
↓使いたいところで呼び出して使う。
ファイル名:register_human_ja.php
<tr> <td>性別</td> <td><?php echo Gender::getGender(); ?></td> </tr>
入力に誤りがあって再度ページを読み込んでも
$checked = ( filter_input(INPUT_POST, 'gender') === '男性') ? ' checked="checked"' : '';
これによって、以前入力したものを選択している状態にできました。
これを踏まえて、プロフィール更新でも同じことをします。
<?php class Gender{ static function getGender(){ $checked = ( $row['gender'] === '男性') ? ' checked="checked"' : ''; $options = '<input type="radio" class="men" id="men" name="gender" value="男性" ' . $checked . ' required />男性'; $checked = ( $row['gender'] === '女性') ? ' checked="checked"' : ''; $options .= '<input type="radio" class="woman" id="woman" name="gender" value="女性" ' . $checked . ' />女性'; return $options; } } ?>
↓使いたいところで呼び出して使う。
ファイル名:register_human_ja.php
<?php $dsn = 'mysql:dbname=test;host=localhost;charset=utf8'; $user = 'root'; $password = ''; $option = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION); $pdo = new PDO($dsn, $user, $password, $option); $sql = "SELECT * FROM user_data WHERE id=203"; $stmt = $pdo->query($sql); $row = $stmt->fetch(); ?> <tr> <td>性別</td> <td><?php echo Gender::getGender(); ?></td> </tr>
id=203の$row['gender']には男性が入っています。
しかし、どうしてもラジオボックスのどちらかにチェックがつきません。
ファイルを分けているからなのか?と思い、下記を試しました。
<?php require_once('Loader.php'); $dsn = 'mysql:dbname=test;host=localhost;charset=utf8'; $user = 'root'; $password = ''; $option = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION); $pdo = new PDO($dsn, $user, $password, $option); $sql = "SELECT * FROM user_data WHERE id=203"; $stmt = $pdo->query($sql); $row = $stmt->fetch(); $checked = ( $row['gender'] === '男性') ? ' checked="checked"' : ''; $options = '<input type="radio" class="men" id="men" name="gender" value="男性" ' . $checked . ' required />男性'; echo $options; ?>
じゃあ、両方に対応できるようにと下記も試しました。
<?php require_once('Loader.php'); $dsn = 'mysql:dbname=test;host=localhost;charset=utf8'; $user = 'root'; $password = ''; $option = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION); $pdo = new PDO($dsn, $user, $password, $option); $sql = "SELECT * FROM user_data WHERE id=203"; $stmt = $pdo->query($sql); $row = $stmt->fetch(); $checked = ( $row['gender'] === '男性') ? ' checked="checked"' : ''; $checked = ( $row['gender'] === '女性') ? ' checked="checked"' : ''; $options = '<input type="radio" class="men" id="men" name="gender" value="男性" ' . $checked . ' required />男性'; $options .= '<input type="radio" class="woman" id="woman" name="gender" value="女性" ' . $checked . ' />女性'; echo $options; ?>
どちらにもチェックがつかなくなりました。
何が原因なのでしょうか?
回答6件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。