POO : Champs non rempli
Posté : 30 déc. 2016, 17:21
Salut !
J'ai un formulaire que je valide avec une classe, mais elle ne valide pas tous les champs.
Voici le code sur mon formulaire :
Et ma classe :
Ça fait beaucoup de code, mais il n'y a que l'e-mail de vérifié, le prénom et le nom ne sont pas vérifiés.
Merci d'avance
J'ai un formulaire que je valide avec une classe, mais elle ne valide pas tous les champs.
Voici le code sur mon formulaire :
Code : Tout sélectionner
<?php
if(!empty($_POST)){
$errors = array();
$db = App::getDatabase();
$valid = new Valid($_POST);
$valid->isEmpty('name', 'Quel est votre prénom ?');
$valid->isEmpty('surname', 'Quel est votre nom ?');
$valid->isEmail('email', 'Votre email n\'est pas valide');
if($valid->isValid()){
$valid->isUniq('email', $db, 'users', 'Cet email est déjà utilisé pour un autre compte');
}
if($valid->isValid()){
} else {
$errors = $valid->getErrors();
}
} ?>
<html>
<h3>Inscription</h3>
<?php if(!empty($errors)): ?><div class="notif notif-danger"><?php foreach($errors as $error): ?><span><?= $error; ?></span><?php endforeach; ?></div><?php endif; ?>
<form method="POST" action="">
<div class="form-group">
<input type="text" name="name" id="name" placeholder="Prénom" class="form-input animate" value="<?php if(isset($_POST['name'])){ echo $_POST['name']; } ?>" autofocus="autofocus" >
</div>
<div class="form-group">
<input type="text" name="surname" id="surname" placeholder="Nom" class="form-input animate" value="<?php if(isset($_POST['surname'])){ echo $_POST['surname']; } ?>">
</div>
<div class="form-group">
<input type="text" name="email" id="email" placeholder="Adresse e-mail" class="form-input animate" value="<?php if(isset($_POST['email'])){ echo $_POST['email']; } ?>">
</div>
<div class="form-group">
<input type="submit" value="POURSUIVRE L'INSCRIPTION" name="form-login" class="form-submit animate">
</div>
</form>
</html>Code : Tout sélectionner
<?php
class Valid{
private $data;
private $errors = [];
public function __construct($data){
$this->data = $data;
}
private function getField($field){
if(!isset($this->data[$field])){
return null;
}
return $this->data[$field];
}
public function isEmpty($field, $errorMsg){
if(empty($field)){
$this->errors[$field] = $errorMsg;
return false;
}
return true;
}
public function isAlpha($field, $errorMsg){
if(!preg_match('/^[a-zA-Z0-9_]+$/', $this->getField($field))){
$this->errors[$field] = $errorMsg;
return false;
}
return true;
}
public function isUniq($field, $db, $table, $errorMsg){
$record = $db->query("SELECT id FROM $table WHERE $field = ?", [$this->getField($field)])->fetch();
if($record){
$this->errors[$field] = $errorMsg;
return false;
}
return true;
}
public function isEmail($field, $errorMsg){
if(!filter_var($this->getField($field),FILTER_VALIDATE_EMAIL)){
$this->errors[$field] = $errorMsg;
return false;
}
return true;
}
public function isConfirmed($field, $errorMsg = ''){
$value = $this->getField($field);
if(empty($value) || $value != $this->getField($field.'_confirm')){
$this->errors[$field] = $errorMsg;
return false;
}
return true;
}
public function isValid(){
return empty($this->errors);
}
public function getErrors(){
return $this->errors;
}
}Merci d'avance