2012-03-09 3 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. Было бы лучше добавить «идентификатор поля» в базу данных, а затем запросить запись базы данных, чтобы увидеть, какие поля должны быть скрыты и какие поля должны быть видимыми? Или есть лучший способ сделать это?

Приносим извинения, если это немного неоднозначно. Если это не имеет смысла, я могу попытаться уточнить.

Большое спасибо.

EDIT: Я хотел бы уточнить, чего я пытаюсь достичь. Я пытаюсь динамически показывать поля, на основе которых пользователь входит в систему. Кроме того, когда я сказал «скрытый», я действительно должен был сказать «удален». Смотрите мой пример ниже

Eg,

Если 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

ответ

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; ?> 

КРП Постулаты проверяет, является ли идентификатор сеанса устанавливается (это, вероятно, изменится в зависимости от того, как вы обработки пользовательских сессий и т.д.), а затем показывает форму.

Редактировать: Только что заметил, что вы отредактировали исходный вопрос. Для этого вы можете сделать что-то похожее на следующее: это предполагает еще раз, что вы используете сеансы и что у вас есть пользовательский тип пользователя, установленный в сеансе (не очень, но как новичок он быстро).

<?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

-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 ['last_name']', ... вставить '' 'ok? –

+0

Спасибо, что указали это, я ценю это. Это фиксированная. –

0

Вы можете скрыть динамически на стороне сервера внутри php-файла или попробовать установить переменную через php для js и работать с полями на стороне клиента через javascript. Можете ли вы объяснить, что вы хотите делать с этими формами?Я не понял