2012-08-09 33 views
0

我想創建一個PHP MySQL腳本,它將顯示數據,然後允許用戶編輯數據,但不必離開頁面才能這樣做。PHP更新同一頁上的MySQL數據庫

所以有可能在表單中顯示MySQL數據,允許用戶點擊它並對其進行編輯(如正常的電子郵件表單),然後單擊保存按鈕並進行數據更新。

我明白保存按鈕將重新加載相同的頁面,我只是不希望用戶必須去不同的頁面來編輯數據。

+2

調查AJAX。 – 2012-08-09 18:35:03

+0

不需要Ajax,只是一個提交給處理顯示和更新的相同PHP的簡單表單。 – alfasin 2012-08-09 18:35:37

+1

對於絕對沒有頁面重新加載所需的方法,您將需要使用AJAX。否則堅持從@alfasin的建議 – 2012-08-09 18:38:39

回答

3

是的,這是可能的。只需使用

<form action="" method="post"> 

它也可能沒有任何重新加載 - 使用JavaScript和AJAX。 jQuery使AJAX的使用更簡單。

+0

我可以只使用我會反正使用相同的update.php? – jtehlert 2012-08-09 18:40:07

+0

是的,'action =「」'表示數據將被髮送到同一頁面。在update.php上,如果表單已經發送,你可以通過if($ _ POST)檢查。 – 2012-08-09 18:41:51

+0

@ user1586258是的,但是在更新之後,你需要打印一個重定向頭 - 'header(「Location:[pageYouWantToGoTo.php]」);'。在同一頁面上進行所有處理會更有效率。 – Matt 2012-08-09 18:42:53

0
if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // now you know the form has been submitted 
} 
0

如果您不使用java腳本(Ajax),您可以使用$ _REQUEST ..並使用meta將用戶發送到sql list頁面。

例如:

<?php 

if($_REQUEST['do']=="showform"){ 
///// Show insert form 
echo "<form action=\"test.php\" method=\"get\" enctype=\"text/plain\"> 


<input type=\"text\" name=\"name\" /> 
<input type=\"hidden\" value=\"insert\" name=\"do\" /> 
<input type=\"submit\" value=\"Add\" /> 


</form> " ; 

$sql=$db->query("select * from names order by id decs "); 
while($r=mysql_fetch_array($sql)){ 

    /// 
    /// print your data 
    /// 
}  

} 

if($_REQUEST['do']=="insert"){ 

    $name=mysql_real_escape_string($_GET['name']); 
    /// call your insert function here 
    /// for Example 

    $sql=$db->query(" insert into names(name) values('$name')"); 

    if($sql){/// 
    echo "<META HTTP-EQUIV='refresh' CONTENT='1; URL=test.php?do=showform'>"; 
    } 
    else{ 

    echo "erorr"; 
    } 

} 




?> 

這僅出Java腳本方法,我希望這將是有益的

+0

你不應該在SQL中使用字符串插值。您應該使用佔位符來保證您的SQL正確轉義。 – tadman 2012-08-09 20:56:21

+0

MR.tadman謝謝你,這只是一個簡單的例子,並不是完美的例子。 – 2012-08-09 21:09:08

0

我會建議對發佈您的形式,以用於顯示數據的頁面。如果用戶點擊瀏覽器的刷新按鈕,表單將再次發送,這可能會做你不想要的東西。

使用POST/REDIRECT/GET pattern:將表單發佈到用於處理它的頁面,然後此頁面必須發送標題以重定向到您的顯示頁面。