2015-04-07 88 views
0

我是一名PHP初學者,我正在嘗試製作一個庫存管理系統。這是我的功能,使倉庫名稱和項目名稱的另一個下拉列表。當我選擇倉庫下拉菜單時,我可以看到該倉庫的庫存;然而,當我選擇特定產品時,我什麼都看不到。Php中的下拉列表沒有提供正確的值

非常感謝!

function ViewWarehouseItems() 
    { 
?> 
    <div class="navigation"> 
     <h2> View the Inventory</h2> 
    </div> 
    <p>Select a Warehouse Location</p> 
    <script> 
     function get_Items(value) 
        { 
         if (window.XMLHttpRequest) 
          { 
          xmlhttp=new XMLHttpRequest(); 
          } 
         else 
          { 
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
          } 
         xmlhttp.onreadystatechange=function() 
          { 
          if (xmlhttp.readyState==4 && xmlhttp.status==200) 
           { 
            document.getElementById("table").innerHTML=xmlhttp.responseText; 
           } 
          } 
         xmlhttp.open("GET","getitems.php?id="+value,true); 
         xmlhttp.send(); 
        }      
    </script> 
    <form> 
     <select name='warehouse_location' onchange="get_Items(this.value)"> 
     <option value='0'>..Select..</option> 
    <?php 
    $sql="SELECT * from warehouses"; 
    $result=$this->connection_string->query($sql); 
      while ($row = $result->fetch_assoc()) 
     { 
      $warehouse_id=$row['warehouse_id']; 
      $warehouse_location=$row['warehouse_location']; 
    ?> 
      <option value="<?php echo $warehouse_id; ?>"><?php echo $warehouse_location; ?></option> 
          <?php 
     } 
     ?> 
    </select> 
    </form> 
    <p>Select an Item</p> 
    <form> 
    <select name='item_name' onchange="get_Items(this.value)"> 
    <option value='0'>..Select an item..</option> 
    <?php 
     $sql="SELECT * from items"; 
     $result=$this->connection_string->query($sql); 
      while ($row = $result->fetch_assoc()) 
     { 
      $item_id=$row['item_id']; 
      $item_name=$row['item_name']; 
      ?> 
     <option value="<?php echo $item_id; ?>"><?php echo $item_name; ?></option> 
    <?php 
     } 
     ?> 
    </select> 
    </form> 
    <?php echo "<br>"."<br>" ?> 
    <div id="table"></div> 
     <?php 
} 

這是我在上面的函數中使用的另一個php文件。

<!DOCTYPE html> 
<html> 
<body> 
<?php 
$id = intval($_GET['id']); 
echo $id; 
include_once "dbConnect.php"; 
include_once "items.php"; 
include_once "warehouse.php"; 

$sql="SELECT * FROM items WHERE warehouse_id = $id"; 
$result = mysqli_query($conn,$sql); 
?> 
     <div class="forum_header"> 
     <div class="item_topics_header">Warehouse ID</div> 
     <div class="item_topics_header">Warehouse Location</div> 
     <div class="item_topics_header">Item ID</div> 
     <div class="item_topics_header">Item Name</div> 
     <div class="item_topics_header">Inventory</div> 
     </div> 
<?php 
$item_obj=new Items($conn); 
$warehouse_obj=new Warehouse($conn); 

while($row = mysqli_fetch_array($result)) { 
      $warehouse_id=$row['warehouse_id']; 
      //$warehouse_location=$row['warehouse_location']; 
      $wl=$warehouse_obj->GetWarehouseLocation($warehouse_id); 
      $item_id=$row['item_id']; 
      $i=$item_obj->GetItemName($item_id); 
      //$item_name=$row['item_name']; 
      $item_quantity=$row['item_quantity']; 
      ?> 
      <div class="forum_lines"> 
      <div class="item_replies_header"><?php echo $warehouse_id; ?></div> 
      <div class="item_replies_header"><?php echo $wl; ?></div> 
      <div class="item_replies_header"><?php echo $item_id; ?></div> 
      <div class="item_replies_header"><?php echo $i; ?></div> 
      <div class="item_replies_header"><?php echo $item_quantity; ?></div> 
      </div> 
    <?php 
} 
mysqli_close($conn); 
?> 
</body> 

+0

您可能想要檢查選擇值是否正確傳遞。有時你需要使用 this.options [this.selectedIndex] .value 還要向mysql查詢添加一些錯誤檢查,看它是否被正確執行。如果直接打開getitems.php?id = 1,會發生什麼情況? –

回答

0

好像你需要一些額外的功能添加到您getitems.php以查看是否在傳遞一個倉庫或產品。因此,傳遞某種名稱可以幫助您確定哪個「類型」的ID正在傳遞。

現在,您的getitems.php會根據您的查詢推測它只是一個倉庫,而不是其他任何東西。

+0

在getItems.php中,我做了$ id的回顯,它給了我倉庫和物品的正確ID。唯一的問題是,從下拉菜單中選擇項目時,項目的值不會顯示。我認爲,我的'onchange'事件中存在一些項目下拉的問題。 getItems.php應該沒問題,因爲我從倉庫下拉列表中選擇getItems.php中的所有值。 – Minaxi

+0

但看看你的查詢壽。它基本上是這樣說的:「從WHERE選擇任何東西」warehouse_id「= something」但是如果你選擇一個項目,那麼它不會給你那個項目,因爲選擇的id不是「warehouse_id」,而是它的「id」或「 item_id「(或類似的東西) – MrTechie

+0

好的,這是有道理的。 – Minaxi

0

所以,你會做這樣的事情:

<option value="i_<?php echo $item_id; ?>"> 

<option value="wh_<?php echo $warehouse_id; ?>"> 

然後修改你的腳本執行以下操作:

$temp_id = explode("_", $_GET['id']); 

$type = $temp_id[0]; 
$id = $temp_id[1]; 

最後這一點:

if($type === 'wh'){ 

    $sql="SELECT * FROM items WHERE warehouse_id = $id"; 

} 
else if($type === "i"){ 
    $sql="SELECT * FROM items WHERE id = $id"; 
    // MODIFY id to be the proper name for an item_id 
} 
相關問題