2017-05-23 1 views
2

Wie kann ich 2 Sitzungsvariablen in meine MYSQL-Abfrage hinzufügen?Hinzufügen von zwei Sitzungsvariablen in MYSQL-Abfrage

Dies funktioniert, weil ich nur die Variable $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> 

Aber wenn ich $leeftijd enthalten. Die Abfrage funktioniert nicht.

lit_stad_leeftijd.php

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> 

Die Fehlermeldung erhalte ich:

Warning: session_start(): Can not Session-Cookie senden - Header bereits gesendet von (Ausgabe begann bei/Kunden/9/f/7/website.nl/httpd.www.fissa/lit_stad_leeftijd.php: 16) in /customers/9/f/7/website.nl/httpd.www/fissa/lit_stad_leeftijd.php in Zeile 21 Achtung: session_start(): Session cache limiter kann nicht gesendet werden - Header bereits gesendet (Ausgabe gestartet unter /customers/9/f/7/website.n l/httpd.www/fissa/lit_stad_leeftijd.php: 16) in /customers/9/f/7/website.nl/httpd.www/fissa/lit_stad_leeftijd.php on line 21 Hinweis: Undefinierter Index: stad in/customers/9/f/7/website.nl/httpd.www/fissa/lit_stad_leeftijd.php in Zeile 22 Hinweis: Undefinierter Index: Stad in /customers/9/f/7/website.nl/httpd.www/fissa/lit_stad_leeftijd. php on line 32 FILTER ×

+1

Probieren Sie die Ausgabe ('echo') Ihre' $ query', um zu sehen, was genau die Abfrage ist, die ausgeführt wird. Versuchen Sie es selbst auszuführen (zum Beispiel mit phpmyadmin) und sehen Sie, ob Sie Ergebnisse erhalten. Nebenbei, füttern Sie die von Benutzern eingereichten Daten nicht direkt in eine Abfrage ein. Verwenden Sie vorbereitete Anweisungen. Es schützt vor SQL-Injektionen neben vielen anderen Vorteilen. – RToyo

+0

@RobbieToyota Dies ist die Fehlermeldung, die ich bekomme: – Mooelb

Antwort

0

Warum setzen Sie den Wert in die Variable $_SESSION? Sie könnten nur

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

tun Wenn die Variable noch wird nicht in die Abfrage hinzugefügt, dann kann das Problem sein, dass Sie die Daten nicht korrekt auf dieser Seite veröffentlichen.

0

Die Fehlermeldung, die Sie geschrieben haben, zeigt an, dass Sie session_start() aufrufen, nachdem Daten bereits an den Ausgabepuffer gesendet wurden (und Headerinformationen gesendet wurden).

The PHP documentation for session_start() eine Notiz hat:

zu verwenden Cookie-basierte Sessions, session_start() muss vor outputing etwas an den Browser aufgerufen werden.

Das bedeutet, dass session_start() vor jeder "HTML-Ausgabe" aufgerufen werden muss. Dazu gehören Leerraum usw. Die einfache Lösung besteht darin, einfach die erste Zeile Code in Ihrer Datei session_start() zu machen.

<?php 
session_start(); 
?> 
<html> 
    <body> 
     [...] 
    </body> 
</html>