2016-04-08 4 views
0

EDIT:PHPコードをもう一度やり直そうとしましたが、これはうまく機能しますが、フィルタを押す度にすべてのレッスンを印刷します。また、私はフィルタリングするときに2つのテーブルを一緒に接続するように見えることはできません。インストラクターの名前は別のテーブルインストラクターからのもので、私はこれを選びます。ここに私のPHPコードです。PHPを使用した複数のドロップダウンメニューオプションのフィルタリング

<?php 
include('connect-db.php'); 

if($_POST){ 
    if($_POST['Days'] == 'Monday') { 
     $query = "SELECT * FROM lesson WHERE Day='Monday'"; 
    }elseif($_POST['Days'] == 'Tuesday') { 
     $query = "SELECT * FROM lesson WHERE Day='Tuesday'"; 
    }elseif($_POST['Days'] == 'Wednesday') { 
     $query = "SELECT * FROM lesson WHERE Day='Wednesday'"; 
    }elseif($_POST['Days'] == 'Thursday') { 
     $query = "SELECT * FROM lesson WHERE Day='Thursday'"; 
    }elseif($_POST['Days'] == 'Friday') { 
     $query = "SELECT * FROM lesson WHERE Day='Friday'"; 
    }elseif($_POST['Days'] == 'Saturday') { 
     $query = "SELECT * FROM lesson WHERE Day='Saturday'"; 
    }elseif($_POST['Days'] == 'Sunday') { 
     $query = "SELECT * FROM lesson WHERE Day='Sunday'"; 
    }elseif($_POST['Days'] == 'All') { 
     $query = "SELECT * FROM lesson"; 
    } 

    if($_POST['Instructors'] == 'Trevor') { 
     $query = "SELECT * FROM lesson INNER JOIN instructor 
     ON lesson.Instructor_ID = instructor.Instructor_ID WHERE Forename='Trevor'"; 
    }elseif($_POST['Instructors'] == 'Laura') { 
     $query = "SELECT * FROM lesson INNER JOIN instructor 
     ON lesson.Instructor_ID = instructor.Instructor_ID WHERE Forename='Laura'"; 
    }elseif($_POST['Instructors'] == 'Rachel') { 
     $query = "SELECT * FROM lesson INNER JOIN instructor 
     ON lesson.Instructor_ID = instructor.Instructor_ID WHERE Forename='Rachel'"; 
    }elseif($_POST['Instructors'] == 'Ryan') { 
     $query = "SELECT * FROM lesson INNER JOIN instructor 
     ON lesson.Instructor_ID = instructor.Instructor_ID WHERE Forename='Ryan'"; 
    }elseif($_POST['Instructors'] == 'Steve') { 
     $query = "SELECT * FROM lesson INNER JOIN instructor 
     ON lesson.Instructor_ID = instructor.Instructor_ID WHERE Forename='Steve'"; 
    }elseif($_POST['Instructors'] == 'All') { 
     $query = "SELECT * FROM lesson INNER JOIN instructor 
     ON lesson.Instructor_ID = instructor.Instructor_ID"; 
    } 

    if($_POST['TypeLessons'] == 'Keeping Fit') { 
     $query = "SELECT * FROM lesson WHERE Type_of_Lesson='Keeping Fit'"; 
    }elseif($_POST['TypeLessons'] == 'How to Swim') { 
     $query = "SELECT * FROM lesson WHERE Day='How to Swim'"; 
    }elseif($_POST['TypeLessons'] == 'Relaxing Sessions') { 
     $query = "SELECT * FROM lesson WHERE Day='Relaxing Sessions'"; 
    }elseif($_POST['TypeLessons'] == 'Being Sporty') { 
     $query = "SELECT * FROM lesson WHERE Day='Being Sporty'"; 
    }elseif($_POST['TypeLessons'] == 'All') { 
     $query = "SELECT * FROM lesson"; 
    } 

    $result = mysql_query($query); 

    if(!$result) { 
    echo 'Could not get data: ' . mysql_error(); 
    } 

while($row = mysql_fetch_array($result)) { 
    echo "Lesson ID: {$row["Lesson_ID"]} <br> " . 
     "Name: {$row["Name"]} <br> " . 
     "Day: {$row["Day"]} <br> " . 
     "Start Date: {$row["Start_Date"]} <br> " . 
     "Start Time: {$row["Start_Time"]} <br> " . 
     "End Time: {$row["End_Time"]} <br> " . 
     "Instructor: {$row["Forename"]} <br> " . 
     "Type of Lesson: {$row["Type_of_Lesson"]} <br> " . 
     "Number of Places: {$row["No_of_Places"]} <br> <br> "; 
} 

} 
?> 

