Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP帮助删除列表中的项目_Php - Fatal编程技术网

使用PHP帮助删除列表中的项目

使用PHP帮助删除列表中的项目,php,Php,我在一个表中有一个电子邮件地址列表,它是通过SQL查询填充的。在每个电子邮件地址旁边,我放置了一个submit按钮,我想用它删除出现在特定表行中的电子邮件地址 我想在每个删除按钮的名称后面加上电子邮件地址,希望它能指引我正确的方向 while($row = mysql_fetch_array($result)) echo "<tr><td>".$row['email_adress']."</td><td><input type=\"s

我在一个表中有一个电子邮件地址列表,它是通过SQL查询填充的。在每个电子邮件地址旁边,我放置了一个submit按钮,我想用它删除出现在特定表行中的电子邮件地址

我想在每个删除按钮的名称后面加上电子邮件地址,希望它能指引我正确的方向

while($row = mysql_fetch_array($result))
    echo "<tr><td>".$row['email_adress']."</td><td><input type=\"submit\" value=\"Delete\" name=\"delete".$row['email_adress']."\"></td></tr>";
while($row=mysql\u fetch\u array($result))
回显“$行[“电子邮件地址]”;

我想知道如何对每个条目使用删除按钮。有什么帮助吗?

如果一个按钮绝对是必须的,您可以为每个按钮输出一个小表单,并添加一个包含id的隐藏字段(或电子邮件,如果您坚持的话)。表单将在隐藏字段中提交id或地址,您可以在处理脚本中选择该字段并运行删除查询


编辑以删除被确定为不明智方法的部分答案

是的,您可以这样做,但这需要在表单的目标页面上再次执行查询,然后检查“删除”。$row['email\u address']的每个组合,或者使用如下结构:

foreach ($_REQUEST as $key => $dummy)
    if (substr($key,0,6) == 'delete')
        delete_entry(substr($key,6));
但是,如果您只是交换值和名称

<input type=\"submit\" name=\"Delete\" value=\"".$row['email_adress']."\">


…您只需检查$\u REQUEST['Delete']即可找到已单击的地址按钮。

我认为问题在于,当提交按钮不包含数据时,您试图使用提交按钮来包含数据。他们可以,人们也确实这样使用他们,但我更喜欢使用提交按钮来确定如何处理数据,而不是成为提交中的数据。有两种基本的方法,我认为这是对你正在尝试做的事情的合理延伸

1.)使用链接发布删除命令 2.)使用“提交”按钮发出“删除”命令,但包含一个隐藏的表单字段以包含要删除的电子邮件地址

在使用链接的情况下,您不必处理表单,但我不知道页面的其余部分。如果您正在发送任何其他数据,那么表单是理想的方式。如果你只是发送一条数据来删除邮件,那么我建议你建立一个链接。我的建议是从功能的角度提出的。你可能有一个我不知道的按钮的UI原因

在使用表单的情况下,隐藏字段应包含主键(未测试):

while($row=mysql\u fetch\u array($result)){
回声“
“$row[‘电子邮件地址’]”
";
";
}

你必须围绕每个提交创建一个表单。表单中的每个隐藏字段都将被提交,而不会告诉你要删除的电子邮件。通过使用Javascript,你可以用提交做更多的事情,但简单的方法是只使用一个链接——忘了表单。

…我仍然不确定是否显示电子邮件除非是公司内部的,否则会在网页上显示。我想我们在一个安全的公司后台办公室? 我会选择:

<a href=my_page.php?delete_email_id=456>email</a>

在我的_page.php的顶部,我一直在乱搞这段代码,试图获得一个“预回迁浏览器附加组件”来触发一些东西并杀死我的数据库…但是我还不能触发任何东西…但我肯定想触发

<?php
//CREATE AND POPULATE DB
if(!file_exists('a.sqlite')){
    $db = new SQLite3('a.sqlite');
    $db -> exec("CREATE TABLE test (idx INTEGER PRIMARY KEY, number INTEGER NOT NULL);");
    for($i=0;$i<9;$i++){
    $db -> exec("INSERT INTO test (number) VALUES (".(rand(1000,9999)).");");
    }
}else{
    $db = new SQLite3('a.sqlite');
}
//PERFORM DELETE FROM HREF
if(isset($_REQUEST['delete'])){
    $db -> exec("DELETE FROM test WHERE idx = ".$_REQUEST['delete'].";");
}

//SHOW CONTENTS OF BASE OR DELETE DB FILE
$result = $db->query('SELECT * FROM test');
while ($row = $result->fetchArray()) {
    echo "<a href='test.php?delete=".$row['idx']."'>".$row['number']."</a></br>";
}
?>


永远不要使用链接来更改数据。@Schrapanel上校:你更喜欢隐藏表单字段方式吗?这对我来说似乎很好。Yikes,没想到会有这样的反应!我只是给出了一个快速的解决方案,没有考虑太多的安全问题。对不起,Jon,我不是有意让你误入歧途的。@Jon没关系。任何字段类型只要一个您使用的是POST方法。但是,我认为这里的隐藏字段没有任何用处。我宁愿使用带有复选框的单一表单。但是,如果您想要单独的表单,则隐藏就可以了。正如我在另一条评论中所写的,我认为这没什么大不了的。但是,我同意所有改变数据的内容都应该是POST,以及所有指定要发布哪些数据的内容要检索的内容应为GET.make it
name=“delete[1]“
。我宁愿使用复选框,也不要使用默认返回TRUE的JS确认。机器人程序不运行JSI不明白为什么不。。。我的意思是,你可以用其他方式保护你的页面。你不能用自己的浏览器保护你的页面。谷歌桌面搜索,各种预取,等等。我将运行一些测试。。。我不使用前面提到的任何一种方法,但我认为删除所有数据的预取方法会很混乱。用Ajax刷新href怎么样?我想这会确保它的安全。我认为不存在这样的预取。它会使每一个web应用程序(和浏览器历史)都变得无用。从未听说过“我的浏览器点击了所有链接”的问题。
<a href=my_page.php?delete_email_id=456 onClick="return confirm('Do you want to delete this email address ?')">email</a>
if(isset($_REQUEST['delete_email_id']){ SQL UPDATE ENTRY...}
<?php
//CREATE AND POPULATE DB
if(!file_exists('a.sqlite')){
    $db = new SQLite3('a.sqlite');
    $db -> exec("CREATE TABLE test (idx INTEGER PRIMARY KEY, number INTEGER NOT NULL);");
    for($i=0;$i<9;$i++){
    $db -> exec("INSERT INTO test (number) VALUES (".(rand(1000,9999)).");");
    }
}else{
    $db = new SQLite3('a.sqlite');
}
//PERFORM DELETE FROM HREF
if(isset($_REQUEST['delete'])){
    $db -> exec("DELETE FROM test WHERE idx = ".$_REQUEST['delete'].";");
}

//SHOW CONTENTS OF BASE OR DELETE DB FILE
$result = $db->query('SELECT * FROM test');
while ($row = $result->fetchArray()) {
    echo "<a href='test.php?delete=".$row['idx']."'>".$row['number']."</a></br>";
}
?>