Динамически скрывать поля формы - PullRequest
0 голосов
/ 09 марта 2012

У меня есть форма для «профиля пользователя» со следующими полями:

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

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

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

РЕДАКТИРОВАТЬ: Я хотел бы уточнить, что я пытаюсь достичь.Я пытаюсь динамически отобразить поля, на основе которых пользователь входит в систему. Кроме того, когда я сказал «скрытый», я фактически должен был сказать «удаленный».См. Мой пример ниже

Например,

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

Мой вопрос: каков наилучший способ добиться этого?Я предполагаю, что эти предпочтения должны основываться на базе данных.Любой вклад был бы великолепен.

Ответы [ 4 ]

2 голосов
/ 09 марта 2012

В зависимости от того, как вы создали сайт, есть немало способов сделать это, но, поскольку вы новичок в 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; ?>

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

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

<?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; ?>
0 голосов
/ 09 марта 2012

Вам нужно будет хранить какие-то данные, которые определяют, что видит пользователь, а что нет.Выберите то, что кажется интуитивно понятным на основе ваших данных.Как только вы узнаете, что пользователь вошел в систему, получите данные о том, что им показывать.На основе этого вы можете создать массив логических значений, назовем его 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 голосов
/ 09 марта 2012

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

0 голосов
/ 09 марта 2012

1) Вы должны использовать jQuery (не забудьте включить эту библиотеку в head section).

$('#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" />
}
...