2014-09-10 68 views
0

我有一個使用X-editable進行內聯編輯的表,並且一切正常,包括正在提交給數據庫的值,但由於某種原因,它會在else部分中顯示我的回顯。使用x-editable將URL文本插入到數據庫中

這是我的PHP代碼:

require("config.php"); 

$userid = $_SESSION['user']['id']; 
$sql = "SELECT fb_url, tw_url, ggl_url FROM social_preferences WHERE user_id = :userID"; 
$stmt = $db->prepare($sql); 
$stmt->bindParam(":userID", $userid, PDO::PARAM_INT); 
$stmt->execute(); 
$result = $stmt->fetch(); 


$pk = $_POST['pk']; 
$name = $_POST['name']; 
$value = $_POST['value']; 

    if(!empty($value)) { 
      try // save user selection to the database 
       { 

       $stmt = $db->prepare("UPDATE social_preferences SET tw_url = :twurl WHERE user_id = :userID"); 
       $stmt->bindParam(":userID", $pk, PDO::PARAM_INT); 
       $stmt->bindParam(':twurl', $value); 
       $stmt->execute(); 

       header("Location: admin-social.php"); 
       die("Redirecting to admin-social.php"); 
       } catch(PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } 
    }else { 
     echo 'Something went wrong!'; 
     var_dump($value); 
    } 

這裏是我的HTML代碼:

<a name="tw-url" id="tw-url" data-type="text" data-pk="<?php echo ($userid);?>" title="Edit"><?php echo ($result['tw_url']);?></a> 

就像我上面說的一切似乎是工作,但它重定向到一個頁面,顯示我的回聲即使它向數據庫提交了值,也可以使用Something went wrong!。我包含var_dump來查看是否有值,並返回NULL。有人可以幫幫我嗎?任何想法爲什麼它會提交正確的價值數據庫,但重定向到我的錯誤?

此外,它在什麼時候將它發送到數據庫?我有一個帶有保存按鈕的表格,但是當我打開可編輯文本並提交新值時,是否從彈出窗口保存或當我單擊表格表格中的保存按鈕時發送到數據庫?

+1

那麼你得到了什麼MySQL/PDO錯誤? – 2014-09-10 22:32:16

+0

'href'通常作爲一個GET關聯/可執行,並且您將它作爲POST傳遞,因此'if(isset($ _POST ['mysocialurl']))'永遠不會被設置。 – 2014-09-10 22:38:52

+0

關於我應該怎麼做的任何建議? – iamthestreets 2014-09-11 00:16:15

回答

1

else語句被執行,因爲當你的信息插入到數據庫中,已經設置一個header其重定向到同一個頁面,在這種情況下,變量$value值設置爲空,你else語句執行。

以上答案僅在您將header設置爲同一頁時有效。

+0

我刪除了這個:'header(「Location:admin-social.php」);死(「重定向到admin-social.php」);'從我的代碼中,它似乎都在工作。我有什麼理由需要保留這段代碼嗎? – iamthestreets 2014-09-19 19:48:44

+0

當我們想要重定向到不同的頁面時,通常我們使用'header(「Location:filename.php」)',但是當數據發佈到同一頁面時,我們應該使用一個變量來知道我們的數據是否被提交。例如。你可以替換你的'header(「Location:...」);在你的HTML代碼中,你可以使用這個'$ output'變量來驗證提交,如下所示: 'if(isset($ output )和$ output ===「submitted」){echo「Data has been submitted」; }' 您可以根據模板設置輸出消息的樣式。 – 2014-09-21 04:54:54

+0

我嘗試了你上面提出的建議,它不起作用。我有admin-social.php和post.php,admin-social.php顯示html和其他一些與post.php無關的php,而post.php是'$ output'變量的地方,所以我不確定它是否會將變量傳遞給admin-social.php。你確實回答了我原來的問題,所以謝謝。 – iamthestreets 2014-09-22 20:50:15

相關問題