Problème avec 'if'

Bonjour à toutes et à tous,
je code actuellement un site en php et j'ai un problème lors de l'affiche de celui-ci dans mon /localhost de mon myphpadmin.
ça m'affiche cette erreur
donc voilà je ne sais pas comment le résoudre.

3 réponses

  1. Modérateur
    Bonjour,

    Ici, on poste son code directement ( en utilisant les balises de code) au lieu de mettre une image qui ne nous permet pas de copier/coller

    Pour les balises de code, merci de lire ENTIEREMENT ceci : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

    Et je vois déjà une erreur à la première ligne... tu as oublié de mettre un && entre tes deux conditions dans ton if.

    0
    1. 	if(isset($_POST['article_titre'])) (isset($_POST['article_contenu'])){
      if(!empty($_POST["article_titre"]) AND !empty ($_POST['article_contenu')) {
      $article_titre = htmlspecialchars($_POST['article_titre']);
      $article_contenu = htmlspecialchars($_POST['article_contenu']);

      $ins = $bdd->prepare('INSERT INTO articles (titre, contenu, date_time_publication)
      VALUES (?,?,NOW())');
      $ins->execute(array($article_titre, $article_contenu));

      $message = 'Votre article a bien était posté';

      } else {
      $message = 'Veuillez remplir tout les champs';
      }
      }

      ?>


      voilà pour le code.
      0
      1. Modérateur
        Alors
        Non seulement tu n'as pas lu ENTIEREMENT le lien que je t'ai donné.... vu que tu n'y a pas précisé le LANGAGE afin d'avoir la coloration syntaxique
        Mais en plus.. tu n'as pas lu la "solution" que je t'ai donné pour corrigé ton souci.
        0
      2. Modérateur
        @jordane45Je rappel également que !EMPTY fais déjà un ISSET ...
        Tu n'as donc pas besoin de ton premier IF
        0
      3. @jordane45Excuse moi j'ai voulu aller trop vite. Et si j'ai bien lu mais j'ai voulu t'envoyer le code avec l'erreur pour que tu puisses bien le voir.
        0
      4. @jordane45Tu parles du if avant le ISSET ou celui avant le EMPTY ?
        0
    2. Modérateur
      Bon...

      cette ligne
      if(isset($_POST['article_titre'])) (isset($_POST['article_contenu'])){
      

      Est Fausse et inutile

      Ensuite..
      Plusieurs choses dans ton code :
      - htmlspecialchars ne s'utilise JAMAIS pour traiter le contenu des variables à insérer en BDD
      ça ne doit servir que pour de l'affichage

      - Il faut activer la gestion des erreurs PDO dans la connexion et placer CHAQUE requête dans des blocs Try/CATCH
      https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

      -Et un peu de lecture en plus :
      https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

      Ce qui donne :

      <?php
      //affichage des erreurs Php
      error_reporting(E_ALL);
      ini_set('display_errors', TRUE);
      ini_set('display_startup_errors', TRUE);
      
      // connexion à la bdd
      // je te laisse compléter ici...
      
      
      // récupération PROPRE des variables AVANT de les utiliser
      //utilisation de l'écriture TERNAIRE pour initialiser tes variables correctement
      $article_titre = !empty($_POST['article_titre']) ? $_POST['article_titre'] : null;
      $article_contenu = !empty($_POST['article_contenu']) ? $_POST['article_contenu'] : null;
      
      if($article_titre && $article_contenu ){
        $sql = 'INSERT INTO articles 
                (titre, contenu, date_time_publication)
                VALUES (?,?,NOW())';
        $datas = array($article_titre, $article_contenu);
        //Try/CATCH permet d'intercepter les éventuelles erreurs SQL
        try{
          $ins = $bdd->prepare($sql);
          $ins->execute($datas);
        
          $message = 'Votre article a bien était posté';
        }catch(Exception $e){
          $message = 'Erreur dans la requête SQL';
        }
      }
      
      ?>
      
      0