2012-07-09 115 views
1

我正在嘗試使用PHP編寫一個動態表單。我想有一個包含兩種形式單一的網頁:在單個PHP文件中有多個提交按鈕的兩種形式

  1. 上形式允許搜索在MySQL數據庫中的元素,例如,一個名字
  2. 較低的形式顯示了數據此名稱在數據庫中

如果我按在上表中的「搜索」按鈕關聯,那麼較低的形式顯示和文本字段都充滿了從數據庫中屬於該名數據。如果我將用戶名更改爲其他值並再次按「搜索」,則會顯示與新記錄相關聯的數據,依此類推。

下面的表單還有一個「Update」按鈕,它允許將對文本框(在下部)所做的更改傳輸到數據庫。

現在,我有以下問題:在我的腳本中,我最初設置名稱的值(從上面的形式)到「」。然後當我按下「搜索」按鈕時,窗體的下半部分就會顯示出來,相應的數據將顯示在下半部分。然後當我按下「更新」按鈕時,與名稱相關的文本字段被設置爲空字符串。這是因爲在我的腳本中,我最初的名字是「」。我希望在這種情況下,輸入的數據不會改變,即保持不變。

我想,我在這裏失去了一些東西。這可能是一個簡單的解決方案,我正在做一些根本性的錯誤。如果你能幫助我,那會很棒。

這就是我的嘗試...我刪除了很多細節,但我想這可以給你一個想法,我想要做什麼。注意整個代碼在文件update.php中。

<?php 
function search_bus($mysql, $name) 
{ 
// do some stuff here... 
} 

function update_bus($mysql, $b_id) 
{ 
    // do some stuff here... 
} 

// some global variables 
$b_id = 0; 
$username = ""; // username of business 

// get b_id that corresponds to username 
if (isset($_REQUEST['search'])) 
{ 
    $b_id =0; // business id 
    if (isset($_POST['user'])) 
    { 
     $username = $_POST['user']; 
     $b_id = search_bus($mysql, $username); 
    } 
} 
elseif(isset($_REQUEST['update'])) 
{ 
    update_bus($mysql, $b_id); 
} 


?> 

<h2>Search:</h2> 
<form name="search_bus" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
Username: <input type="text" name="user" value="<?= htmlentities($username) ?>"/> 
<input type="submit" value="Suchen" name="search"/> 
</form> 

<?php 
if($b_id != 0) 
{ 
?> 

<h2>Data:</h2> 
<form name="business_design" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
<-- some form follows here --> 

<?php 
} 
?> 
+3

你能展示一些代碼嗎?如果你動態地隱藏,你將需要有一些JavaScript或JavaScript庫(如jQuery)。 – Sablefoste 2012-07-09 20:53:17

+0

我加了一些代碼...希望有幫助! – user1513073 2012-07-09 21:11:57

+0

這功課呢? :)) – DarthVader 2012-07-09 21:12:16

回答

0

我想你缺少的是創建一個HTML隱藏字段來保持名稱變量的值。

<input type="hidden" name="name" value="<?php print $nameVar ?>" /> 

將此輸入添加到兩個表單中,以便無論用戶點擊哪個按鈕都可以保持該值。

希望這會有所幫助。

添加代碼來驗證

<h2>Search:</h2> 
<form name="search_bus" method="post" 
action="<?php echo $_SERVER['PHP_SELF'];?>"> 
Username: <input type="text" name="user" value="<?= htmlentities($username) ?>"/> 
<input type="hidden" name="b_id" value="<?php print $b_id?>" /> 
<input type="submit" value="Suchen" name="search"/> 
</form> 


<?php if($b_id != 0) { ?> 
<h2>Data:</h2> 
<form name="business_design" method="post" action="<?php echo $_SERVER['PHP_SELF'];>">  
<input type="hidden" name="b_id" value="<?php print $b_id?>" /> 
<-- some form follows here --> 
<?php } ?> 

Dont initialize $b_id if it already comes into the http request. 
if (!isset($_POST['b_id'])) 
{ 
$b_id = 0; 
}   
else 
{ 
$b_id = $_POST['b_id']; 
} 

這樣你就可以送花兒給人記得B_ID的最後選擇的值。 希望這可以幫助你。

+0

不知道我明白...我該在這個隱藏的領域放什麼? b_id?但是,它是如何初始化爲零以及它是如何從數據庫中收集的,取決於在用戶名文本字段中輸入的名稱? – user1513073 2012-07-09 21:29:35

+0

我試過這個,但它不起作用:(我想,我誤解了一些東西,我認爲我的問題是本質上的,當我按下第二個窗體的按鈕時,那麼$ b_id = 0和下面的窗體沒有顯示,因爲它只顯示$ b_id!= 0時......我必須確保當按下下面窗體的提交按鈕時,$ b_id值不會設置爲0。任何想法如何實現這一目標?非常感謝!! – user1513073 2012-07-09 21:44:50

+0

我會這樣做: – Israelm 2012-07-10 14:14:41