2016-10-28 4 views
0

У вас есть PHP форма со следующим полем в нем:Простого PHP Форма Шаблонирование

(кодовый блок 1)

City: <input type="text" name="city"><br> 

Форма-х action attribute установлена ​​в itself. Когда submitted на сервер, страница проверяет поле, и если он недействителен возвращает ту же страницу с:

  1. сообщения об ошибке
  2. красной рамка вокруг поля ввода формы текста
  3. значения, которое пользователь первоначально введенный в текстовое поле формы ввода

Я мог бы использовать if then else конструкцию и вернуть code block 2 если недействителен.

(кодовый блок 2)

<?php echo "The form field with red border has an invalid entry"; ?> 
City: <input type="text" name="city" 
style="border-color:red" value="<?php echo $record->city ?>"><br> 

Мой вопрос, если бы вы добавить к шаблонизации code block 1, так что вам не нужно code block 2, как бы вы это сделать?

Ограничьте ваш ответ установить на:

  1. чистых PHP ответов (без каких-либо внешних шаблонные библиотеки или рамки PHP).
  2. подходит для тех, для кого PHP - это единственный серверный скриптовый скриптинг, который они знают (и они относительно неопытны).
+2

Есть слишком много возможных ответов, или хорошие ответы будут слишком длинными для этого формата. Пожалуйста, добавьте детали, чтобы сузить набор ответов или изолировать проблему, на которую можно ответить в нескольких абзацах. Я бы посоветовал вам найти форум по развитию (возможно, [Quora] (http://www.quora.com/Computer-Programming)?), Чтобы разобраться в общих чертах. Затем, когда/если у вас есть особые проблемы с кодированием, вернитесь в StackOverflow, и мы будем рады помочь. –

+0

@JayBlanchard Хорошо, сужу вопрос. –

ответ

0

Вместо того, чтобы использовать, если/иначе вы могли бы создать $ has_error связанный массив и интеграции, которые непосредственно в первоначальном виде, как так:

City: 
<input type="text" name="city" class="<?= $has_error['city']['class'] ?>" value="<?= $record->city ?>"> 
<span><?= $has_error['city']['message'] ?></span> 
<br> 

и структурировать ваши ошибки проверки следующим образом:

$has_error = [ 
    'city' = [ 
    'class' => '', 
    'message'=> '' 
    ] 
] 

Затем примените класс ошибки и сообщение на стороне проверки (где бы вы ни отправили свою форму). Поэтому, когда поле city вход не проходит проверку ваш $has_error массив будет выглядеть следующим образом:

$has_error = [ 
    'city' = [ 
    'class' => 'error', 
    'message'=> 'This field has an error' 
    ] 
] 

Ваш класс ошибка будет выглядеть примерно так:

.error{ 
    border: 2px solid red; 
} 
+0

Спасибо. Под «переменными URL» вы имеете в виду запрос типа «GET»? Кроме того, любое преимущество перед использованием переменных '$ _SESSION ['xyz']'? –

+1

$ _SESSION будет хорошо работать для этой ситуации. – dylpickle

+0

Кто-то отказался от этого ответа. Почему люди в сообществе настолько порочны и злобны? –

0

Простой способ решить это было бы для добавления форматирования от code block 2 к вашему файлу CSS, а затем используйте PHP, чтобы добавить класс к вашему вводу.

CSS:

.errorField { 
    border-color: red; 
} 

HTML/встроенный PHP:

City: <input type="text" <?php echo errorCity ? 'class="errorField"' : '' ?> name="city" value="<?php echo $record->city ?>"><br> 

И ваш проверки PHP установлен errorCity в true если вход является недопустимым.

Что делает встроенный PHP, является проверка значения bool errorCity и эхо class="errorField", если это правда, или ничего, если оно ложно.

+0

Кто-то отказался от этого ответа. Почему люди в сообществе настолько порочны и злобны? –

+1

Я понятия не имею. Мне больно мое сердце :(Реальность трудно заработать здесь, и я был взволнован, когда увидел свой верхний лол. –