Php ';适当的';使用表单中的操作查询的方法

Php ';适当的';使用表单中的操作查询的方法,php,forms,crud,Php,Forms,Crud,这是一个非常简单的问题,很可能需要一个非常简单的答案。我从MYSQL数据库中提取数据,并使用检索到的数据构建一个表。我正在构造一个CRUD表,最后两列是“编辑”和“删除”。我正在构建的最后两列的表单如下所示: 在Welcome.php中可以找到以下内容: <form action="delete.php" method="POST"> <input type="hidden" value="ptest"/> <input type="submit" value="S

这是一个非常简单的问题,很可能需要一个非常简单的答案。我从MYSQL数据库中提取数据,并使用检索到的数据构建一个表。我正在构造一个CRUD表,最后两列是“编辑”和“删除”。我正在构建的最后两列的表单如下所示:

在Welcome.php中可以找到以下内容:

<form action="delete.php" method="POST">
<input type="hidden" value="ptest"/>
<input type="submit" value="Sign Up"/>
</form>

但是,我应该让表单的操作调用当前页面吗?

<form action="welcome.php" method="POST">
<input type="hidden" value="ptest"/>
<input type="submit" value="Sign Up"/>
</form>

我对PHP非常陌生,我希望确保遵守正确的协议。如果这更像是一种意见,请至少给我留下你的专业意见

多谢各位

埃文,你不应该。 没有严格的标准

作为一个新手,您可能会发现每个动作的单独文件更容易理解。所以,去做吧。
有了更多的经验,您会发现将所有操作放在一个文件中会使代码更短、更方便

您必须在单独的文件中保存的内容是表单本身。
因此,您可以使用相同的表单添加新记录、编辑现有记录和显示提交错误

这是一个单页传呼机的例子。它不会删除,但可以给你一个大致的想法。 它允许您添加、编辑和浏览记录

代码

<?  
mysql_connect(); 
mysql_select_db("new"); 
$table = "test"; 
if($_SERVER['REQUEST_METHOD']=='POST') { //form handler part: 
  $name = mysql_real_escape_string($_POST['name']); 
  if ($id = intval($_POST['id'])) { 
    $query="UPDATE $table SET name='$name' WHERE id=$id"; 
  } else { 
    $query="INSERT INTO $table SET name='$name'"; 
  } 
  mysql_query($query) or trigger_error(mysql_error()." in ".$query); 
  header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);  
  exit;  
}  
if (!isset($_GET['id'])) { //listing part: 
  $LIST=array(); 
  $query="SELECT * FROM $table";  
  $res=mysql_query($query); 
  while($row=mysql_fetch_assoc($res)) $LIST[]=$row; 
  include 'list.php'; 
} else { // form displaying part: 
  if ($id=intval($_GET['id'])) { 
    $query="SELECT * FROM $table WHERE id=$id";  
    $res=mysql_query($query); 
    $row=mysql_fetch_assoc($res); 
    foreach ($row as $k => $v) $row[$k]=htmlspecialchars($v); 
  } else { 
    $row['name']=''; 
    $row['id']=0; 
  } 
  include 'form.php'; 
}  
?>

这行的目的是什么:'if($\u SERVER['REQUEST\u METHOD']=='POST')我不想给submit按钮一个值,并在顶部添加一行,上面写着'if(!isset($\u POST['submitvalue'])@Evan问得好。1.因为我们将所有代码都放在一个文件中,所以我们必须区分对该脚本的常规调用和作为表单操作的调用。因此,该行用于后一行。2.我只是用id来区分动作。如果id=0,则为add,如果id为正数,则为edit。但是,对于删除,您将需要这样一个字段。尽管我更喜欢一个名为“delete”的隐藏表单字段,其中id是一个值。
<? include TPL_TOP ?>
<form method="POST">
<input type="text" name="name" value="<?=$row['name']?>"><br>
<input type="hidden" name="id" value="<?=$row['id']?>">
<input type="submit"><br>
<a href="?">Return to the list</a>
</form>
<? include TPL_BOTTOM ?>
<? include TPL_TOP ?>
<a href="?id=0">Add item</a>
<? foreach ($LIST as $row): ?>
<li><a href="?id=<?=$row['id']?>"><?=$row['name']?></a>
<? endforeach ?>
<? include TPL_BOTTOM ?>