2017-05-23 12 views
2

MYSQLクエリに2つのセッション変数を追加するにはどうすればよいですか?MYSQLクエリに2つのセッション変数を追加する

私は唯一の変数$stad使うので、これは、動作します:

session_start(); 
$_SESSION['stad'] = $_POST['stad']; 

//Database connectie 
$link = mysqli_connect("*", "*", "*", "entour_nl") or die("Error ". mysqli_error($link)); 

//Query // 
$query = "SELECT * FROM Fissa_test WHERE stad='".$_SESSION['stad']."' AND datum >= CURDATE() ORDER BY datum"; 

$result = mysqli_query($link, $query); 

//loop door de resultaten 
while($row = mysqli_fetch_assoc($result)){ 
?> 

<article class="fissa-item"> 
    <div class="left-side"> 
     <img src="<?php echo $row['flyer_url'];?>" href="<?php echo $row['flyer_url'];?>" height="100%" width="100%"> 
    </div> 


    <div class="right-side"> 
     <h3 class="naam-feest" style="margin-top: 1px;"><?php echo $row['naam_feest'];?></h3> 
     <h5 class="line-up"><?php echo $row['line_up'];?></h5> 
     <h4 class="info"><?php echo $row['plaats'];?> | <?php echo date("d-m-Y", strtotime($row['datum']));?> | <?php echo $row['tijd'];?> | <?php echo $row['leeftijd'];?></h4> 
     <a href="<?php echo $row['ticket_url'];?>"><button class="tickets">KOOP TICKETS</button></a> 
    </div> 

</article> 
<?php 
} 
?> 
<div class="footer"> 
    <button class="filter" onclick="openNav()">FILTER</button> 
</div> 

<div id="myNav" class="overlay"> 
    <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a> 
    <div class="overlay-content"> 
    <form action="lit_stad_leeftijd.php" method="post"> 
     <button name="leeftijd" value="14+">14+</button> 
     <button name="leeftijd" value="15+">15+</button> 
     <button name="leeftijd" value="16+">16+</button> 
     <button name="leeftijd" value="17+">17+</button> 
     <button name="leeftijd" value="18+">18+</button> 
     <button name="leeftijd" value="21+">21+</button> 
     <button name="leeftijd" value="23+">23+</button> 
     <button name="leeftijd" value="*">ALL</button> 
    </form> 
    </div> 
</div> 

しかし、私は$leeftijdが含まれています。クエリが機能しません。私が手

session_start(); 
$_SESSION['leeftijd'] = $_POST['leeftijd']; 
$_SESSION['stad']  = $_POST['stad']; 

//Database connectie 
$link = mysqli_connect("*", "*", "*", "*") or die("Error ". mysqli_error($link)); 

//Query // 
$query = "SELECT * FROM Fissa_test WHERE stad='".$_SESSION['stad']."' AND leeftijd='".$_SESSION['leeftijd']."' AND datum >= CURDATE() ORDER BY datum"; 

$result = mysqli_query($link, $query); 

//loop door de resultaten 
while($row = mysqli_fetch_assoc($result)){ 
    ?> 

    <article class="fissa-item"> 
     <div class="left-side"> 
      <img src="<?php echo $row['flyer_url'];?>" href="<?php echo $row['flyer_url'];?>" height="100%" width="100%"> 
     </div> 

     <div class="right-side"> 
      <h3 class="naam-feest" style="margin-top: 1px;"><?php echo $row['naam_feest'];?></h3> 
      <h5 class="line-up"><?php echo $row['line_up'];?></h5> 
      <h4 class="info"><?php echo $row['plaats'];?> | <?php echo date("d-m-Y", strtotime($row['datum']));?> | <?php echo $row['tijd'];?> | <?php echo $row['leeftijd'];?></h4> 
      <a href="<?php echo $row['ticket_url'];?>"><button class="tickets">KOOP TICKETS</button></a> 
     </div> 
    </article> 
    <?php 
} 
?> 
<div class="footer"> 
    <button class="filter" onclick="openNav()">FILTER</button> 
</div> 

<div id="myNav" class="overlay"> 
    <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a> 
    <div class="overlay-content"> 
    <form action="lit_stad_leeftijd.php" method="post"> 
     <button name="leeftijd" value="14+">14+</button> 
     <button name="leeftijd" value="15+">15+</button> 
     <button name="leeftijd" value="16+">16+</button> 
     <button name="leeftijd" value="17+">17+</button> 
     <button name="leeftijd" value="18+">18+</button> 
     <button name="leeftijd" value="21+">21+</button> 
     <button name="leeftijd" value="23+">23+</button> 
     <button name="leeftijd" value="*">ALL</button> 
    </form> 
    </div> 
</div> 

lit_stad_leeftijd.phpエラーメッセージ:

警告:にsession_start():セッションクッキーを送信することはできません - すでに(出力によって送られたヘッダがで/顧客/開始9/f/7/website.nl/httpd.www/fissa/lit_stad_leeftijd.php:16)21行目/customers/9/f/7/website.nl/httpd.www/fissa/lit_stad_leeftijd.php警告: session_start():セッションキャッシュリミッタを送信できません - 既に送信されたヘッダー(出力は/customers/9/f/7/website.nで開始されました) l/httpd.www/fissa/lit_stad_leeftijd.php:16)/customers/9/f/7/website.nl/httpd.www/fissa/lit_stad_leeftijd.php 21行目注意:未定義のインデックス:stad in/customers/9/f/7/website.nl/httpd.www/fissa/lit_stad_leeftijd.php 22行目注意:未定義のインデックス:/customers/9/f/7/website.nl/httpd.www/fissa/lit_stad_leeftijdのstad。 php on line 32 FILTER×

+1

あなたの '$ query'を出力(' echo')して、実行されているクエリが正確であるかどうかを確認してください。自分で実行してみてください(たとえばphpmyadminを使用して)、結果が得られるかどうかを確認してください。副次的に、ユーザが提出したデータをクエリに直接フィードしないでください。準備されたステートメントを使用する。 SQLインジェクションを防ぎますが、他の多くの利点があります。 – RToyo

+0

@RobbieToyotaこれは私が得るエラーメッセージです: – Mooelb

答えて

0

なぜ値を$_SESSION変数に設定していますか?変数はまだ、問題はあなたが正しくこのページにデータを投稿されていないこともあり、クエリに追加されていない場合はあなただけの

$query = "SELECT * 
    FROM Fissa_test 
    WHERE stad='" . $_POST['stad'] . "' 
    AND leeftijd='" . $_POST['leeftijd'] . "' 
    AND datum >= CURDATE() ORDER BY datum"; 

を行うことができます。

0

投稿したエラーメッセージは、データがすでに出力バッファに送信された(したがってヘッダー情報が送信された)後にsession_start()を呼び出していることを示します。

PHP documentation for session_start()ノートがあります。

クッキーベースのセッションを使用するには、のsession_start()は、ブラウザには、何もoutputing前に呼び出す必要があります。

これは、「HTML出力」の前にsession_start()を呼び出す必要があることを意味します。これには空白などが含まれます。簡単な解決策はファイル内のコードの最初の行をsession_start()にすることです。

<?php 
session_start(); 
?> 
<html> 
    <body> 
     [...] 
    </body> 
</html> 
関連する問題