2013-01-17 127 views
0

我有這個功能,其目的是更新一個帖子。我有一個從數據庫中拉數據並顯示<form>標籤和行動之間就會直接到update.php文件,其中包括以下另一個功能:PHP更新功能不起作用

<?php 
include_once("functions.php"); 

$obj = new data_handler; 
$obj->update_post($_GET['id']); 
?> 

那麼這是運行:

public function update_post($id) { 
    try { 
    $sql = $this->con->prepare("UPDATE Content SET Title=?, Body=? WHERE id=?"); 
    $sql->bindParam(1, $_POST['title']); 
    $sql->bindParam(2, $_POST['body']); 
    $sql->bindParam(3, $id); 
    $sql->execute(); 
    } catch (PDOException $e) { 
    echo $e->getMessage(); 
    } 
    header("Location: index.php"); 
} 

這是拉內容的功能編輯:

public function display_selected ($id) { 
    $sql = $this->con->query("SELECT * FROM Content WHERE id= '$id'"); 
    while ($row = $sql->fetch()) { 
     echo $row['Body']; 
    } 
} 

這是形式:

<form action="update.php" method="post"> 
     <input type="text" size="105" name="title"></input> 
     <textarea name="body"><?php $obj = new data_handler; $obj->display_selected($_GET['id']); ?></textarea> 
     <input type="submit" value="Update"/> 
    </form> 

我沒有得到任何錯誤/例外/警告,我可以經歷整個過程,但它不會改變任何事情。

+6

要發佈到update.php但找'$ _GET [ '身份證']'..那是不是設置在任何地方.. –

+0

@DannyHearnah $ _GET通常由網絡服務器設置.... – mercsen

+0

並沒有'$ obj = new data_handler; '真的有用嗎?我認爲它必須是'$ obj = new data_handler();' – mercsen

回答

2

選項1

變化

$obj->update_post($_GET['id']); 

$obj->update_post($_POST['id']); 

,並添加到您的形式

<input type="hidden" name="id" value="<?=$_GET['id']?>"> 

值得注意的是:輸入標籤是自動關閉的,所以你最終不需要。

選項2

變化

<form action="update.php" method="post"> 

<form action="update.php?id=<?=$_GET['id']?>" method="post"> 
+0

不錯!我測試了一下,發現我沒有得到一個ID,所以它不知道要改變什麼。你已經有了解決方案!非常感謝! – ejx

+0

不客氣:) –