2016-12-27 10 views
1

私は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番目のフィールドセットは空白ですか。

+0

ラジオの名前がテキスト入力と同じであるためです。 – Jeff

+0

あなたの問題は何もしませんが、ラベル 'for'はidでなければなりません。 – Jeff

+0

うわー!!私はそれを見ていませんでした。私はコードを更新しました。しかし、私は$ row ['appleLikes'];をエコーする場所を "on"にしています。ラベルの部分については、私はそれに次のラベルを貼っています。 –

答えて

1

なぜラジオボタンとテキストフィールドに同じフィールド名(appleLikes)を使用しますか?

実際には、ラジオボタンの後にテキストフィールドが来るので、ラジオボタンの値ではなく、テキストフィールド(空白)の値を取得しています。

テキストフィールドに異なる名前を使用してください。

+0

あなたはそれを変更しましたが、今は私が$ row ['appleLikes'];をエコーする場所が "on"になっています。 –

関連する問題