IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

C:.php:93: array (size=0) empty Erreurs: SQLSTATE[23000]: violation: 1048 Le champ 'nom' ne peut �tre vide


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2011
    Messages : 63
    Par défaut C:.php:93: array (size=0) empty Erreurs: SQLSTATE[23000]: violation: 1048 Le champ 'nom' ne peut �tre vide
    Bonsoir,
    Je rencontre un problème avec mon formulaire dont voici le code et dont var_dump me dit que le champ "nom" ne peut être vide!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <div id = "inscription" align="center">
      <form action = "" method = "post">
        <fieldset><h2>Inscription</h2></fieldset>
        <p><label for = "nom">Votre nom :</label> 			
          <input name = "nom" type = "text" id = "nom" " required pattern=^[A-Za-z '-']+$" maxlenght="30"></p> 
     
        <p><label for = "prenom">Votre prénom :</label> 		
          <input type = "text" name = "prenom" id = "prenom" required pattern="^[A-Za-z'-]+$" maxlenght="30"></p>  
     
        <p><label for = "pseudo">Votre Pseudo : </label>
        <input type = "text" name = "pseudo" id = "pseudo" required pattern="^[A-Za-z'-]+$" maxlenght="30">
        <span style="color: #000000"></span></p>
     
        <p><label for = "passe">Votre mot de passe : </label>
        <input type = "password" name = "passe" id = "passe" required pattern="^[A-Za-z0-9]+$" maxlenght="20"> </p>
     
        <p><label for = "passe2">Confirmez votre mot de passe : </label>
        <input type = "password" name = "passe2" id = "passe2" required pattern="^[A-Za-z0-9]+$" maxlenght="20"></p>
     
        <p><label for = "email">Votre e-mail : </label><input type = "text" name = "email" id = "email" /></p>   
        <p><input type = "submit" value = "Envoyer" id = "valider" required pattern="^[A-ZA-z]+@{1}[A-Za-z]{2,}$"></p>
      </form>
    ensuite le code php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    <?php
        error_reporting(E_ALL);
        function valid_donnees($donnees){
        $nom=valid_donnees($_POST["nom"]);
        $prenom=valid_donnees($_POST["prenom"]);
        $pseudo=valid_donnees($_POST["pseudo"]);
        $passe=valid_donnees($_POST["passe"]);
        $passe2=valid_donnees($_POST["passe2"]);
        $email=valid_donnees($_POST["email"]);
        $donnes=trim($donnees);
            $donnees=stripslashes($donnees);
            $donnees=htlmspecialchars($donnees);
            return($donnees);}
     
    // si les champs sont bien rempli et si les champs ont bien la forme voulues
     
        if(!empty($nom)
           && strlen($nom) <=30
           && preg_match("^[A-Za-z '-]+,$nom")
           && !empty($prenom)
           && strlen($prenom)<=30
           && preg_match("^[A-Za-z '-]+,$prenom")
           && !empty($pseudo)
           && strlen($pseudo)<=30
           && preg_match("^[A-Za-z '-]+,$pseudo")
           && !empty($passe)
           && strlen($passe)<=20
           && !empty($passe2) 
           && strlen($passe2)<=20
           && !empty($email)
           && strlen($email)<=30
           && filter_var($email, FILTER_VALIDATE_EMAIL))
         // je vérifie si les 2 mots de passes sont identiques
        if($passe === $passe2)
        {
            // Je vais crypter le mot de passe.
            $passe = password_hash($passe,PASSWORD_ARGON2ID);
        }
        else
        {
        echo('Vos mots de passe ne sont pas identiques,veuillez recommencer');
        }
         try
         {
               // D'abord, je me connecte à la base de données.
     
         $bdd = new PDO('mysql:host=localhost;dbname=mzfs_albert','root','');
         $bdd->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
         $bdd->beginTransaction();    
          var_dump($_POST);   
         //on insère les données reçues
         $sth=$bdd->prepare("INSERT INTO validation(nom,prenom,pseudo,passe,email) VALUES(:nom, :prenom, :pseudo, :passe, :email)");
            $sth->bindParam(':nom',$nom);
             $sth->bindParam(':prenom',$prenom);
             $sth->bindParam(':pseudo',$pseudo);
             $sth->bindParam(':passe',$passe);
             $sth->bindParam(':email',$email);
             $sth->execute();
     
         $bdd->commit();
         }
     
            catch(PDOException $e)
            {
                echo('Erreurs: '.$e->getMessage());
            }
     
    ?>
    A moins que cela ne soit dans ma base de donnée?

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 505
    Par défaut
    Bonjour,
    L'erreur est bien lié à votre base de données.
    L'attribut 'nom' de votre table est not null.

    Mais en allant plus loin, votre vérification se base sur le fait que le input nom soit non-vide (!empty($nom)).
    Mais si c'est input est effectivement vide, alors aucune vérification n'est faites et l'insertion en base de données est réalisé, avec l'erreur que vous connaissez maintenant.

    Donc ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else
    {
    echo('Vos mots de passe ne sont pas identiques,veuillez recommencer');
    }
    N’empêche pas le script de continuer et du coup d'essayer d'insérer en db, vous devez revoir votre logique.

Discussions similaires

  1. Réponses: 14
    Dernier message: 04/02/2019, 08h19
  2. [1.x] supprimer une association many to many : erreur SQLSTATE[23000]
    Par flora806 dans le forum Symfony
    Réponses: 1
    Dernier message: 25/06/2012, 11h40
  3. Réponses: 3
    Dernier message: 04/03/2011, 09h30
  4. [PHP-JS] Affichage de message d'erreur
    Par lodan dans le forum Langage
    Réponses: 7
    Dernier message: 20/07/2006, 18h50
  5. [SGBD] [php/mySql] Récuperation numéro de l'erreur
    Par fab22montpellier dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 14/09/2005, 11h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo