我的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来填充默认值。
但通过这样做,我打破了我的表单重置按钮(输入类型="重置"),这将清除表单中的所有字段,修改后不会这样做被压了。有人知道我能解决这个问题的更好方法吗?我现在只是让我的重置按钮立即刷新页面,这并不理想。
我还有一个问题,当我使用“修改”按钮时,我会在屏幕上显示一些损坏的字符。我应该开始寻找他们为什么出现的地方?所述问题的图片:
和
答案 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)
提交数据
从这里你可以调整正确发布所需的值。也许添加一个编辑按钮或者你有什么。