2014-03-24 57 views
3

我有一個表單(實際上是4個連續頁面上的4種不同表單,但效果相同)用戶填寫以註冊網站。表單中有很多(100+)個項目,包括文本框,範圍,但主要是複選框。如何使用數據庫中的數據預填充Web表單

用戶註冊後,我希望他們能夠通過自定義主頁上的簡單「編輯」鏈接編輯他們的偏好。我的想法是,他們只需再次顯示註冊表單,但這次他們將使用從我的數據庫鏈接到其用戶帳戶的數據預填充。

這是這麼簡單的問題,包含POST值的「編輯」鏈接傳遞到表單頁面:

http://www.mysite.com/something.php?edit=true 

然後在表單頁面上的PHP這個值進行覈對,並設置每個表單項中的值如果編輯爲true

對此的雙重檢查的原因是因爲它似乎是一個非常多的代碼來通過窗體中的每個項目,並將其值設置爲數據庫中的任何內容,我不想只是爲了找出後來在這條線上有一個更快,更少的編程密集的方式做到這一點!

如果有助於找到替代解決方案,使用PDO的Im,用戶通過包含其(唯一)電子郵件地址的會話變量進行標識,並且表單名稱與數據庫列名稱相同。

回答

0

我會把表單放在一個單獨的php文件中,以便它可以被不同的php腳本重複使用。

在這個單獨的php文件中,我將輸入值設置爲POST變量。
I.e. (在這個例子中,我們將調用這個文件myform.php)

<form action="<?php echo htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES); ?>" method="POST"> 
    <input type="text" name="first_name" value="<?php echo @$_POST['first_name']; ?>" > 
    <input type="text" name="last_name" value="<?php echo @$_POST['last_name']; ?>" > 
    <input type="text" name="username" value="<?php echo @$_POST['username']; ?>" > 
    <input type="submit" name="submit" value="<?php echo $submit_value; ?>" > 
</form> 


然後在PHP端的編輯頁面已(假設你的數據庫字段匹配您的輸入字段名)

<?php 
foreach($db_row_fields as $field_key => $field_value) 
{ 
    $_POST[$field_key] = $field_value; 
} 

$submit_value = "Update"; 

include 'myform.php'; 

顯然只會從數據庫中獲取所需的字段。


對於您的註冊,你只需要設置$ submit_value只要你想的POST變量是空

$submit_value = "Sign Up"; 

include 'myform.php'; 

當您使用兩個不同的PHP腳本來處理註冊和編輯也使驗證和形成儘可能可重用的處理代碼。

+0

林不知道我明白你的意思是把表單放在模板中? – Giovanni

+0

只要想一想「//在這裏加載模板」爲「include'formfile.php';」代替。我會重新回答我的答案。 –

0

您想要訪問表單頁面上的DB數據,而不是以前的,並通過POST或GET提交。另外,如果你有這麼多的字段,你可能不想讓它們全都用HTML編寫硬編碼,但是使用一個包含所有字段和設置的多維數組來創建表單。這也將使填寫表格中已經歸因於當前用戶的數據變得更容易。

+1

或者一個關聯數組也可以工作,並且可能更容易維護和訪問。 –

相關問題