[RESOLU] Count $errors ne s'affiche pas

Eléphanteau du PHP | 16 Messages

12 août 2015, 11:04

Bonsoir,
Je rencontre un léger problème sur un de mes script. Pour la vérification de si X input sont vide ou non je place donc cela

Code : Tout sélectionner

if (empty($email)) { $erroors[] = " Vous devez specifier un Email."; }
Avec bien sûr

Code : Tout sélectionner

$errors = array();
De définis au début du code.

Code : Tout sélectionner

if(count($errors) == 0){ *Contenus ici }
Ne fonctionne pas, rien ne s'affiche, si je remplace mes $errors[] = par des echo, cela m'affiche les erreur mais applique le script et me retourne des valeur vide^^

Merci :)
Apprenti PHP/VB.NET

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

12 août 2015, 11:20

Bonjour,

Vérifie le nombre de "o" à errors ;-)
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 571 Messages

12 août 2015, 12:22

Ne fonctionne pas, rien ne s'affiche, si je remplace mes $errors[] = par des echo, cela m'affiche les erreur mais applique le script et me retourne des valeur vide^^
tu n'entres probablement pas dans le if car les expressions évaluées dans le if te retournent toujours false.

Dans tous les cas on ne voit pas de variable globale $_POST dans tes évaluations, on s'attend à quelque chose du genre:
if (empty($_POST['email'])) {
      $erroors[] = " Vous devez specifier un Email.";
   }
D'où l’intérêt de poster tout ton code y compris le formulaire.

Eléphanteau du PHP | 16 Messages

12 août 2015, 12:37

@rthur, oui je me suis trompé en postant ici, mais elles sont correctes sinon^^
Oui je vois yann18
Mon code est le suivant

Code : Tout sélectionner

<?php // Connexion à un moteur SQL Serveur require_once('db_config.php'); // On définis les variables $psn = isset($_POST['PSN']) ? trim($_POST['PSN']) : ''; $email = isset($_POST['Email']) ? trim($_POST['Email']) : ''; $message = isset($_POST['Message']) ? trim($_POST['Message']) : ''; $errors = array(); $success = false; if(isset($_POST) && !empty($_POST)){ require_once('db.php'); // Le champ ne doit pas être vide if (empty($_POST['PSN'])) { $errors[] = " Vous devez specifier un PSN."; } if (empty($_POST['Email'])) { $errors[] = " Vous devez specifier un Email."; } if (empty($_POST['Message'])) { $errors[] = " Vous devez specifier un Message."; } // On ajoute dans la bdd le contenu if(count($errors) == 0){ $post = "INSERT INTO PS_DATABASE.dbo.Recrutement (PSN,Email,Message) values ('$psn','$email','$message')"; $p = odbc_prepare($GLOBALS['dbConn'],$post); if(!odbc_execute($p)) { $errors[] = "Serveur occupé!"; } else { echo "Message envoyee! Une reponse vous sera retourne d'ici peu {$psn}"; } } } // Quelques fichiers importants pour le visuel if($success === false){ require_once('re.view.php'); } ?>
Apprenti PHP/VB.NET

Mammouth du PHP | 571 Messages

12 août 2015, 13:29

j'ai dû lire de travers ton 1er message : j'ai crû comprendre qu'en mettant echo à la place de $errors le message ne s'affichait pas or c'est l'inverse(affichage).Ton tout 1er code posté était bon tout comme ton dernier qui ne change rien au problème initial.

Le problème se situe certainement du côté de ton formulaire : à voir si les champs(name) de ton formulaire correspondent aux clés du tableau $_POST.Tout laisse à penser que les variables $_POST['PSN'], $_POST['EMAIL'] n'existent pas d'où les variables vides reçues.
tu peux poster ton formulaire

Eléphanteau du PHP | 16 Messages

12 août 2015, 13:44

Voilà le formulaire :
<!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
      </head>
      <body>
	  <form method="post" action="traitement_formulaire.php">
         <center>PSN</center>
		 </br>
				<center><input name="PSN" value="<?php if(isset($_POST['PSN'])){ echo $_POST['PSN']; } ?>" /></center>
				</br>
		<center>Email</center>
		</br>
				<center><input name="Email" value="<?php if(isset($_POST['Email'])){ echo $_POST['Email']; } ?>" /></center>
        </br>
		<center>Message</center>
		</br>
				<center><textarea name="Message" value="<?php if(isset($_POST['Message'])){ echo $_POST['Message']; } ?>" cols="60" rows="10"></textarea></center>
          <!-- Ici pourra être ajouté un captcha anti-spam (plus tard) -->
          <center><p><input type="submit" name="submit" value="Envoyer" /></p></center>
        </form>
      </body>
    </html>
Apprenti PHP/VB.NET

ynx
Mammouth du PHP | 586 Messages

12 août 2015, 14:28

Salut,

Tu n'affiche nulle part tes erreurs.
// On ajoute dans la bdd le contenu
if (count($errors) == 0) {
    // requete sql ...
} else {
    // si le tableau d'erreurs n'est pas vide, on affiche les erreurs
    echo implode('<br>', $errors);
}
Bonne journée

Eléphanteau du PHP | 16 Messages

12 août 2015, 16:31

Merci bien ynx ^^
Mon accolade pour fermer la forme if(count $errors == 0) {
} se situait en fin de code du coup rien ne s'affichait ;)
Merci à tous!
Apprenti PHP/VB.NET