SQLSTATE[23000]: Integrity constraint violation: 1048

Résolu/Fermé
malo91 Messages postés 53 Date d'inscription mardi 2 février 2021 Statut Membre Dernière intervention 3 août 2022 - 14 févr. 2021 à 08:21
jordane45 Messages postés 38208 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 juin 2024 - 14 févr. 2021 à 19:15
Bonjour bonjour!! Oui j'ai vu d'autres sujets avec le meme titre mais helas soit j'ai pas compris soit ca ne m'a pas permis de faire sans devoir poser ma question.

Ce message me dit que mon champ "content" ne doit pas etre vide ! bon ok oui dans ma table j'ai NOT NULL. Je tiens à preciser que mon formulaire fonctionnait avant !! dans l etat ou presque donc!

mon formulaire:
<div class="card " id=form_comment>
  <div class="text-center">
    <h4>Ecrire un commentaire:</h4><br></div>
    <form action= "/blog/<?php echo e($post->getSlug()); ?>-<?php echo e($post->getId()); ?>/comments"
    onsubmit="alert('Merci pour votre commentaire, il va être validé')" method="POST">
  <div>
    <label for="name">Auteur:</label>
    <input type="text" id="author" name="author" required>
  </div>

  <div>
    <label for="msg"> Votre message : </label>
    <textarea id="msg" name="content" required></textarea>
  </div>
  <div class="d-flex justify-content-center mt-2 ">
    <input type="submit" class="btn btn-secondary " value="Envoyer"><br>
  </form>
</div>


mon fichier CommentValidator ( 2eme et 3 eme arguments sont maintenant grisés!CommentTable $table, ?int $postID = null)
namespace App\Validators;

use App\Table\CommentTable;

class CommentValidator extends AbstractValidator : 
{
    public function __construct(array $data, CommentTable $table, ?int $postID = null)
    {
        parent::__construct($data);
        $this->validator->rule('required', ['author', 'content']);
    }
}


j'ai une function:
  public function hydrateComments(array $comments)
    {
        foreach ($comments as $comment) {
            $comment->setComment([]);
        }
        $comments = $this->pdo
      ->query('SELECT content, post_id FROM comment WHERE post_id = ' . $comment->getPostId())
      ->fetchAll(PDO::FETCH_CLASS, $this->class);
    }


lorsque j'envoie mon formulaire remplis avec les 2 champs required :
j'ai bien avec mon var_dump:
^ array:2 [▼
  "author" => "malo"
  "content" => "test  essai"
]


donc rempli!
et si je fait un var dump de $comment :
^ App\Model\Comment {#12 ▼
  -id: null
  -content: null
  -created_at: "2021-02-14 07:18:25"
  -author: null
  -post_id: null
  -is_valid: null
  -is_no_valid: null
}

champs correspondant à ma function de mon fichier CommentTable pour creer mon comment:

 public function createComment(Comment $comment): void
    {
        $id = $this->create([
      'content' => $comment->getContent(),
      'created_at' => $comment->getCreatedAt()->format('Y-m-d H:i:s'),
      'author' => $comment->getAuthor(),
      'post_id' => $comment->getPostId()
    ]);
        $comment->setID($id);
    }


bon voilà j'ai tenté de faire au mieux pour vous exposer mon souci!! merci pour l'aide

bon dimanche
A voir également:

4 réponses

jordane45 Messages postés 38208 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 juin 2024 4 678
14 févr. 2021 à 09:10
Bonjour,

Déjà, tu travailles avec un framework. ... il aurait été bien d'indiquer lequel...

Ensuite, tu utilises dans ton fonction createComment
A quel moment fais tu appel à cette fonction ?
Qu'est-ce que tu lui passes comme paramètre ?
Tu sembles nous avoir montré uniquement du contenu venant de tes fichiers models... mais pas ton controller ...

PS: Lorsque tu postes du code, essaye au moins d'indiquer pour chaque morceau, le nom du fichier correspondant... car là ... c'est dur de s'y retrouver...
Ou sinon, tu postes le code du fichier complet ... et pas juste des petits morceaux...
Typiquement, là, on ne sait pas comment est organisé ton code... ce que vient faire là la fonction hydrateComments qui ne semble pas lié à la création de nouveau comment ...
Dans quel ordre sont appellées ces différentes fonctions ... à partir d'où .. avec quel(s) paramètre(s) ..




0