0

こんにちは、私はphpを初めて使用し、必要なタスクを完了するために使用できるコードを見つけようとしました。現在、コースの基準を表示するためのフォームが設​​定されたページがあります。また、データベースに保存したモジュールのすべてのコースコードを現在保持しているドロップダウンメニューもあります。私の問題は、選択したコースに関するすべての情報を表示するためにフォームのフィールドに入力したいコースコードを選択するときです。私が仕事をしようとしているコードは次のとおりです。

<?php 
session_start();
?>
<? include ("dbcon.php") ?>
<?php

if(!isset($_GET['coursecode'])){ 
$Var ='%'; 
} 
else 
{ 
if($_GET['coursecode'] == "ALL"){ 
$Var = '%'; 
} else { 
$Var = $_GET['coursecode']; 
} 
}


echo "<form action=\"newq4.php\" method=\"GET\"> 
<table border=0 cellpadding=5 align=left><tr><td><b>Coursecode</b><br>";

$res=mysql_query("SELECT * FROM module GROUP BY mId"); 
if(mysql_num_rows($res)==0){ 
echo "there is no data in table.."; 
} else 
{ 
echo "<select name=\"coursecode\" id=\"coursecode\"><option value=\"ALL\"> ALL </option>"; 
for($i=0;$i<mysql_num_rows($res);$i++) 
{ 
$row=mysql_fetch_assoc($res); 
echo"<option value=$row[coursecode]";

if($Var==$row[coursecode]) 
echo " selected"; 
echo ">$row[coursecode]</option>"; 
}
echo "</select>"; 
}
echo "</td><td align=\"left\"><input type=\"submit\" value=\"SELECT\" /> 

</td></tr></table></form><br>";

$query = "SELECT * FROM module WHERE coursecode LIKE '$Var' "; 
$result = mysql_query($query) or die("Error: " . mysql_error());

if(mysql_num_rows($result) == 0){ 
echo("No modules match your currently selected coursecode. Please try another coursecode!"); 
} ELSE { 
        Coursecode: echo $row['coursecode'];
        Module: echo $row['mName']; 
        echo $row['mCredits'];
        echo $row['TotalContactHours'];
        echo $row['mdescription'];
        echo $row['Syllabus'];
        }
?>

ただし、データベースから最後のエントリしか取得できないように見えるため、この問題を解決するための助けや、これをコーディングするより良い方法があれば、それが機能することに感謝します

ありがとう

4

2 に答える 2

0

For me i would use some javascript(NOTE: i prefer jQuery)
An easy technique would be to do this(going on the assumption that when creating the drop downs, your record also contains the description):

Apart from creating your dropdown options like this <option value="...">data</option>, you could add some additional attributes like so:

echo '<option value="'.$row['coursecode'].'" data-desc="'.$row['description'].'">.....</option>

Now you have all your drop down options, next is the javascript part

Let's assume you have included jQuery onto your page; and let's also assume that the description of any selected course is to be displayed in a <div> called description like so:

<div id="course-description">&nbsp;</div>
<!--style it how you wish -->

With your javascript you could then do this:

$(function(){
    $("#id-of-course-drop-down").change(function(){
        var desc = $(this).children("option").filter("selected").attr("data-des");
        //now you have your description text
        $("#course-description").html(desc);
        //display the description of the course
    }
});

Hope this helps you, even a little
Have fun!

NOTE: At least this is more optimal than having to use AJAX to fecch the description on selection of the option :)

于 2012-06-06T14:06:56.943 に答える
0

主なエラーは最後のクエリにあります。実際にはクエリから何もフェッチしていないため、最初のクエリでフェッチした最後の行を表示しているだけです。

いくつかのヒント:

1) クエリ結果から結果を取得するために for() ループを使用しないでください。ループははるかに簡潔ですが:

$result = mysql_query(...) or die(mysql_error());
while($row = mysql_fetch_assoc($result)) {
   ...
}

2) これらの while ループの別の 1 つを最終的なクエリに追加します。これは、実行されただけでフェッチされていないためです。

于 2012-06-06T14:05:23.153 に答える