行が表示されるページを作成しています。各行には、私の質問のポイントである評価と使用法である 2 つの列があります。ページが最初にロードされるとき、事前ソートは行われず、ページは問題なく表示されます。動作している場合のコード:
if (!$sortby) {
$getdata = mysql_query("select * FROM traditional") or die(mysql_error());
while($data = mysql_fetch_array($getdata)){
$category = $data["category"];
$overview = $data["overview"];
$ratingcount = $data["ratingcount"];
$ratingscore = $data["ratingscore"];
$usage = $data["usage"];
$location = $data["location"];
$calculaterating = $ratingscore / $ratingcount;
if (!$calculaterating) {
$rating = "None";
} else {
$rating = $calculaterating;
}
echo "</tr>";
echo "<tr colspan='4'>";
echo "<td class='selectcategory' width='40%'>";
echo "<a href='$location'>$category</a>";
echo "</td>";
echo "<td class='categorymenu' style='vertical-align: middle; text-align: left;
padding: 5px;' width='40%'>";
echo $overview;
echo "</td>";
echo "<td class='categorymenu' width='10%'>";
echo $rating;
echo "</td>";
echo "<td class='categorymenu' width='10%'>";
echo $usage;
echo "</td>";
}
ここで物事が機能しなくなります。ページには、ユーザーが使用法または評価で並べ替えることができるドロップダウン メニューがあります。いずれかを選択すると、ページが更新され、評価または使用状況のいずれかによって $sortby が入力されます。物事が機能しなくなったときの残りのコードは次のとおりです。
} else {
if ($sortby = "rating") {
$sort = "rating";
} else {
$sort = "`usage`";
}
$getdata = mysql_query("select category,overview,SUM(ratingscore / ratingcount) as
'rating',`usage`,location FROM traditional ORDER BY $sort DESC") or die(mysql_error());
while($data = mysql_fetch_array($getdata)){
$category = $data["category"];
$overview = $data["overview"];
$rating = $data["rating"];
$usage = $data["usage"];
$location = $data["location"];
echo "</tr>";
echo "<tr colspan='4'>";
echo "<td class='selectcategory' width='40%'>";
echo "<a href='$location'>$category</a>";
echo "</td>";
echo "<td class='categorymenu' style='vertical-align: middle; text-align: left;
padding: 5px;' width='40%'>";
echo $overview;
echo "</td>";
echo "<td class='categorymenu' width='10%'>";
echo $rating;
echo "</td>";
echo "<td class='categorymenu' width='10%'>";
echo $usage;
echo "</td>";
}
}
$sortby が入力されていない場合、約 10 行が表示されます。(結果を並べ替えようとしたときに) 機能しないコードでは、1 行しか表示されず (理由がわからない?)、表示される 1 つの評価行はとにかく正しく計算されません。私はこれに対処する他の投稿をたくさん読みました (これは、現在持っている悪いコードを作成するのに役立ちました)。しかし、他の人の投稿から得たものを理解していないだけだと思います。