2012-03-09 216 views
0

我有一個表格與以下字段的「用戶配置文件」:動態隱藏表單域

<form> 
    First Name: <input id="first_name" /> 
    Last Name: <input id="last_name" /> 
    Phone Number: <input id="phone_number" /> 
    City: <input id="city" /> 
</form> 

但是,如果我不想要什麼「電話號碼」和「城市」是可見一組選定的用戶?

如何動態地隱藏這些字段,具體取決於哪個用戶登錄?我目前使用PHP和MySQL。是否最好將「字段ID」添加到數據庫中,然後查詢數據庫記錄以查看應該隱藏哪些字段以及哪些字段應該可見?還是有更好的方法來做到這一點?

我很抱歉,如果這有點含糊不清。如果沒有意義,我可以嘗試澄清。

非常感謝。

編輯:我想澄清我想達到的目標。我試圖根據哪個用戶登錄來動態顯示字段。另外,當我說「隱藏」時,我實際上應該說「已刪除」。見我下面的例子

例如,

如果JoeUser日誌中,他會看到:

<form> 
    First Name: <input id="first_name" /> 
    Last Name: <input id="last_name" /> 
    Phone Number: <input id="phone_number" /> 
    City: <input id="city" /> 
</form> 

但是,如果JaneUser日誌中,她會看到(基於在數據庫中設置首選項):

<form> 
    First Name: <input id="first_name" /> 
    Last Name: <input id="last_name" /> 
</form> 

我的問題是:什麼是最好的方法來實現這一目標?我假設這些首選項需要數據庫驅動。任何輸入都會很棒。

+0

我會用標籤包裹標籤元素中的文本和輸入字段。這不僅可以提高可訪問性,還可以控制整個文本/輸入以顯示/隱藏。 – j08691 2012-03-09 17:08:26

回答

2

取決於你如何建立網站有不少方法可以做到這一點,但因爲你是新來的PHP,我會認爲這只是一個內嵌的程序腳本。在這種情況下,您需要檢查用戶是否設置在會話中,然後根據輸出顯示或隱藏。

東西類似於以下

<?php if(isset($_SESSION['id'])) : ?> 

<form> 
    First Name: <input id="first_name" /> 
    Last Name: <input id="last_name" /> 
    Phone Number: <input id="phone_number" /> 
    City: <input id="city" /> 
</form> 

<?php endif; ?> 

的,如果statment檢查是否會話ID設置(這將取決於你如何處理用戶會話等可能發生變化),然後顯示形式。

編輯: 只是注意到,你已經編輯了你原來的問題。要做到這一點,你會這麼類似於以下的東西,這再次假設你正在使用會話,並且有用戶類型用戶在會話設置(不是很大,但作爲一個初學者它的快速)。

<?php if(isset($_SESSION['id'])) : ?> 

    <form> 
     First Name: <input id="first_name" /> 
     Last Name: <input id="last_name" /> 
    </form> 

<?php else if(isset($_SESSION['id']) && (isset($_SESSION['user_type']) && $_SESSION['user_type'] == 'phoneuser')) : ?> 

    <form> 
     First Name: <input id="first_name" /> 
     Last Name: <input id="last_name" /> 
     Phone Number: <input id="phone_number" /> 
     City: <input id="city" /> 
    </form> 
<?php endif; ?> 
-1

1)你應該使用jQuery的(不要忘了包括這個庫部分)。

$('#hide_name').click(function() { 
    $('#first_name').hide('slow', function() { 
    }); 
}); 

First Name: <input type="text" id="first_name" /> <a href="#" id="hide_name" /> Hide name </a> 

2)或下一個方式

if ($_SESSION['login']) { 
    $visible = "visibility: visible;"; 
} 
else { 
    $visible = "visibility: hidden;"; 
} 

First Name: <input type="text" style=<?php echo $visible; ?> /> 

3)或最簡單的方法

if ($_SESSION['login']) { 
    First Name: <input type="text" id="first_name" /> 
} 
+0

這將離開文本,但隱藏表單域。 – j08691 2012-03-09 17:07:22

-1

你需要存儲一些類型的數據的定義是什麼用戶看到,或者他們沒有看到。根據您的數據選擇直覺。知道用戶登錄後,獲取有關顯示內容的數據。你可以基於此創建一個布爾值數組,我們稱之爲form_fields []。然後輸出與PHP的形式,並決定在此基礎上的數據顯示哪些部分,可能就像這樣:

$form = "<form>\n"; 
if(form_fields['first_name']) 
{ 
    $form .= 'First Name: <input id="first_name" />'; 
} 
if(form_fields['last_name']) 
{ 
    $form .= 'Last Name: <input id="last_name" />'; 
} 
if(form_fields['phone']) 
{ 
    $form .= 'Phone Number: <input id="phone_number" />'; 
} 
if(form_fields['city']) 
{ 
    $form .= 'City: <input id="city" />'; 
} 

$form .= "</form>"; 

請記住,驗證您的數據變得更加複雜太 - 你的表格處理腳本還需要知道它尋找什麼領域。

+0

'form_fields [ 'FIRST_NAME']','form_fields [ '姓氏']',......插入'''好嗎? – 2012-03-09 17:37:46

+0

謝謝你指出,我很感激。它是固定的。 – 2012-03-09 19:20:36

0

你可以在服務器端隱藏php文件內的dinamycally,或者嘗試通過php爲js設置變量,並在客戶端通過javascript進行字段操作。 你能解釋一下你想用這些表單做什麼嗎?我不明白