2017-03-14 5 views
0

私はログインしているユーザーしかいません。ユーザーの年齢をセッションしました。なぜなら、私が行っている検証に必要なのですから。ユーザーがログインすると、彼が取ることができるアンケートを表示するテーブルを持つページにリダイレクトされます。管理者がアンケートを作成している場合は、この年齢で特定の人だけを意味する年齢範囲のオプションは、私は、ユーザーが唯一のようになります検証/設定をやろうとしている今、調査PHP検証コードが年齢で機能していませんか?

<select name="agestart" class="form-control-static">  

<label> TO </label> 

<select name="ageend" class="form-control-static"> 

を取ることができますがあります年齢層に合ったアンケートを見ることができます。

<?php 



    $mysqli = mysqli_connect("localhost", "root", "", "imetrics"); 

    $query = mysqli_query($mysqli,"SELECT * FROM surveyform"); 

    if($query){ 
     while($row = mysqli_fetch_array($query)){ 

      $id = $row['survey_id']; 
      $title = $row['surveytitle']; 
      $agestart = $row['age_start']; 
      $ageend = $row['age_end']; 

      if(!$_SESSION['age'] >= $agestart || $_SESSION['age'] <= $ageend){ 

       echo "<tr align='center'>"; 
       echo "<td><font color='black'>" . $id . "</font></td>"; 
       echo "<td><font color='black'>" . $title . "</font></td>"; 
       echo "<td><a href='preview.php?survey_id=$id'><input class='btn btn-danger' type='button' value='Take Survey'/></td>"; 

       echo "</tr>"; 
      } 
     } 
    } 

    ?> 

しかし、ユーザーのみ年齢はagestartと私は思うageendより高い場合(表示しない)働いているので、自分の条件に何か問題があると思われます。私は現時点では本当に混乱しています。ここで

if(!$_SESSION['age'] >= $agestart || $_SESSION['age'] <= $ageend){ 
+5

セッションを開始すると助けになります –

+1

また、 '!'を削除し、 'if'条件の' && 'を' || 'に変更します。 – Condorcho

+0

@ Fred-ii-これは明らかに完全な文書ではありません。 OPは条件が変わったと言っているので、これはセッションの問題ではありません。 –

答えて

1

次の2つのことを行う、のいずれか(のsession_startを追加することができます)。条件を修正するか、SQLクエリを変更してください。

session_start(); 
$sessionAge = $_SESSION['age']; 

$query = mysqli_query($mysqli,"SELECT * FROM surveyform WHERE $sessionAge BETWEEN age_start AND age_end"); 

// OR with a condition 

if(($agestart <= $sessionAge) && ($sessionAge <= $ageend)) { 
    //.... 
} 
+0

これは非常に有益です教えてくれてありがとう! @Yolo – Jola

1

は、年齢の確認を行うための適切な方法です:

$age = intval($_SESSION['age']); 
if ($agestart <= $age && $age <= $ageend) { 
+0

ありがとうございました@Chris Gありがとうございました!私は一度私が15名の評判を上回ったら、この回答に投票します。 – Jola

+0

ありがとう、しかし、SQLクエリに年齢チェックを含める方法のYoloの答えを確認してください。 –

0

私はあなたがまだセッションを開始しませんでした見ての通り:

session_start(); //Should be at the beginning of the file 

$_SESSION['age']が値を持っている必要があることに注意してください:

ブール条件が間違って書かれている
$age = (isset($_SESSION['age'])) ? $_SESSION['age'] : 0; //For PHP < 7.x 
$age = $_SESSION['age'] ?? 0; //For PHP 7 
0

if($_SESSION['age'] >= $agestart && $_SESSION['age'] <= $ageend) 

たぶん私は古い学校ですが、ほとんどはすぐに読んで理解するために$agestart <= $age && $age <= $ageendが難しくなることがあります。私は、論理的に、これは上記の回答と同じですが、これは読みやすいです私見を知っています。

関連する問題