erreur / système message lu, non lu

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : erreur / système message lu, non lu

Re: erreur / système message lu, non lu

par reverb » 23 août 2013, 14:12

Bonjour à vous désolé d'avoir un peu tardé à répondre, mais j'ai effectué un break de quelque jours ^^'.

J'ai changé l'emplacement de ma phrase de code permettant la comptabilisation d'un topic lu ou non lu, ceci semble avoir débloqué le problème d'accès au topic, mais ^^'

lorsque je suis sur l'index du forum ( forum.php ) et que je souhaite utiliser l'option sous forme de bouton "accèder au dernier message posté" je tombe sur un message similaire au précédent :
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'tv_forum_id' cannot be null' in /home/crobar/public_html/affichertopic.php:51 Stack trace: #0 /home/crobar/public_html/affichertopic.php(51): PDOStatement->execute() #1 {main} thrown in /home/crobar/public_html/affichertopic.php on line 51
ma ligne 51 correspondant a la requête suivante :
$query=$bdd->prepare('INSERT INTO forum_topic_view (tv_id, tv_topic_id, tv_forum_id, tv_post_id) VALUES (:id, :topic, :forum, :last_post)');
    $query->bindValue(':id',$id,PDO::PARAM_INT);
    $query->bindValue(':topic',$topic,PDO::PARAM_INT);
    $query->bindValue(':forum',$forum,PDO::PARAM_INT);
    $query->bindValue(':last_post',$data['topic_last_post'],PDO::PARAM_INT);
    $query->execute();
    $query->CloseCursor();
$forum semble bien définit un peu plus haut dans mon code par : $forum = $data['forum_id'];

j'ai effectué juste au dessus de cette définition un var_dump($data) ce qui m'affiche bool(false) :/

Re: erreur / système message lu, non lu

par moogli » 12 août 2013, 17:32

Salut,


A priori la variable $data ou l'index $data['topic_last_post'] n'existe pas du coup tu essais d'insérer null dans une colonne not null donc erreur.

De plus tu devrais ajouter un try / catch pour gérer correctement les erreurs et leurs traitements.


@+

Re: erreur / système message lu, non lu

par Spols » 12 août 2013, 17:28

Le message te dit que la colonne 'tv_post' ne peut pas être nulle, le problème vient donc probablement de la déclaration de variable $data['topic_last_post']

Il faut vérifier qu'elle est bien instancié et d'une valeurs non nulle. Si besoin lui donner une valeur par défaut

erreur / système message lu, non lu

par reverb » 12 août 2013, 15:38

Bonjour à tous est à toutes,
Je suis actuellement sur la création d'un forum, et j'effectue un système permettant d'indiquer si un post à été lu ou pas encore.

Voici mes requêtes permettant d'afficher l'option en ligne :
//Topic déjà consulté ?
$query=$bdd->prepare('SELECT COUNT(*) FROM forum_topic_view WHERE tv_topic_id = :topic AND tv_id = :id');
$query->bindValue(':topic',$topic,PDO::PARAM_INT);
$query->bindValue(':id',$id,PDO::PARAM_INT);
$query->execute();
$nbr_vu=$query->fetchColumn();
$query->CloseCursor();
if ($nbr_vu == 0) //Si c'est la première fois on insère une ligne entière
{
    $query=$bdd->prepare('INSERT INTO forum_topic_view (tv_id, tv_topic_id, tv_forum_id, tv_post_id) VALUES (:id, :topic, :forum, :last_post)');
    $query->bindValue(':id',$id,PDO::PARAM_INT);
    $query->bindValue(':topic',$topic,PDO::PARAM_INT);
    $query->bindValue(':forum',$forum,PDO::PARAM_INT);
    $query->bindValue(':last_post',$data['topic_last_post'],PDO::PARAM_INT);
    $query->execute();
    $query->CloseCursor();
       
}
else //Sinon, on met simplement à jour
{
    $query=$bdd->prepare('UPDATE forum_topic_view SET tv_post_id = :last_post WHERE tv_topic_id = :topic AND tv_id = :id');
    $query->bindValue(':last_post',$data['topic_last_post'],PDO::PARAM_INT);
    $query->bindValue(':topic',$topic,PDO::PARAM_INT);
    $query->bindValue(':id',$id,PDO::PARAM_INT);
    $query->execute();
    $query->CloseCursor();
}
et lorsque j'essaye de recharger ma page pour voir si tout se passe bien une erreur survient :
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'tv_post_id' cannot be null' in /home/crobar/public_html/affichertopic.php:198 Stack trace: #0 /home/crobar/public_html/affichertopic.php(198): PDOStatement->execute() #1 {main} thrown in /home/crobar/public_html/affichertopic.php on line 198
ma ligne 198 correspondant à 197 - $query->bindValue(':last_post',$data['topic_last_post'],PDO::PARAM_INT);
198 - $query->execute();

Merci pour votre attention et votre aide.