[RESOLU] POO : Champs non rempli

Eléphant du PHP | 386 Messages

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 :

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>
Et ma classe :

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; } }
Ç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

Eléphant du PHP | 386 Messages

30 déc. 2016, 18:35

Résolue : Si dans ma fonction je ne précise pas que je récupère le champs avec getField :

Code : Tout sélectionner

public function isEmpty($field, $errorMsg){ if(empty($this->getField($field))){ $this->errors[$field] = $errorMsg; return false; } return true; }