Twig + Php

Avatar du membre
Mammouth du PHP | 1609 Messages

21 mai 2019, 14:49

Et bien normalement t'es à peu près bon la logiquement. Juste à noter que True et False sont des chaines dans $_POST['Etat'] pas des booléen, le formulaire ne peut pas retourner un booléen.
Et donc tu devrais tester {%if form.Etat == 'True' %} à moins que twig transforme automatiquement la chaine True en booléen true ce dont je doute quand même.
L'affichage ou non des notices peut être géré avec la fonction error_reporting. Mais à mon sens un code bien écrit ne doit pas générer de notice.

Pour le test de form.Etat dans le template base, je ne suis pas sur que les variables fournies au template du formulaire soient également disponibles dans le template base. Je suppose que tu fais un extends de base.html.twig, un truc dans le genre ? de plus quand tu vas soumettre ton formulaire tu auras bien défini form.Etat mais dans les requêtes suivantes, cette valeur ne va pas se transporter automatiquement...

EDIT : ton code est difficilement lisible même comme ça. Il est important de faire des indentations propres, d'espacer le code comme il faut pour qu'il soit lisible. D'autant plus quand on débute.
A chaque fois que tu ouvres un if ou un for tu ajoutes une tabulation supplémentaire que tu enlèves après fermeture du if ou du for. Pareil avec les fonctions.

Et le var_dump ne t'es plus utile, c'était juste pour voir le contenu de $_POST.
<?php

function actionTousLivres($twig, $db)
{
  $form = array();
  $Catalogue = new Catalogue($db);

  if (isset($_POST['Etat'])) {
    $Etat = $_POST['Etat'];
    $form['Etat'] = $Etat;
  }


  if (isset($_POST['btAjouter'])) {
    $titre = $_POST['titre'];
    $resume = $_POST['resume'];
    $auteur = $_POST['auteur'];
    $gerne = $_POST['gerne'];
    $prix = $_POST['prix'];
    $quantite = $_POST['quantite'];

    //#Debut upload photo
    $photo = null;

    if (isset($_FILES['photo'])) { //Cette ligne teste si la variable fichier qui se nomme « photo » existe en mémoire.
      if (!empty($_FILES['photo']['name'])) { //Est-ce qu'une photo a été envoyée ?
        $extensions_ok = array('png', 'gif', 'jpg', 'jpeg', 'jfif'); //Cette ligne indique les extensions des fichiers que nous autoriserons. Nous les mettons dans un tableau .

        $taille_max = 500000;
        $dest_dossier = '/data/si62019/hattencourt/web/images/couverture/'; //Chemin du répertoire où seront stockées les images. Il faudra donner des droits au répertoire qui accueillera vos images.
        if (!in_array(substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok)) { //La ligne regarde si dans le nom de la photo, nous avons bien une extension autorisée.
          echo 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
        } else {
          if (file_exists($_FILES['photo']['tmp_name']) && (filesize($_FILES['photo']
            ['tmp_name'])) > $taille_max) {
            echo 'Votre fichier doit faire moins de 500Ko !';
          } else {
            $photo = basename($_FILES['photo']['name']); //Cette ligne récupère uniquement le nom du fichier
            // enlever les accents

            $photo = strtr($photo, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
            // remplacer les caractères autres que lettres, chiffres et point par _
            $photo = preg_replace('/([^.a-z0-9]+)/i', '_', $photo);
            // copie du fichier
            move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier.$photo);
          }
        }
      }
    }

    $Catalogue = new Catalogue($db);
    $exec = $Catalogue->insert($titre, $resume, $auteur, $prix, $quantite, $gerne, $photo);
    $form['titre'] = $titre;
  }//Fin

  //Debut pagination
  $limite = 10;
  if (!isset($_GET['nopage'])) {
    $inf = 0;
    $nopage = 0;
  } else {
    $nopage = $_GET['nopage'];
    $inf = $nopage * $limite;
  }

  $r = $Catalogue->selectCount();
  $nb = $r['nb'];


  $listecatalogue = $Catalogue->selectLimit($inf, $limite);
  $form['nbpages'] = ceil($nb / $limite);
  //Fin

  //Supprimer un livre [version choix multiple]
  if (isset($_POST['btSupprimer'])) {
    $cocher = $_POST['cocher'];
    $form['valide'] = true;
    foreach ($cocher as $idlivre) {
      $exec = $Catalogue->delete($idlivre);
      if (!$exec) {
        $form['valide'] = false;
        $form['message'] = 'Problème de suppression dans la table produit';
      }
    }
  }
  //Fin

  echo $twig->render('tousleslivres.html.twig', array('form' => $form, 'listecatalogue' => $listecatalogue));
}
Développeur web depuis + de 20 ans