2017-02-16 45 views
1

我正在学习PHP的过程中,并想知道是否有人会友善地帮我一下,我坚持。选择与下拉菜单中显示的值不同的值。 (PHP和MySQL)

在下面的表格中,它将根据用户ID拉出一个用户地址列表,并通过其'Address_Name'字段显示它们。

但是,当他们选择说'家庭住址'时,我不想拉取那个'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,但mysqli也是一种选择。两者已有十多年的历史。 http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php – miken32

+2

只有一个选项的下拉菜单有什么意义? – Barmar

+0

看来这全是错的。您正在为每个用户的地址创建一个单独的表单。它应该是一种形式,并且每个地址应该是下拉菜单中的一个选项。循环应该围绕添加“

回答

-1

试试这个

 <?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

正如已经说过,你可能会进一步提高你的代码,并使用PDO或mysqli将其固定,但短期回答你的问题是把ADDRESS_ID在值属性:

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

Miken32表示它已经存在,但MySQL已被弃用且不安全。您应该使用PDO,使数据库调用

我已经发布代码的带有注释的更新版本和推理

<?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它是PDO我使用它在我的网站atm,我只是有一个包装。 –

+0

那么这对别人没有太大的帮助,是吗? – miken32

相关问题