当用户点击链接时,有没有办法更新MySQL数据库中的数据? 我正在创建一个投票应用程序。它允许用户存储要立即使用或以后使用的问题。当用户查看他创建的问题时,他/她可以单击链接,该链接将更新数据库中将根据问题ID存储1或0的列。 (1表示该问题可以投票,0表示相反)。我编写了代码来从DB中检索问题。现在我正在尝试编写将通过单击链接更新问题数据的代码。
我无法想象的是如何获取用户点击链接的问题ID,然后我可以更新数据库。 如果我的解释不明确,请原谅。英语是我的第二语言,我努力更好地沟通。
答案 0 :(得分:1)
echo "<td><a href='markAsInActive.php?id=$row[0]'>Active</a></td>";
我只是猜测$row[0]
是ID - 您可以将其更改为数据库的相应列(通常最好使用mysql_fetch_assoc
,这样您就可以按名称访问列而不是毫无意义的列号。)
然后,PHP脚本可以使用$_GET['row']
来获取应更新的ID。
答案 1 :(得分:1)
您可以这样做:
<?php
$username = $_COOKIE['username'];
$sql = "SELECT * FROM QUESTIONS WHERE username ='$username'";
$result = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($result) > 0) {
//---------- new
if(isset($_GET['voteID']))
{
$viteID = (int) $_GET['voteID'];
// your update query
}
//--------
?>
<table width="50%" cellpadding="5" cellspacing="0" border="1">
<tr><td><b>Question ID</b></td><td><b>Question</b></td><td><b>Active/Inactive</b></td></tr>
<?php
$html = '';
while ($row = mysql_fetch_row($result)) {
$html .= '<tr>';
$html .= '<td>' . $row[0] . '</td>';
$html .= '<td>' . $row[1] . '</td>';
$activity = $row[3];
// ---- new
$html .= '<a href="'.$_SERVER['PHP_SELF'].'?id='.$row[0].'">Vote Up</a>';
//-------
//if active = 1, do the following
if ($activity == 1) {
$html .= '<td>' . '<a href=markAsInActive.php>Active</a>' . '</td>';
} else {
$html .= '<td>' . 'Inactive' . '</td>';
}
$html .='</tr>';
}
echo $html;
?>
</table>
<?php
}
?>
答案 2 :(得分:0)
您需要添加一个html表单元素。
<from action="yourURL.php" method="post">
<input type="text" name="userInput" />
<input type="submit" value="Submit" />
</form>
现在您的信息来自:
$info = $_POST['userInput'];
然后编写UPDATE查询以将用户信息放入记录中。
答案 3 :(得分:0)
我的第一个建议是使用mysql_fetch_assoc
函数代替mysql_fetch_row
函数。
现在,将锚链接更改为"markAsInActive.php?id={$row[0]}"
而不是markAsInActive.php
,例如
echo "<td><a href='markAsInActive.php?id={$row[0]}'>Active</a></td>";
在'markAsInactive.php'中,您可以写如下。
$sql = "UPDATE `QUESTIONS` SET `is_active`='0' WHERE `ID` = {$_GET['id']}";
$result = mysql_query($sql) or die(mysql_error());
header('Location: ' . $_SERVER['HTTP_REFERER']);
假设QUESTIONS
表的主键为ID
且表的活动标志列为is_active
。