我初始化了我的$_SESSION
var但是当我在没有提交表单的情况下启动索引时出现这些错误:
if(!empty($_POST)){
$_SESSION['idZone'] = 0;
$_SESSION['idSalle'] = 0;
$_SESSION['idUtilisateur'] = 0;
$_SESSION['dateDebut'] = 0 ;
$_SESSION['dateFin'] = 0;
}
?>
这是我的完整代码:
<?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 />');
?>
我认为我的初始化不好,但我不知道为什么。如果有人可以帮助我:)。
答案 0 :(得分:3)
使用会话的一种最佳方式是 在任何其他代码之前,会话应始终首先在文件中开始。 像这样
<?php
session_start() ;
include('fonctionsBDD.php');
$bdd = connectionBDD();
.....
答案 1 :(得分:1)
您希望在未发布值时进行初始化,对吗?
所以,摆脱!
if(empty($_POST)){
$_SESSION['idZone'] = 0;
$_SESSION['idSalle'] = 0;
$_SESSION['idUtilisateur'] = 0;
$_SESSION['dateDebut'] = 0 ;
$_SESSION['dateFin'] = 0;
}
?>
答案 2 :(得分:1)
这部分代码依赖于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 />');
?>
您需要使用if
,因为您可能会在页面顶部指定:
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 />');
并删除底部的所有内容:
$_SESSION['idZone'] = $_POST['zone'];
$_SESSION['idSalle'] = $_POST['salle'];
$_SESSION['idUtilisateur'] = $_POST['utilisateur'];
$_SESSION['dateDebut'] = $_POST["from"];
$_SESSION['dateFin'] = $_POST["to"];