Bonjour,

Voila je rencontre un petit problème avec mon code.

Dans cette vue, j'importe 3 pages à l'aide des include() : (categories.php, familles.php, unites.php)
Lorsque je valide la saisie d'une entrée dans n'importe quelle table, elle se fait bien ... mais ... ça valide également une saisie "vide" dans les 2 autres tables.
Je ne comprends pas.

Voici le code d'une page, les 2 autres ont le même modèle :

<?php
//Pour débogage
//echo '<pre>' . print_r($_POST, true) . '</pre>'; die();

// Connexion à la table
$categorieTable = App::getInstance()->getTable('Categorie');
if (!empty($_POST)) {
  // Insertion des données saisies
  $result = $categorieTable->create([
    'categories' => $_POST['categories']
  ]);

  if ($result) {
    // Redirection et/ou Message
    header('Location: index.php?p=params');
  }
}
// Chargement des paramètres du formulaire
$form = new \Core\HTML\BootstrapForm($_POST);
?>

  <div class="col-md-4">
        <div class="box box-danger">
              <div class="box-header">
                <h4 class="box-title">Liste des catégories</h4>
              </div>
              <!-- /.box-header -->
              <div class="box-body">
                <table id="categories-table" class="table table-bordered table-striped" width="100%">
                  <tbody>
                  <?php foreach (App::getInstance()->getTable('Categorie')->all() as $categorie): ?>
                    <tr>
                      <td><?= $categorie->categories; ?></td>
                      <td width="10%">
                        <form action="index.php?p=categorie.delete" method="post">
                          <input type="hidden" name="id" value="<?= $categorie->id ?>">
                          <button type="submit" class="btn btn-xs btn-default"><span class="glyphicon glyphicon-trash"></span></button>
                        </form>
                      </td>
                    </tr>
                  <?php endforeach; ?>
                  </tbody>
                </table>
                <form action="index.php?p=params" method="post">
                    <?= $form->input('categories', 'Nouvelle catégorie'); ?>
                    <button type="submit" class="btn btn-block btn-default submit" style="font-size:22px;"><span class="glyphicon glyphicon-ok-sign"></span></button>
                </form>
              </div>
              <!-- /.box-body -->
        </div>
        <!-- /.box -->
      </div>

Pour information, lorsque je décommente le print_r pour les tests, la validation me retourne bien qu'une seule saisie.

Merci pour votre analyse et votre aide.

2 réponses


keulu
Réponse acceptée

essaye de mieux vérifier ce que tu envoie.

if (!empty($_POST) && isset($_POST['categories'])) {
  // Insertion des données saisies
  $result = $categorieTable->create([
    'categories' => $_POST['categories']
  ]);

le probleme, c'est que t'envoi tout sur index.php, et qu'est ce qu'il fait index.php ? ben si j'ai un truc dans $_POST, c'est que j'ai forcement une catégorie, une famille et des unitées... alors que c'est faux.

Zulkar
Auteur

Bonsoir,
Je te remercie pour ta contribution et pour la solution.
J'ai donc adapté le 'isset....' sur mes 3 pages et cela fonctionne très bien.

Un grand MERCI !!!