Вот класс, который я начал писать, чтобы добавить нового пользователя в мою базу данных через регистрационную форму. Все работало нормально, пока я не попытаюсь выполнить проверку подлинности, чтобы узнать, не указаны ли требуемые значения. Вот код ...PhP ассоциативный массив ошибок на основе динамического ключа => значения
class User
{
//Basic Login variables
private $uName;
private $pWord;
private $cpWord;
private $shaPass;
//Account info vars
private $fName;
private $lName;
private $email;
private $confEmail;
private $mPhone;
private $hPhone;
//Trading info vars
private $trName;
private $phone; //Defaults to home phone, or cell, if no home number specified.
private $fax;
private $web;
//Home Address vars
private $h_addr1;
private $h_addr2;
private $h_city;
private $h_state;
private $h_zip;
//Postal Address vars
private $p_addr1;
private $p_addr2;
private $p_city;
private $p_state;
private $p_zip;
private $not_required_vars;
//Post name collection
private $post_coll;
//Error collection
private $errors;
public function User()
{
$this->not_required_vars = array('fax', 'web');
$this->post_coll = array('uName', 'pWord', 'cpWord', 'fName', 'lName', 'email', 'confEmail', 'dob', 'mPhone', 'hPhone', 'trName', 'phone', 'fax', 'web', 'h_addr1', 'h_addr2', 'h_city', 'h_state', 'h_zip', 'p_addr1', 'p_addr2', 'p_city', 'p_state', 'p_zip');
//print_r($_POST);
foreach($this->post_coll as $index)
{
if(isset($_POST[$index]) && (!empty($_POST[$index])))
{
//echo $index . '<br />';
$this->{$index} = $_POST[$index];
}else
{
foreach($this->not_required_vars as $not_req)
{
if($index != $not_req)
{
//echo $index . '<br />';
$this->errors = array();
$this->errors[] = array($index=>'This field is required');
break;
//header('location: '.$_SERVER['PHP_SELF'].'?page='. $_GET['page'] . '&error=1');
}
}
}
}
print_r($this->errors);
}
Позвольте мне сэкономить время, объясняя, что выше делает ... У меня есть массив $ _POST индексов строк, называемых «post_coll». Затем я получаю свой цикл foreach через каждую строку, проверяя, содержит ли эта строка isset в массиве $ _POST, если это не так, я проверяю, является ли это требуемым значением. Если это действительно требуемое значение, я хочу создать ассоциативный массив со строкой (например, «uName») в качестве ключа в массиве со значением, являющимся чем-то вроде «Это поле необходимо» таким образом, когда я перенаправляю его обратно моя форма, я могу получитьErrors из моего класса и отобразить их, когда это необходимо в форме.
Заранее благодарим за любую помощь.
Хорошо ... да, у меня было, что в какой-то момент, но когда там я получаю это для распечатки ... 'Array ([cpWord] => Это поле обязательно для заполнения)' Это то, что я хочу, но ... cpWord не было единственным значением, которое не было заполнено, я также оставил uName и pWord незаполненными. Это похоже на то, что он должен делать, но заменяет значения внутри массива вместо добавления ошибок. Редактировать: Я пытался использовать что-то вроде array_push, но это тоже не работает, или, по крайней мере, так, как я это делал. –
Как вы печатаете значения в массиве на экране? – cosmicsafari
Пользовательский класс перенаправит пользователя обратно в форму и над каждым элементом будет иметь тег div с условием, если задано условие $ errors ['uName'] и т. Д. (Полученное из функции getErrors), отображение это сообщение над элементом. –