2017-02-16 11 views
1

私はPHPを勉強している途中で、誰かが私に抱かれている少しでも私を助けるほど親切であれば不思議です。ドロップダウンで表示される値とは異なる値を選択してください。 (PHPとMySQL)

次のフォームでは、ユーザーIDに基づいてユーザーのアドレスの一覧を取得し、[Address_Name]フィールドで表示します。

しかし、「Home Address」と言う言葉を選択すると、「Address_Name」という値は取得しませんが、「Address_ID」の行の値を取得します。

「Address_Name」がユニークではないことを念頭に置いて、どのようにすればよいか理解できたら助けてください。

<?php 

$add=mysql_query("SELECT * FROM Address_Book WHERE User_ID = '$id'"); 

while ($row = mysql_fetch_array($add)){ 

?> 

<form name="form1" onsubmit="return validate()"> 
<input type="hidden" name="command" /> 
<div align="center"> 
<h1 align="center">Confirm Order</h1> 
<table border="0" cellpadding="2px"> 
<tr><td>Order Total:</td><td><?php echo $currency ?><?php echo get_order_total()?></td></tr> 
<tr><td>Account_Number</td><td><input type="text" name="accountnumber" /></td></tr> 
<tr><td>Delivery Address</td><td><select name="owner"> 
<option name="address" id="address" value="Address_Name"><?php echo $row['Address_Name']; ?></option> 
</td></tr> 
<tr></tr> 
<tr><td>&nbsp;</td><td><input type="submit" value="Confirm Order" /></td>  
</tr> 
</table>  
</div> 
</form> 

<?php 

} 
?> 
+2

はあなたが今やっていることを停止呼び出しを行うためにPDOを使用する必要があります。非推奨、非保守、安全でないデータベース機能を使用しています。 PDOを使用するように切り替えることをお勧めしますが、mysqliもオプションです。どちらも10年以上にわたって利用可能です。 http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php – miken32

+2

ドロップダウンのポイントはどれですか? – Barmar

+0

これはすべて間違っているようです。ユーザーのアドレスごとに別々のフォームを作成しています。これは1つのフォームでなければならず、各アドレスはドロップダウンのオプションにする必要があります。ループは '

答えて

-1

としては、あなたがさらにあなたのコードを改善し、PDOまたはmysqliを使用して、それを確保することができ、言われているが、あなたの質問への短い答えはでADDRESS_IDを置くことです。この

 <?php 

    $add=mysql_query("SELECT * FROM Address_Book WHERE User_ID = '$id'"); 



    <form name="form1" onsubmit="return validate()"> 
    <input type="hidden" name="command" /> 
    <div align="center"> 
    <h1 align="center">Confirm Order</h1> 
    <table border="0" cellpadding="2px"> 
    <tr><td>Order Total:</td><td><?php echo $currency ?><?php echo get_order_total()?></td></tr> 
    <tr><td>Account_Number</td><td><input type="text" name="accountnumber" /></td></tr> 
    <tr><td>Delivery Address</td><td><select name="owner"> 
    while ($row = mysql_fetch_array($add)){ 

    ?> 
    <option name="address" id="address" value="<?php echo $row['Address_ID']; ?>"> 
<?php echo $row['Address_Name']; ?> 
</option> 

    <?php 

    } 
    ?> 
    </td></tr> 
    <tr></tr> 
    <tr><td>&nbsp;</td><td><input type="submit" value="Confirm Order" /></td>  
    </tr> 
    </table>  
    </div> 
    </form> 
+0

こんにちは素晴らしい人、ありがとう。私はそれが働いているが、PDOまたはmysqliにそれを強化するために見ていきます。私は学んでいるが、ゆっくりとそこに着く。再度ありがとう – Trotterwatch

0

をお試しくださいvalue属性:

<option name="address" id="address" value="<?php echo $row['Address_ID']; ?>"><?php echo $row['Address_Name']; ?></option> 
-1

Miken32はすでにそれを言ったが、MySQLは非推奨となり、安全でないです。データベースが

私がコメントや推論

であなたのコードの更新版を掲載している
<?php 
$database->query("SELECT * FROM Address_Book WHERE User_ID = :User_ID"); // Selecting from the database - Kind of like prepare 
$database->bind(':User_ID', $UserID); // Binding values to prevent SQL Injection 
$Addresses = $database->resultset(); // Returns and array of all the different rows 
?> 

<form name="form1" onsubmit="return validate()"> 
    <input type="hidden" name="command" /> 
    <div align="center"> 
     <h1 align="center">Confirm Order</h1> 
     <table border="0" cellpadding="2px"> 
      <tr> 
       <td>Order Total:</td> 
       <td><?php echo $currency ?> 
        <?php echo get_order_total()?> 
       </td> 
      </tr> 
      <tr> 
       <td>Account_Number</td> 
       <td> 
        <input type="text" name="accountnumber" /> 
       </td> 
      </tr> 
      <tr> 
       <td>Delivery Address</td> 
       <td> 
        <select name="owner"> 

         <?php 
         foreach($Addresses as $Address) // Here for each Address in the Addresses array we echo an option with the value as the Address_ID and DisplayName as Address_Name 
         { 
          echo '<option name="address" id="address" value="'.$Address["Address_ID"].'>'.$Address['Address_Name'].'</option>'; 
         } 
         ?> 

        </select> <!-- You were btw missing an ending </select> --> 
       </td> 
      </tr> 
      <tr></tr> 
      <tr> 
       <td>&nbsp;</td> 
       <td> 
        <input type="submit" value="Confirm Order" /> 
       </td> 
      </tr> 
     </table> 
    </div> 
</form> 
+0

これはPDOではありません。それが何であるかはわかりませんが、間違いなくPDOではありません。 – miken32

+0

@ miken32それは私のウェブサイトatmでそれを使用しているPDO Imです、私はちょうどラッパーを持っています。 –

+0

それは他の人たちに多くの助けとなるものではありませんか? – miken32

関連する問題