表单提交后更新DB


Update DB after form submit

我正试图将一个变量转移到disable.php,它将更新数据库中的一行,所有这些都在我正在构建的wordpress插件中。我不明白为什么这行不通。

这是我的表格

<form method='post' action='".plugins_url()."/myremovalsquote/inc/disable.php''>
  <input type='submit' name='".$_SESSION['id'] = $active_partner->partner_id."' class='button-primary' id='disable' value='Disable'/>
</form>

这是我的/disable.php

global $wpdb;
$id = $_SESSION["id"];
$wpdb->query("UPDATE partners SET active='no' WHERE partner_id='".$id."'");
header("Location: http://www.website.com/wp-admin/admin.php?page=my-plugin-settings");

这是我得到的错误,似乎会话中的变量没有被转移到disable.php。

除了我的注释之外,您还可以使用隐藏的输入字段,或者将要在会话中读取和发送的值一起存储。对于第一个解决方案:

<form method='post' action='/myremovalsquote/inc/disable.php'>
<input type="hidden" name="id_to_be_disabled" value="<?= $active_partner->partner_id; ?>">
  <input type='submit' class='button-primary' id='disable' value='Disable'/>
</form>

对于第二个解决方案,只需使用session_start();调用会话并将值存储在其中。无需篡改提交按钮名称。

表单中的名称和值有一些错误。试试这个:

<form method='post' action='".plugins_url()."/myremovalsquote/inc/disable.php"'>
  <input type='submit' name='id' value='" . $active_partner->partner_id."' class='button-primary' id='disable' value='Disable'/>
</form>

我也更喜欢这里隐藏的领域。

将session_start()放在您的/disable.php 上