我有一个HTML表的echo的以下代码。在表中是一个删除按钮。我想在用户点击删除按钮时从数据库中删除用户的输入。在数据库中,来自同一用户的更多行具有不同的值,并且这些行也显示在此代码中。如何从一个输出(用户命中删除的输出)中删除特定输入?我整天都在这里,并尝试了很多东西,但找不到办法。我只是个初学者..
$sql = "SELECT publicaties.pub_Id,publicaties.userid,publicaties.titel,publicaties.type,publicaties.linkwerk,publicaties.linkuitgever,publicaties.beschikbaar,publicaties.hierbewerkt, users.username,users.userid FROM publicaties, users WHERE publicaties.userid=users.userid AND publicaties.userid='$user' ORDER BY pub_Id DESC LIMIT $offset, $rec_limit";
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not get data: ' . mysql_error());
}
if ($row["hierbwerkt"] ==1)
echo $row["hierbewerkt"];
else
{
echo" ";
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
echo "
<table width='415' border='0' class='tablepublicaties'>
<tr>
<td rowspan='2' bgcolor='#1E1E1E'> </td>
<td rowspan='2' bgcolor='#1E1E1E'><span class='user-imagelarge'><img src='Images/nopicture.png' alt='nopicture' width='273' height='381' class='user-imagelarge'></span></td>
<td valign='middle' nowrap bgcolor='#1E1E1E'><span class='linkkleur'>".$row["hierbewerkt"]."</td>
<td valign='middle' bgcolor='#1E1E1E'>".$row["username"]."</td>
</tr>
<tr>
<td valign='bottom' bgcolor='#1E1E1E'>Titel</td>
<td valign='middle' bgcolor='#1E1E1E'><span class='sterrenkleur'>".$row["titel"]."</span></td>
</tr>
<tr>
<td bgcolor='#1E1E1E'> </td>
<td nowrap bgcolor='#1e1e1e'> </td>
<td bgcolor='#1E1E1E'>Type</td>
<td bgcolor='#1E1E1E'>".$row["type"]."</td>
</tr>
<tr>
<td bgcolor='#1E1E1E'> </td>
<td bgcolor='#1E1E1E'> </td>
<td bgcolor='#1E1E1E'>Publicatie</td>
<td bgcolor='#1E1E1E'><a href='$row[linkwerk]'> ".$row["linkwerk"]."</a></td>
</tr>
<tr>
<td bgcolor='#1E1E1E'> </td>
<td bgcolor='#1E1E1E'> </td>
<td bgcolor='#1E1E1E'>Uitgever</td>
<td bgcolor='#1E1E1E'><a href='$row[linkuitgever]'> ".$row["linkuitgever"]."</a></td>
</tr>
<tr>
<td bgcolor='#1E1E1E'> </td>
<td nowrap bgcolor='#1E1E1E'> </td>
<td bgcolor='#1E1E1E'>Beschikbaar</td>
<td bgcolor='#1E1E1E'>".$row["beschikbaar"]."</td>
</tr>
<tr>
<td bgcolor='#1E1E1E'> </td>
<td bgcolor='#1E1E1E'><input type='image' class='backgroundgreyfotoos' src='Images/Icons/crossorangebutton.png' alt='Submit Form' width='15' height='15' border='0'/ ></td>
<td bgcolor='#1E1E1E'><img src='Images/lijntransparant.png' width='70' height='1' alt='lijn'></td>
<td bgcolor='#1E1E1E'><img src='Images/lijntransparant.png' width='224' height='1' alt='lijn'></td>
</tr>
</table>
<br>";
}
}
mysql_close($conn);
答案 0 :(得分:1)
您的PHP脚本必须处理此删除。例如,您可以定义名为 action 的GET参数,该参数定义应该执行的操作:
$action = ( isset( $_GET['do'] ? $_GET['do'] : 'index' );
if( $action == 'index') {
// Print your Table
}elseif( $action == 'delete' ) {
// Send a SQL-Query to the database-server like 'DELETE FROM TABLE WHERE
// DELETE FROM publicaties WHERE publicaties.pub_Id = $pub_id [...]
}
对于删除,您可以链接到 yourscript.php?do = delete&amp; pubId = 123 ,以便您通过 pubId 传递的条目(可通过< strong> $ _ GET ['pubId'] )被删除。高级版本将使用ajax。它更加用户友好,您可以安全地重新获得资源,因为没有必要重新加载整个页面。你继续在桌面上,在后台向 yourscript.php?do = delete&amp; pubId = 123 发出ajax请求。当它成功时,您可以通过操作DOM来删除表行。像jQuery这样的库会让那些想法变得更容易。
但作为初学者,最初跳过ajax-part是一个好主意,就像我先解释的简单方法一样。这更容易,您不需要任何Ajax,这是ajax所必需的。
作为第二个提示,您应该获得有关SQL注入的信息。构建动态SQL-Querys,如
$query = 'DELETE FROM table WHERE id = ' . $_GET['id'];
非常不安全,因为每个访问者都可以通过传递有效的SQL作为参数来操作Query。 HTTP-POST甚至不是更好,它只是有点困难,因为POST-Data是在HTTP-Body中发送的。您至少应该通过PreferenceManager documentation过滤来自外部的输入。数值也可以像(int)$_GET['id']
一样投放。但最好的方法是使用escaping it,因为通过手动转义,您可能会忘记正确转义,这可能会导致安全风险。通过使用预准备语句,您不会直接在查询字符串中插入来自GET或POST的变量数据。相反,您使用的占位符将在以后被替换。用这些值替换是由php自动完成的,这样你就不会忘记转义了。
答案 1 :(得分:-1)
<?php
// is the page requested in the post method?
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// if we have received an x coordinate from the delete-button then it is pressed.
if(isset($_POST['delete_x']))
{
// make your delete query here
echo 'Now its time to delete record with id=' . $_POST['id'];
// if everything is working i recommand that you reload the page in the normal GET method.
// Then you need to uncomment the two following lines
//header('Location: ' . $_SERVER['SCRIPT_NAME']);
//exit;
}
// dump the $_POST array. Just for learning or debugging
echo '<pre>';
print_r($_POST);
echo '</pre>';
}
// dummy variabele, comes normal from your database
$row['id'] = 12;
?>
<form action="" method="post">
<input type="hidden" name="id" value="<?php echo $row['id']; ?>">
<input type="image" src="cross.png" name="delete">
</form>
需要为表格中的每一行呈现整个HTML表单(最后4行)!