複数のドロップダウンメニューオプションをフィルタリングして、ユーザーが「検索レッスン」をクリックしたときにクエリが表示されるようにしました。しかし何らかの理由で同じエラーメッセージが表示され続けます。Notice:未定義インデックス:Days。 PHPコードはそれを拾うべきであるにもかかわらず、そうではないようで、私はそれを理解できません。以下は私のコードです。私はすべてのPHPの選択を完了していません。 また、PHPを選択する際にこれらのオプションを選択すると、これらのクエリを一度プリントアウトする方法もあります。どうもありがとうございます。

<form action="tester_filter.php" method="post"> 
<select name="Days"> 
<option value="All" selected="selected">All days</option> 
<option value="Monday">Monday</option> 
<option value="Tuesday">Tuesday</option> 
<option value="Wednesday">Wednesday</option> 
<option value="Thursday">Thursday</option> 
<option value="Friday">Friday</option> 
<option value="Saturday">Saturday</option> 
<option value="Sunday">Sunday</option> 
</select> 
<select name="Instructors"> 
<option value="All" selected="selected">All instructors</option> 
<option value="Trevor">Trevor</option> 
<option value="Laura">Laura</option> 
<option value="Rachel">Rachel</option> 
<option value="Ryan">Ryan</option> 
<option value="Steve">Steve</option> 
</select> 
<select name="TypeLessons"> 
<option value="All" selected="selected">All types</option> 
<option value="Keeping Fit">Keeping Fit</option> 
<option value="How to Swim">How to Swim</option> 
<option value="Relaxing Sessions">Relaxing Sessions</option> 
<option value="Being Sporty">Being Sporty</option> 
</select> 
<input type="submit" value="search lessons" name="submit" /> 
</form> 
+0

tester_filterのコードをすべて表示してください。php、それで、私たちは正しい答えを出すことができます。 – Tommy

+0

それは今のところすべてだった。私は 'Days'を手に入れようとしていたので、後でこれらのクエリーをどのように印刷するのか分からない。私はオンラインで見て、私は理解していないAJAXを使用しています。 – Jade

答えて

0
<?php 
if($_POST){ 
    if($_POST['Days'] == 'Monday') { 
     $query = "SELECT * FROM lesson WHERE Day='Monday'"; 
    }elseif($_POST['Days'] == 'Tuesday') { 
     $query = "SELECT * FROM lesson WHERE Day='Tuesday'"; 
    } 
} 
?> 

以下のコードを使用して通知エラーを修正するために、この1

+0

ありがとうございます。未定義のインデックスエラーメッセージが取り除かれたようです。しかし、これらのクエリを作成したら、データベースから詳細をどのように表示するのですか?ありがとうございました。 – Jade

0

を試してみてください。

if ($_SERVER['REQUEST_METHOD'] == 'POST'){ 
    if($_POST['Days'] == 'Monday') { 
    $query = "SELECT * FROM lesson WHERE Day='Monday'"; 
    } 
    elseif($_POST['Days'] == 'Tuesday') { 
    $query = "SELECT * FROM lesson WHERE Day='Tuesday'"; 
    } 
} 

は、代わりに、あなたはまた、(あなたが実際にそのそこに述べるなかった)あなたのPHPスクリプトは、フォームのようなtester_filter.phpに位置していることを示唆していると仮定すると、コード

if(!empty($_POST)) { 
    // process, validate or save to DB $_POST values, 
} 
0

下回ることにより確認することができますIあなたが出ようとしていることを確信していない、Daysが選ばれていますが、Queryと呼ばれる変数を文字列に設定しているだけで、何もしません。 if文のそれぞれにおいて

、あなたが選択しているかどうかを確認しようとしている場合は、デバッグに

if($_POST['Days'] == 'Monday') { 
//A check we're having the variable pass through 
echo "this should say monday"; 
$query = "SELECT * FROM lesson WHERE Day='Monday'"; 
} 

を行うには(それは大丈夫に見えます)良いですが、その後、月曜日を選択し、エコーがあるかどうかを確認出力すると、あなたは良く見えます。

あなただけのデータベースに接続せずにクエリを割り当てることはできません、あなたは、例えば、接続文字列、必要があります。

//Connection variables 
$servername = "localhost"; 
$username = "root"; 
$password = "password"; 
$database = "database"; 
//Connect to MySQL 
$conn = new mysqli($servername, $username, $password, $database); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
else{ 
    echo "Connected successfully"; 
} 

をあなたは、非常に基盤を持ったら次に、あなたが照会を開始することができます$ Queryで行った作業を使用して、データベースを作成します。

私が説明するにはあまりにも多すぎるので、私はあなたのやり方であなたを助ける必要があると思うほど多くの役に立つリンクを残します。

Connect to a MySQL Database from PHP

Pulling data from a MySQL Database, Querying the Database through PHP

List of MySQLi functions and what they do

Another list of MySQLi functions and what they do

Another guide on how to select information from a MySQL Database

幸運、そしてあなたが何か問題がある場合はコメント。

+0

ありがとう、これは最後に動作するようになった!これらのリンクは役に立ちました! – Jade

+0

うれしい私は助けることができました! – Tommy

関連する問題