1

I initialize my $_SESSION var but I have these errors when I launch the index without submit the form:

if(!empty($_POST)){
    $_SESSION['idZone'] = 0;
    $_SESSION['idSalle'] = 0;
    $_SESSION['idUtilisateur'] = 0;
    $_SESSION['dateDebut'] = 0 ;
    $_SESSION['dateFin'] = 0;
}
?>

Screenshot of Errors

This is my full code :

<?php 
include('fonctionsBDD.php');
$bdd = connectionBDD(); 

session_start();

if(!empty($_POST)){
    $_SESSION['idZone'] = 0;
    $_SESSION['idSalle'] = 0;
    $_SESSION['idUtilisateur'] = 0;
    $_SESSION['dateDebut'] = 0 ;
    $_SESSION['dateFin'] = 0;
}
?>

<!-- Choix des filtres à afficher -->
<p>Quels filtres afficher ?</p>
<form action="" method="POST">
    <input type="checkbox" name="cbx-zones">Zones</input> 
    <input type="checkbox" mname="cbx-salles">Salles</input>
    <input type="checkbox" name="cbx-dates">Date</input> 
    <input type="checkbox" name="cbx-heures">Heures</input> 
    <p><input type="submit" /></p>
</form>

<!-- Zone filtres -->
<div class="FiltreSalle">
    <form action="" method="POST">
    <?php 
    if (isset($_POST['cbx-zones'])) {
        /* COntenu d'un filtre ici */
    }
    ?>
<!-- Filtre par Area Name-->
    <form action="" method="POST">
        <br /><br />
        <label>Choisir la zone </label><br />
        <select name="zone">
            <?php echo "<option unselected>- - - Choisissez  une zone - - - </option>\n";
    $reponseSalle = $bdd->query('SELECT * FROM mrbs_area ORDER BY area_name');

        while ($donnees = $reponseSalle->fetch(PDO::FETCH_OBJ)) {
        ?>
            <option value="<?php echo $donnees->id; ?>"> <?php echo $donnees->area_name; ?></option>
        <?php
        }
        ?>
        </select>

        <!-- Filtre par salle -->
        <br /><br />

        <label>Choisir la salle</label><br />
        <select name="salle"> 
            <?php echo "<option unselected>- - - Choisissez  une salle - - - </option>\n";
        $reponseSalle = $bdd->query('SELECT * FROM mrbs_room ORDER BY room_name');

        while ($donnees = $reponseSalle->fetch(PDO::FETCH_OBJ)) {
        ?>
            <option value="<?php echo $donnees->id; ?>"> <?php echo $donnees->room_name; ?></option>
        <?php
        } 
        ?>
        </select>

        <!-- Filtre par utilisateurs-->
        <br /><br />
        <label>Choisir l'utilisateur</label><br />
        <select name="utilisateur">
            <?php echo "<option unselected>- - - Choisissez  un utilisateur - - - </option>\n";
        $reponseSalle = $bdd->query('SELECT * FROM mrbs_users ORDER BY name');

        while ($donnees = $reponseSalle->fetch(PDO::FETCH_OBJ)) {
        ?>
            <option value="<?php echo $donnees->id; ?>"> <?php echo $donnees->name; ?></option>
        <?php
        }
        ?>
        </select>

        <!-- Filtres par DatePicker -->
        <br /> <br />
<script>
$(function() {
    $("#from").datepicker({
        defaultDate: "+1d",
        changeMonth: true,
        numberOfMonths: 1,
        dateFormat : '@',
        onClose: function( selectedDate ) {
            $( "#to" ).datepicker( "option", "minDate", selectedDate );
        }
    });
    $("#to").datepicker({
        defaultDate: "+1w",
        changeMonth: true,
        numberOfMonths: 1,
        dateFormat : '@',
        onClose: function( selectedDate ) {
            $( "#from" ).datepicker( "option", "maxDate", selectedDate );
            var currentDate = $( ".selector" ).datepicker( "getDate" );
        }
    });
});
</script>
        <label for="from">Du</label>
        <input type="text" id="from" name="from">
        <label for="to">Au</label>
        <input type="text" id="to" name="to">
        <input type='submit' value='Submit'><br /><br />
    </form>
    <!-- Traitement des données -->
