我真的很困惑我怎么能这样做。选择一个时,我需要获得两个<td>
的值。例如,下面让我说我选择id =每月$ 550美元的td。我需要得到与该价格相对应的年龄和超额。我希望这是有道理的。因此,在选择$ 550的例子中,我需要jQuery来获得值年龄(18-24)和超额($ 1000)。然后,我将采用这两个值并插入到mysql中,如下所示。无论如何我可以用jQuery或PHP做到这一点吗?我对这些想法持开放态度。
<table>
<tr>
<td width="67"></td>
<td width="102" id="excess">$1000</td>
<td width="102" id="excess">$2000</td>
</tr>
<tr>
<td width="67" id="age">18-24</td>
<td width="102" id="monthly">$550</td>
<td width="102" id="monthly">$650</td>
</tr>
<tr>
<td width="67" id="age">25-29</td>
<td width="102" id="monthly">$750</td>
<td width="102" id="monthly">$850</td>
</tr>
</table>
MYSQL(使用上面的例子):
$query = mysql_query("UPDATE table SET Monthly = '$550' WHERE Age = '18-24' AND Excess = '$1000'")or die(mysql_error());
答案 0 :(得分:2)
您的HTML无效。您不能拥有多个具有相同id
,id
值的元素(顾名思义)必须是唯一的。如果您尝试对元素进行分类,请使用class
。本答案的其余部分假设id
个值已更改为class
个名称。
如果我了解您,您希望处理具有monthly
类的单元格的点击,并获取该行中第一个单元格的文本以及该列中的第一个单元格。这可以通过jQuery(live example | source)轻松完成:
$("td.monthly").click(function() {
var $this = $(this),
firstCellInRow = $this.closest('tr').find('td').first(),
firstCellInColumn = $this.closest('table').find('tr').first().find('td').eq($this.index());
console.log("First cell in row: " + firstCellInRow.text());
console.log("First cell in column: " + firstCellInColumn.text());
});
我们通过closest
找到行,然后通过find
和first
找到第一个单元格,找到行中的第一个单元格。
我们通过closest
查找表格找到列中的第一个单元格,然后通过find
和first
获取第一行,然后获取index
单击单元格并通过eq
在第一行中找到具有相同索引的单元格。
答案 1 :(得分:0)
$('.monthly').bind('click', function()
{
lstrMonth = $(this).html();
lstrAge = $(this).parent().find('td:first').html();
lnIndex = $(this).parent().index($(this));
lstrExcess = $(this).parent('table').find('tr:first td:nth-child('+ (lnIndex + 1) +')');
// do ajax call to a php script which execute the query
$.post('ajax/update.php',
{
age: lstrAge,
excess: lstrExcess,
month: lstrMonth
},
function(data) // success
{
// do whatever you want
});
});
我认为这样可行,PHP将简化为:
<?php
$query = mysql_query("UPDATE table SET Monthly = '".$_POST['month']."' WHERE Age = '".$_POST['age']."' AND Excess = '".$_POST['excess']."'")or die(mysql_error());
?>