2017-06-28 4 views
1

私は学校の課題に取り組んでおり、いくつかの問題があります。選択した結果をMySQLデータベースに送信し、ループして結果を表示するフォーム用のPHPコードがあります。唯一の問題は、選択した<option>を表示する代わりに、4つのオプションすべてを表示することです。MySQL/PHP <select>提出された値が表示されない

はここに私のコードです:

<?php 
include_once (connection.php); 

if (($_SERVER["REQUEST_METHOD"] == "POST") && (isset($_POST['card_catalog_form']))) { 

    $card_name = mysqli_real_escape_string($conn, $_POST['card_name']); 
    $card_label = mysqli_real_escape_string($conn, $_POST['card_label']); 

    $insert_card_genre_query = sprintf("INSERT into card_catalog (card_name, card_label) VALUES ('%s', '%s')", 
     $card_name, 
     $card_label); 
    $insert_card_genre = mysqli_query($conn, $insert_card_genre_query) or die (mysqli_error($conn)); 

    $last_record = mysqli_insert_id($conn); 
} 

$card_genre_query = "SELECT card_genre.genre_id, card_label from `card_genre` order by card_label asc"; 
$card_genre = mysqli_query($conn, $card_genre_query) or die(mysqli_error($conn)); 

$get_card_genre_query = "SELECT card_catalog.id, card_catalog.card_name, card_catalog.card_label, card_genre.genre_id from card_catalog right join card_genre on card_catalog.card_label = card_genre.card_label"; 
$get_card_genre = mysqli_query($conn, $get_card_genre_query) or die(mysqli_error($conn)); 

?> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>The Marketplace By The Mana Club</title> 
    <link rel="stylesheet" type="text/css" href="stylesheets/tmp.css"> 
</head> 
<body> 

    <?php include(templatestuff/top_of_tmp.php); ?> 

    <main> 
     <h1>Products:</h1> 
     <section> 
      <ul id="products_list"> 
       <li><b>Product 1: "Jack-In-The-Mox"</b></li> 
       <li><b>Product Description: "Roll a six-sided die for Jack-in-the-Mox. On a 1, sacrifice Jack-in-the-Mox and lose 5 life. Otherwise, Jack-in-the-Mox has one of the following effects. Treat this ability as a mana source..."</b></li> 
       <img src="productimages/jackinthemox.jpeg" alt="Jack In The Mox"/> 
      </ul> 
     </section> 

     <div> 

      <h2>What Card Are You Looking For?</h2> 
      <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post" enctype="multipart/form-data"> 
       <fieldset> 
       <p><b>What's The Card Name? <input type="text" name="card_name"></b></p> 
       <p> 
        <p><b>Card Type:</b></p> 
        <select name="card_genre"> 
         <?php while ($row_card_genre = mysqli_fetch_assoc($card_genre)) { ?> 
         <option value="<?php echo $row_card_genre['genre_id'];?>"><?php echo $row_card_genre['card_label'];?></option> 
         <?php } ?> 
        </select> 
       </p> 

       <p><input type="submit"></p> 
       <input type="hidden" name="card_catalog_form"> 
       </fieldset> 
      </form> 

      <?php 
       if ($last_record) { 
        echo "<p><b>You just created form query #" . $last_record ."</b><p>"; 
       } 
      ?> 

      <p>You are submitting your form at 
       <?php 
        date_default_timezone_set('America/New_York'); 
        echo date('g:i a \o\n l, F j, Y'); 

       ?> 
      </p> 

     </div> 

     <?php 
     $query = "SELECT card_catalog.card_name, card_catalog.card_label, card_genre.genre_id FROM card_catalog, card_genre"; 

     $result = mysqli_query($conn, $query) or die(mysqli_error($conn)); 

     while($row = mysqli_fetch_array($result)){ 
      echo $row['card_name']. " - ". $row['genre_id']; 
      echo "<br />"; 
     } 
     ?> 

    </main> 

    <?php include('templatestuff/bottom_of_tmp.php'); ?> 

</body> 
</html>` 

(あなたは問題が含まれているウェブサイトを見たい場合は、あなたがhereを行くことができます)

すべてのヘルプ、または建設的な批判、いただければ幸いです。

おかげ

+0

。しかし、あなたはSQLステートメントでWHEREを使用していません。だから、あなたはいつもすべてを取得していて、どこでも選択した値を使用していません。 – colburton

+0

@colburtonこのSQL文についてお話しますか?<?php $ query = "SELECT card_catalog.card_name、card_catalog.card_label、card_genre.genre_id FROM card_catalog、card_genre"; – JwBZx

+0

はい。 http://php.net/manual/de/mysqli.prepare.phpを参照し、$ _POST ['card_genre']からcard_genreの値を取得する必要があります。 mysqli_query()では使用しないでください。これはSQLインジェクションにつながります! – colburton

答えて

0

これは正しい方向にあなたを指している可能性があります:私は選択で何かを選択し、その下に、私は私の選択に一致するものだけが表示されるはずです。私はこれまで集まった何

if (isset($_POST['card_genre'])) { 
    $query = "SELECT card_catalog.card_name, card_catalog.card_label, card_genre.genre_id FROM card_catalog, card_genre WHERE card_genre.genre_id = ?"; 
    $stmt = mysqli_prepare($conn, $query); 
    $stmt->bind_param('s', $_POST['card_genre']); 
    $stmt->execute(); 
    $result = $stmt->get_result(); 

    while ($row = $result->fetch_assoc()) { 
     echo $row['card_name']." - ".$row['genre_id']; 
     echo "<br />"; 
    } 
} else { 
    $query = "SELECT card_catalog.card_name, card_catalog.card_label, card_genre.genre_id FROM card_catalog, card_genre"; 
    $result = mysqli_query($conn, $query) or die(mysqli_error($conn)); 

    while ($row = mysqli_fetch_array($result)) { 
     echo $row['card_name']." - ".$row['genre_id']; 
     echo "<br />"; 
    } 
} 
+0

近づく。今度は、card_nameをタイプしてcard_typeを選択すると、データベースに入力されますが、他のすべてのIDも送信されたidに変更されます。 (私が何を意味するかを知るために:http://themanaclub.com/themarketplace/themarketplace.php)。これまでのご協力ありがとうございました – JwBZx

+0

コードを編集してデータベース全体を更新せず、全員の "genre_id"の値を変更しないでください。また、私は "card_label"テキストが表示される必要があります、 "genre_id"ではありません。 (_php/sql newbie here_) – JwBZx

+0

あなたが私に与えたコードは、正しい方向に大きく進んでいますが、genre_id番号を表示しますが、その後のエントリでは、以前のすべてのIDを入力したIDにリセットします。これをどうやって解決するのですか? @colburton – JwBZx

関連する問題