<?php
$_SESSION['idZone'] = $_POST['zone'];
$_SESSION['idSalle'] = $_POST['salle'];
$_SESSION['idUtilisateur'] = $_POST['utilisateur'];
$_SESSION['dateDebut'] = $_POST["from"];
$_SESSION['dateFin'] = $_POST["to"];

echo('La zone séléctionnée est :' . $_SESSION['idZone']  . '<br />');
echo('La salle séléctionnée est :' . $_SESSION['idSalle']  . '<br />');
echo('L utilisateur séléctionné est :' . $_SESSION['idUtilisateur']  . '<br />');
echo('La date de début séléctionnée est :' . $_SESSION['dateDebut']  . '<br />');
echo('La date de fin séléctionnée est :' . $_SESSION['dateFin'] . '<br />');      
?>

I think my initialization ins't good but I do not know why. If anyone can help me :)

Rasclatt
  • 12,498
  • 3
  • 25
  • 33
Vincent DUPONT
  • 71
  • 1
  • 1
  • 10

3 Answers3

3

One best way of using sessions is The session should always start first in the file before any other code. like this

<?php
session_start() ;

include('fonctionsBDD.php');
$bdd = connectionBDD(); 
.....
rgk
  • 800
  • 1
  • 11
  • 32
1

You want to initialize when the values are NOT posted, right?

so, get rid of the !

if(empty($_POST)){
      $_SESSION['idZone'] = 0;
      $_SESSION['idSalle'] = 0;
      $_SESSION['idUtilisateur'] = 0;
      $_SESSION['dateDebut'] = 0 ;
      $_SESSION['dateFin'] = 0;
  }
  ?>
BizzyBob
  • 12,309
  • 4
  • 27
  • 51
1

This part of your code relies on a POST (at the bottom of your script), and you are not checking for post:

<?php
$_SESSION['idZone'] = $_POST['zone'];
$_SESSION['idSalle'] = $_POST['salle'];
$_SESSION['idUtilisateur'] = $_POST['utilisateur'];
$_SESSION['dateDebut'] = $_POST["from"];
$_SESSION['dateFin'] = $_POST["to"];


echo('La zone séléctionnée est :' . $_SESSION['idZone']  . '<br />');
echo('La salle séléctionnée est :' . $_SESSION['idSalle']  . '<br />');
echo('L utilisateur séléctionné est :' . $_SESSION['idUtilisateur']  . '<br />');
echo('La date de début séléctionnée est :' . $_SESSION['dateDebut']  . '<br />');
echo('La date de fin séléctionnée est :' . $_SESSION['dateFin'] . '<br />');      
?>

You will want to use if since you will have possibly assigned at the top of your page:

if(isset($_SESSION['idZone']))
    echo 'La zone séléctionnée est :'.$_SESSION['idZone'].'<br />';

if(isset($_SESSION['idSalle']))
    echo 'La salle séléctionnée est :'.$_SESSION['idSalle'].'<br />';

if(isset($_SESSION['idUtilisateur']))
    echo 'L utilisateur séléctionné est :'.$_SESSION['idUtilisateur'].'<br />');

if(isset($_SESSION['dateDebut']))
    echo 'La date de début séléctionnée est :'.$_SESSION['dateDebut'].'<br />');

if(isset($_SESSION['dateFin']))
    echo 'La date de fin séléctionnée est :'.$_SESSION['dateFin'].'<br />');

And remove all this at the bottom:

$_SESSION['idZone'] = $_POST['zone'];
$_SESSION['idSalle'] = $_POST['salle'];
$_SESSION['idUtilisateur'] = $_POST['utilisateur'];
$_SESSION['dateDebut'] = $_POST["from"];
$_SESSION['dateFin'] = $_POST["to"];
Rasclatt
  • 12,498
  • 3
  • 25
  • 33