私はMySQLにデータを送信しようとしていますが、何らかの理由で値が最初のラジオボタン<fieldset>
ではなく<fieldset>
で通過しています。私のコードはこれ以上説明できます。ラジオボタンのデータが2番目のフィールドセットに表示されない
<?php
require 'inc/database.php';
$pdo = Database::connect();
$getLikes = $pdo->prepare('SELECT * FROM fieldTest ORDER BY id DESC');
$getLikes->execute();
if($getLikes->rowCount() > 0) {
while ($row = $getLikes->fetch()) {
echo '<div>';
echo '<form>';
echo '<div>';
echo '<p>';
echo '<label>I like...<br>';
echo $row['appleColor'];
echo '</label>';
echo '</p>';
echo '<br>';
echo '<p>';
echo '<label>I like...<br>';
echo $row['appleLikes'];
echo '</label>';
echo '</p>';
echo '</div>';
echo '</form>';
echo '</div><!--end of container-->';
echo '<br>';
?>
<form method="POST" action="likespost.php">
<!--FirstFieldSet-->
<fieldset>
<h2>What color of apples do you like?</h2>
<div class="inline-field">
<input type="radio" id="" name="appleColor" value="Green" >
<label>Green</label>
</div>
<div class="inline-field">
<input type="radio" id="" name="appleColor" value="Red" >
<label>Red</label>
</div>
</fieldset>
<!--SecondFieldSet-->
<fieldset>
<h2>How do you like your apples?</h2>
<div class="inline-field">
<input type="radio" id="" name="appleLikes" value="In a beer." >
<label>In a beer.</label>
</div>
<div class="inline-field">
<input type="radio" id="" name="appleLikes" value="As a juice." >
<label>As a juice.</label>
</div>
<div class="inline-field">
<input type="radio" id="" name="appleLikes" >
<label for="radio">Other</label>
<input id="" type="text" name="appleLikes" placeholder="Please Explain...">
</div>
</fieldset>
<button type="submit" class="btn btn-success">Post Likes</button>
</form>
ここには、データをMySQLに送信するlikespost.phpがあります。
<?php
require 'inc/database.php';
if (!empty($_POST)) {
$appleColor = $_POST['appleColor'];
$appleLikes = $_POST['appleLikes'];
$valid = true;
if ($valid) {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'INSERT INTO fieldTest (appleColor, appleLikes) values(?, ?)';
$q = $pdo->prepare($sql);
$q->execute(array($appleColor, $appleLikes));
Database::disconnect();
header('Location: fieldTest.php');
}
}
?>
ここはmy SQLです。
CREATE TABLE `fieldTest` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`appleColor` varchar(100) NOT NULL,
`appleLikes` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
なぜ、最初のフィールドセットデータがポストされますが、2番目のフィールドセットは空白ですか。
ラジオの名前がテキスト入力と同じであるためです。 – Jeff
あなたの問題は何もしませんが、ラベル 'for'はidでなければなりません。 – Jeff
うわー!!私はそれを見ていませんでした。私はコードを更新しました。しかし、私は$ row ['appleLikes'];をエコーする場所を "on"にしています。ラベルの部分については、私はそれに次のラベルを貼っています。 –