我有兩個表(組和派對)在多對多的關係中使用名爲groupparty的查找表。我希望能夠爲每一方分配價格,這樣屬於兩個組的一方可能在一個組中有一個價格,而在另一個組中有不同價格。在表groupparty中,我有三列:groupid,partyid和totalprice。所以,要分配價格,我有以下幾種形式:嵌套的foreach循環與多對多的關係
<form action="" method="post">
<?php foreach ($groups as $group): ?>
<input type="hidden" name="groupids[]"
value="<?php echo $group['id']; ?>"/>
<?php htmlout($group['groupname']); ?>
<label for="totalprice">Price:
<input type="text" name="totalprices[]" id="totalprice"
value="<?php htmlout($totalprice); ?>"/></label><br />
<?php endforeach; ?>
<input type="hidden" name="id" value="<?php htmlout($id); ?>"/>
<input type="submit" name="action" value="Set"/>
</form>
在mysql方面,我已經走到了以下腳本。它幾乎可行,除了它將上面輸入的最後一個總價格值插入到所有關聯的組中。任何其他總價值都會丟失 - 我剩下的只有一個值:
if (isset($_POST['action']) and $_POST['action'] == 'Set')
{
include $_SERVER['DOCUMENT_ROOT'] . '/includes/connect.inc.php';
$id = mysqli_real_escape_string($link, $_POST['id']);
foreach($_POST['groupids'] as $groupid)
foreach($_POST['totalprices'] as $totalprice)
{
$sql = "UPDATE groupparty SET
totalprice = '$totalprice'
WHERE groupid = '$groupid'
AND partyid = '$id'";
mysqli_query($link, $sql);
}
}
任何建議都會受到歡迎。謝謝。
HTML看起來像什麼產生? (來自瀏覽器的實際輸出) – 2010-02-10 16:52:18
如果一方屬於例如兩個組,則將有兩行與1)該組的名稱,然後2)用於輸入價格值的文本輸入字段。 – PeterC 2010-02-10 16:54:24