<?php
require_once('database.php');
class UserValidator extends database
{
private $data;
private $errors =[];
private static $fields =['username', 'email', 'name', 'surname', 'number', 'password', 'gender'];
public function __construct($post_data)
{
$this->data = $post_data;
}
public function validateForm()
{
foreach(self::$fields as $field)
{
if(!array_key_exists($field, $this->data))
{
trigger_error("$field nie istnieje");
return;
}
}
$this->validateUsername();
$this->validateEmail();
$this->validateName();
$this->validateSurname();
$this->validateNumber();
$this->validateGender();
$this->validatePassword();
$this->query();
return $this->errors;
}
private function validateUsername()
{
$val = trim($this->data['username']);
if(empty($val))
$this->addError('username', 'Pole nie może być puste');
else
{
if(!preg_match('/^[a-zA-Z-0-9]{6,12}$/', $val))
{
$this->addError('username', 'Login must me 6-12 characters');
}
}
}
private function validateEmail()
{
$val = trim($this->data['email']);
if(empty($val))
{
$this->addError('email', 'Pole email nie może być puste');
}else
{
if(!preg_match('/^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}$/', $val))
{
$this->addError('email', 'Niepoprawny email');
}
}
}
private function validateName()
{
$val = trim($this->data['name']);
if(empty($val))
{
$this->addError('name', 'Pole nie może być puste');
}else
{
if(!preg_match('/^[A-Z-ZŁŚ]{1}+[a-ząęółśżźćń]+$/', $val))
{
$this->addError('name', 'Podaj poprawne imię');
}
}
}
private function validateSurname()
{
$val = trim($this->data['surname']);
if(empty($val))
{
$this->addError('surname', 'Pole nie może być puste');
}else
{
if(!preg_match('/^[A-Z-ZŁŚ]{1}+[a-ząęółśżźćń]+$/', $val))
{
$this->addError('surname', 'Podaj poprawne nazwisko');
}
}
}
private function validateNumber()
{
$val = trim($this->data['number']);
if(empty($val))
{
$this->addError('number', 'Pole nie może być puste');
}else
{
if(!preg_match('/^[0-9]{9}+$/', $val))
{
$this->addError('number', 'Podaj poprawny numer');
}
}
}
private function validatePassword()
{
$val = trim($this->data['password']);
if(empty($val))
{
$this->addError('password', 'Pole nie może być puste');
}
}
private function validateGender()
{
val = trim($this->data['gender']);
if(empty($val))
{
$this->addError('gender', 'Pole nie może być puste');
}
}
private function addError($key, $val)
{
$this->errors[$key] = $val;
}
private function query()
{
$sql = "SELECT * FROM uzytkownicy";
$result = $this->connect()->query($sql);
while ($row = $result->fetch(PDO::FETCH_ASSOC))
{
echo $row['login'];
}
echo "DFdfdfdf";
}
}
?>
<?php
class database
{
private $servername;
private $username;
private $password;
private $dbname;
public function connect()
{
$this->username = 'localhost';
$this->username = 'root';
$this->password = '';
$this->dbname = 'cms2';
$conn = new mysqli($this->servername, $this->username, $this-> password, $this->dbname);
return $conn;
}
}
?>
<div class="row">
<div class="col-25">
<label for="lname">Płeć</label>
</div>
<div class="col-75">
<input type="radio" name="gender" value="Kobieta">Kobieta<input type="radio" name="gender" value="Mężczyzna">Mężczyzna
<div class="error">
<?php echo $errors['gender'] ?? '' ?>
</div>
</div>
</div>
Robię walidację formularza w obiektowym php i wszystkie funkcje odpowiadające za poszczególne pole działają oprócz funkcji odpowiadającej za walidację pole płci. A drugi mój problem brzmi tak że chcę wyświetlić dane z bazy danych ale nic nie wyświetla. Mam nadzieję że ktoś mi pokaże gdzie popełniam błędy. Dopiero zaczynam programować w php więc wiele rzeczy jeszcze nie wiem.