2014-02-13 69 views
0

我有一些麻煩讓這段代碼正常工作。我們的員工可以訪問我們網站上的後端系統。這是如何設置輸入字段等:PHP MySQL發票材料

<? 
$materialer_query = $db->query("SELECT faktura_materialer.id as materialer_id, faktura.*, faktura_materialer.* FROM faktura, faktura_materialer WHERE faktura_materialer.faktura_id = faktura.id"); 

while($mat = $materialer_query->fetch_object()){ 
    ?>      
    <tr> 
     <td><input style="width:450px;" class="text-input" type="text" name="beskrivelse_nu" value="<? print $mat->beskrivelse; ?>"></td> 
     <td><input style="width:60px;" class="text-input" type="text" name="enhed_nu" value="<? print $mat->enhed; ?>"></td> 
     <td><input style="width:30px;" class="text-input" type="text" name="stk_nu" value="<? print $mat->stk; ?>"></td> 
     <td><input style="width:205px;" class="text-input" type="text" name="vejl_eks_moms_nu" value="<? print number_format($mat->vejl_eks_moms,2,",","."); ?>"></td> 
     <td></td> 
     <td><a href="#" onclick="removeRow(this)" id="addNew" title="Slet produkt"><img src="images/icons/slet.gif" width="16" alt="Slet" /></a></td> 

     <input hidden name="materiale_id" value="<? print $mat->materialer_id; ?>"> 
    </tr>      
    <? 
} 
?> 

我希望能夠更新一個頁面中的每個材料。我試圖解決這個問題,甚至在while循環中添加了一個隱藏的輸入字段,其中包含每個材質ID。這是我當前如何更新表:

$beskrivelse_nu   = addslashes($_POST['beskrivelse_nu']); 
$enhed_nu    = addslashes($_POST['enhed_nu']); 
$stk_nu     = addslashes($_POST['stk_nu']); 
$vejl_eks_moms_nu  = addslashes($_POST['vejl_eks_moms_nu']); 

$db->query("UPDATE faktura_materialer 
    SET beskrivelse   = '".$beskrivelse_nu."', 
    enhed     = '".$enhed_nu."', 
    stk      = '".$stk_nu."', 
    vejl_eks_moms   = '".$vejl_eks_moms_nu."' 

    WHERE id    = '".$_POST['materiale_id']."' AND 
    faktura_id    = '".$_faktura->faktura_id."' 
"); 

每次我更改輸入領域的東西,它只是每一行更改爲相同.. 我希望你們都明白我想要什麼:)

+0

所有輸入字段和表名是丹麥數百場 - 對不起。 –

+0

您是否嘗試更新表格中的每條記錄? –

+0

我試圖編輯指定發票的記錄。但它只是將表格中的所有行更改爲相同的.. –

回答

0

因爲您通過循環生成字段,最終會生成多組字段,並且字段名稱相同。 換句話說,如果你的​​3210返回4行,那麼你的HTML將有4次<input hidden name="materiale_id" value="<? print $mat->materialer_id; ?>"> ...

如果你真的需要在同一頁上的所有字段,那麼你就可以做到這一點有兩種方式:

第一個選項。您可以爲每行創建單獨的表單。並分別提交。

while($mat = $materialer_query->fetch_object()){ 
?> 
<form action="--somewhere-to-process--" method="post"> 
<table><tr> 
    <td><input style="width:450px;" class="text-input" type="text" name="beskrivelse_nu" value="<? print $mat->beskrivelse; ?>"></td> 
    <td><input style="width:60px;" class="text-input" type="text" name="enhed_nu" value="<? print $mat->enhed; ?>"></td> 
    <td><input style="width:30px;" class="text-input" type="text" name="stk_nu" value="<? print $mat->stk; ?>"></td> 
    <td><input style="width:205px;" class="text-input" type="text" name="vejl_eks_moms_nu" value="<? print number_format($mat->vejl_eks_moms,2,",","."); ?>"></td> 
    <td></td> 
    <td><a href="#" onclick="removeRow(this)" id="addNew" title="Slet produkt"><img src="images/icons/slet.gif" width="16" alt="Slet" /></a> 
<input type="submit" value="Update"> 
</td> 

    <input hidden name="materiale_id" value="<? print $mat->materialer_id; ?>"> 
</tr></table> 
</form>      
<? 
} 

第二個選項是您創建一個表單,但每個字段名稱在整個表單中都是唯一的。 事情是這樣的:

while($mat = $materialer_query->fetch_object()){ 
?> 
<tr> 
    <td><input style="width:450px;" class="text-input" type="text" name="faktura[<?=$mat->faktura_id?>][beskrivelse_nu]" value="<? print $mat->beskrivelse; ?>"></td> 
    <td><input style="width:60px;" class="text-input" type="text" name="faktura[<?=$mat->faktura_id?>][enhed_nu]" value="<? print $mat->enhed; ?>"></td> 
    <td><input style="width:30px;" class="text-input" type="text" name="faktura[<?=$mat->faktura_id?>][stk_nu]" value="<? print $mat->stk; ?>"></td> 
    <td><input style="width:205px;" class="text-input" type="text" name="faktura[<?=$mat->faktura_id?>][vejl_eks_moms_nu]" value="<? print number_format($mat->vejl_eks_moms,2,",","."); ?>"></td> 
    <td></td> 
    <td><a href="#" onclick="removeRow(this)" id="addNew" title="Slet produkt"><img src="images/icons/slet.gif" width="16" alt="Slet" /></a> 
<input type="submit" value="Update"> 
</td> 

    <input hidden name="faktura[<?=$mat->faktura_id?>][materiale_id" value="<? print $mat->materialer_id; ?>"> 
</tr> 
<? 
} 

這樣你$_POST[faktura]將是一個關聯數組faktura-ID鍵及其更新後的值。 滾動數組並更新每個數組中的數據庫。

請記住,在一個表單域的數量是有限的。因此,確保不具有形式:)

+0

但是,如果我與第二個選項一起去查詢應該如何? :) –

+0

初始查詢不會更改。它已經擁有所有行的所有數據。只要確保一切都通過了帖子。 – cyadvert

+0

是的,但不應該查詢傳遞數組而不是僅僅一個POST? –