PHP表单,重置按钮,修改按钮逻辑

时间:2014-03-09 23:10:48

标签: php html forms reset

我的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来填充默认值。

但通过这样做,我打破了我的表单重置按钮(输入类型="重置"),这将清除表单中的所有字段,修改后不会这样做被压了。有人知道我能解决这个问题的更好方法吗?我现在只是让我的重置按钮立即刷新页面,这并不理想。

我还有一个问题,当我使用“修改”按钮时,我会在屏幕上显示一些损坏的字符。我应该开始寻找他们为什么出现的地方?所述问题的图片:http://puu.sh/7ptan.png

enter image description here

1 个答案:

答案 0 :(得分:0)

你可以做的只是将$ _POST添加到数据库(MySQL)中(只需确保将其全部清理)。如果用户想要编辑帖子,他们可以简单地添加一个编辑按钮,用该文章的值(存储在数据库中的那个)加载(例如textarea)。

以下内容...... 示例代码

 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';}
}

在textarea中有<?=getPostVal(); ?>或其他内容setPostVal($val)提交数据

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