PHP

Programmer une publication pour blog

Résolu

Bonjour,


Désolé d'être 'sorti' un peu du site.


J'ai un formulaire qui rentre la date de publication, elle rentre dans la base de donnés mais ça ne marche que pour le passé. Moi j'aimerais un script pour que si on dit que l'article sorte le 12 mars il sort le 12 mars

1303 vues
08 janvier 2020 à 22:25 (Édité)
Cette pub permet au site de vivre ...

16 commentaires

Tenez le code de ConnexionDB.php :


<?php
  // Déclaration d'une nouvelle classe
  class connexionDB {
    private $host    = '127.0.0.1';   // nom de l'host
    private $name    = 'didoykkq_didoub74';     // nom de la base de donnée
    private $user    = 'didoykkq_didoub74';        // utilisateur
    private $pass    = 'didoub@74';        // mot de passe
    //private $pass    = '';          // Ne rien mettre si on est sous windows
    private $connexion;
                    
    function __construct($host = null, $name = null, $user = null, $pass = null){
      if($host != null){
        $this->host = $host;           
        $this->name = $name;           
        $this->user = $user;          
        $this->pass = $pass;
      }
      try{
        $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name,
          $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8', 
          PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
      }catch (PDOException $e){
        echo 'Erreur : Impossible de se connecter  à la BDD !';
        die();
      }
    }
    
    public function query($sql, $data = array()){
      $req = $this->connexion->prepare($sql);
      $req->execute($data);
      return $req;
    }
    
    public function insert($sql, $data = array()){
      $req = $this->connexion->prepare($sql);
      $req->execute($data);
    }
  
      public function delete($sql, $data = array()){
      $req = $this->connexion->prepare($sql);
      $req->execute($data);
    }
  
  	public function update($sql, $data = array()){
      $req = $this->connexion->prepare($sql);
      $req->execute($data);
    }
  }
  
  // Faire une connexion à votre fonction
  $DB = new connexionDB();
?>

Hello @Didoub74,


Il nous faudrait également le code de connexionDB.php pour l'aide au débogage 😉

J'ai ce code :


$req = $DB->query("SELECT b.*, u.pseudo, c.titre as titre_cat
  FROM blog b
  LEFT JOIN utilisateur u ON u.id = b.id_user
  LEFT JOIN categorie c ON c.id_categorie = b.id_categorie
  WHERE b.id_categorie = 4 
  WHERE b.date_creation >= DATE(NOW())
  ORDER BY b.date_creation DESC");

$req = $req->fetchAll();


et il me fait cette erreur :


Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE b.date_creation >= DATE(NOW()) ORDER BY b.date_creation DESC' at line 6 in /home/didoykkq/public_html/bd/connexionDB.php on line 30


adresse test : https://didoub74.yo.fr/fortnite/missions

Alors, une fois que tu as positionné la date d'apparition de ton article lorsque tu es sur ton formulaire pour la création de ton article, dans la requête qui te permet d'afficher tes articles tu devras ajouter que tu afficheras uniquement les articles dont la date d'apparition est supérieure ou égale à la date du jour.


Comme ceci :


<?php
  $req = "SELECT * 
    FROM article 
    WHERE date_article >= DATE(NOW())";
  
  ...   

Non imaginons on est le 11 mars, je programme l'envoie pour le 12 mars, je voudrais que l'article de blog apparaissent le 12 mars à minuit et pas avent.


J'espère que c'est claire

Salut @Didoub74,


Si je comprends bien, tu souhaiterais mettre en place un système qui affichera automatiquement ton article avec un envoi de mail pour prévenir tes utilisateurs ?

Cette pub permet au site de vivre ...
1
2