2 votes

La variable de session PHP n'est pas stockée

Mes variables de session ne sont pas enregistrées.

J'ai essayé beaucoup de choses comme var_dump , print_r et mes variables sont bien imprimées mais pas stockées.

Voici mon code :

<?php
session_start();
require "header.php";
?>

    <form action="../Views/index.php?page=createSecteur" method="post">
        <div class="form-group">
            <label for="libelle">Libelle : </label>
            <input type="text" name="libelle" class="form-control" id="libelle" required value="<?php echo isset($_SESSION['libelle']) ? $_SESSION['libelle'] : "" ?>">
        </div>
        <button type="submit" class="btn btn-default" name="insert_secteur" id="insert_secteur">Insert secteur</button>
    </form>

<?php
if (isset($_POST['insert_secteur'])) {
    $_SESSION['libelle'] = $_POST['libelle'];
}
require "footer.php";
?>

UPDATE : Mon $_POST['libelle'] m'a donné une erreur "undefined index"

0voto

Ingus Points 314

Cela fonctionne si vous supprimez l'url de l'action (si vous postez sur la même page) :

<?php
    session_start();
    require "header.php";
    ?>

        <form action="" method="post">
            <div class="form-group">
                <label for="libelle">Libelle : </label>
                <input type="text" name="libelle" class="form-control" id="libelle" required value="<?php echo isset($_SESSION['libelle']) ? $_SESSION['libelle'] : "" ?>">
            </div>
            <button type="submit" class="btn btn-default" name="insert_secteur" id="insert_secteur">Insert secteur</button>
        </form>

    <?php
    if (isset($_POST['libelle'])) {
        $_SESSION['libelle'] = $_POST['libelle'];
    }

    echo $_SESSION['libelle'];
    require "footer.php";
?>

Si vous publiez sur une autre page, l'exécution de la publication doit se faire sur l'autre page.

Mais si vous avez besoin de savoir quel formulaire a été envoyé, vous pouvez le faire : En sauvegardant l'entrée cachée avec le nom de la clé

<?php
    session_start();
    require "header.php";
    ?>

        <form action="" method="post">
            <div class="form-group">
                <label for="libelle">Libelle : </label>
                <input type="text" name="libelle" class="form-control" id="libelle" required value="<?php echo isset($_SESSION['libelle']) ? $_SESSION['libelle'] : "" ?>">
                <input type="hidden" name="source" value="createSecteur"/>
            </div>
            <button type="submit" class="btn btn-default" name="insert_secteur" id="insert_secteur">Insert secteur</button>
        </form>

    <?php
    if($_SERVER["REQUEST_METHOD"] == "POST"){
        if (empty($_POST["source"])){$source = null;}else{$source = htmlentities($_POST['source'], ENT_QUOTES, "UTF-8");}

        if($source=='createSecteur'){
            if (isset($_POST['libelle'])) {

                $_SESSION['libelle'] = $_POST['libelle'];
            }
        }
    }

    echo $_SESSION['libelle'];
    require "footer.php";
?>

0voto

Jelle Botman Points 623

Essayez de vérifier si $_POST['libelle'] existe aussi.
Essayez également de poster sur la même page en vidant la fonction action de votre formulaire.
Il s'agira automatiquement de la même page lorsqu'elle sera vide.

<?php
session_start();
require "header.php";
?>

    <form action="" method="post">
        <div class="form-group">
            <label for="libelle">Libelle : </label>
            <input type="text" name="libelle" class="form-control" id="libelle" required value="<?php echo isset($_SESSION['libelle']) ? $_SESSION['libelle'] : "" ?>">
        </div>
        <button type="submit" class="btn btn-default" name="insert_secteur" id="insert_secteur">Insert secteur</button>
    </form>

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' AND isset($_POST['insert_secteur']) AND isset($_POST['libelle'])) {
    $_SESSION['libelle'] = $_POST['libelle'];
}
require "footer.php";
?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X