【问题标题】:PHP form, reset button, modify button logicPHP表单,重置按钮,修改按钮逻辑
【发布时间】:2014-03-09 23:10:48
【问题描述】:

我的 PHP 表单有问题。

我有一个简单的表格,几乎可以做到:

if (isset($_POST['submit'])) {
} elseif (isset($_POST['confirm'])) {
} else {
}

它几乎是一个带有提交的表单,然后是确认屏幕(带有一个返回上一个屏幕的修改按钮)。为了实现修改按钮,我使用了输入类型的提交按钮。在表单提交时,表单将返回到自身。由于它不是一个名称 =“提交”或“确认”(修改按钮名称是“修改”),它会进入 else 并且我使用 $_POST 数组通过做某事用它之前拥有的数据填写表单喜欢:

if (isset($_POST['event_name'])) {
        $event_name = $_POST['event_name'];
}
else {
        $event_name = "";
}

然后不同的表单字段会使用 $event_name 或其各自的 var 来填写默认值。

但是通过这样做,我破坏了表单的重置按钮(输入类型 =“重置”),它会清除表单中的所有字段,而在按下修改后它不会这样做。有人知道我可以解决这个问题的更好方法吗?我现在只是让我的重置按钮刷新页面,这不是很理想。

我还有一个问题,当我使用“修改”按钮时,屏幕上出现了几个损坏的字符。我应该从哪里开始寻找它们出现的原因?说问题的图片:

和

【问题讨论】:

  • 您可以使用 javascript 让重置按钮清除所有字段。
  • @Barmar 这与“重置”按钮不一样吗?请原谅我将做出的一些明显的陈述,但似乎我需要让我的重置按钮也清除我的所有变量,因为我所有的字段值都设置为一个变量。我怎样才能让我的重置按钮重置我的各种变量以及提示重置?我对此很陌生。
  • 重置按钮只需要清除所有表单字段,不需要清除PHP变量,因为用户填写表单时PHP没有运行。
  • @Barmar 变量会在其中发挥作用,因为我如何创建我的字段“ ”。有没有一种方法可以简单地将所有变量设置为“”,然后使用通过 php/javascript 提供给我的内容进行重置
  • 但是当用户使用表单时,这些变量已经无关紧要了。 PHP 在服务器上,而不是在客户端上。每次用户提交表单时,它们都会从$_POST 设置,然后在 PHP 脚本完成时所有变量都消失。

标签: php html forms reset


【解决方案1】:

您可以做的只是将 $_POST 添加到数据库 (MySQL) 中(只需确保对其进行清理)。如果用户想要编辑一篇文章,他们可以简单地添加一个编辑按钮,该按钮可以加载,比如一个文本区域,带有该文章的值(存储在数据库中的那个)。

类似于以下内容... 示例代码

 define("DB_TYPE", "mysql");
 define("DB_HOST", "127.0.0.1");
 define("DB_NAME", "form_posts");
 define("DB_USER", "user");
 define("DB_PASS", "password");
 private $db_connection = null;
 private function createDatabaseConnection(){
        try {        
            $this->db_connection = new PDO(DB_TYPE.':host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=utf8', DB_USER, DB_PASS);
            return true;
        } catch (PDOException $e) {
            $this->feedback = "PDO database connection problem: " . $e->getMessage();
        } catch (Exception $e) {
            $this->feedback = "General problem: " . $e->getMessage();
        }
     return false;
}
private function accessDB($sql){
         $this->createDatabaseConnection();
         $query = $this->db_connection->prepare($sql);
        // bind the value you wish to access to the corresponding :value
         if(isset($_POST['value'])){
             $query->bindValue(':value',$_POST['value']);
         }
        $query->execute();
        $result_row = $query->fetchAll() ; 
     return $result_row;  
}
public function getPostVal(){
     $FormPost = htmlentities($_POST['ForumPost'], ENT_QUOTES);

     $result_row = $this->accessDB("SELECT count(ForumPost) FROM users WHERE ForumPost = {$ForumPost} LIMIT 1");
     return array_map(function($entry) { return $entry['account_ID']; }, $result_row);
}
public function setPostVal($val){
     $this->createDatabaseConnection();

     $sql = "INSERT INTO users (FormPost, post_id)
                VALUES(:FormPost, :post_id)'";
     $query = $this->db_connection->prepare($sql);
     $isSuccess = $query->execute();
     if($isSuccess){
          echo 'success!';
     } else { echo 'the action failed';}
}

在文本区域内有<?=getPostVal(); ?> 或其他东西,然后有setPostVal($val) 提交数据

从这里您可以调整发布正确帖子所需的值。也许添加一个编辑按钮或你有什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多