当查询依赖于仅使用PHP的$_GET时,如何对表输出进行排序



我有一个网站,在名为f_toolseite.php的页面上显示一个表中的工具和另一个表的相应评级。我希望用户能够根据最佳评级和最差评级对评级进行排序。然而,由于我只使用php,当我按下按钮对评级进行排序时,正在查看的工具信息会被删除。我的意思是,我用来访问用户希望看到的工具和评级的$_GET变量正在从地址栏中删除。我很难实施会议,但我无法让它发挥作用。有没有什么方法可以只用php来解决这个问题?

这是我的代码对于f_toolseite.php''

<html>
<head>

<center>
<div class="tool-container">

<?php 

$name = mysqli_real_escape_string($conn, $_GET['name']);
$sql = "SELECT * FROM Tools WHERE t_name = '$name' "; 
$result = mysqli_query($conn, $sql);  
$queryResults = mysqli_num_rows($result); 

if($queryResults > 0 ){
while ($row = mysqli_fetch_assoc($result)){

##      $image = base64_encode($row['t_bild']);
##   echo "
##   <img src=data:image/png;base64,'$image'>";


echo " <div class='tool-box'>  
<img src=".$row['t_logo']. " width= 200>
<h3> ".$row['t_kategorie']."</h3>
<br>
<img src=".$row['t_bild']. " width= 800>
<br>
<br>
<p>".$row['t_beschreibung']."<p>
<br>
<p><b>Probier's doch gleich aus!</b></p>
<a href=".$row['t_link']."> ".$row['t_link']."</a> 
</div>"; 

}
}



?>

<br>
<br>
<br>
<br>

<div class="avg-container">
<?php

$id = mysqli_real_escape_string($conn, $_GET['id']);

$sql3 = "SELECT ROUND (AVG (b_nivg)) AS average FROM Bewertungen WHERE t_id = '$id'";
$result3 = mysqli_query($conn, $sql3);  
$row = mysqli_fetch_assoc($result3);
$average = $row['average'];
echo ("ALLES IN ALLEM EINE $average VON 10 ");

$sql4 = "SELECT  b_industrie 
COUNT(b_industrie) AS oft
FROM  Bewertungen WHERE t_id = '$id'
GROUP BY b_industrie
ORDER BY oft DESC
LIMIT    1";
$result4 = mysqli_query($conn, $sql4);  
$row = mysqli_fetch_assoc($result4);
$industry = $row['oft'];
echo ("Am beliebtesten in der $industry Industrie ");


?>


</div>  

<br>
<br>
<br>


<div class="filter-container">

<form action="f_toolseite.php" method="post">
<select name="sort">
<option value="" selected="selected">Nach den neusten Bewertungen geordnet</option>
<option value="b_nivg ASC">Am besten bewertet</option>
<option value="b_nivg DESC">Am schlechtesten bewertet</option>
</select>
<input name="search" type="submit" value="Ordnen"/>
</form>

<?php
if(isset($_POST['sort'])) {
$sort = $_POST['sort'];
}

?>

</div>

<div class="rate-container">
<?php


$id = mysqli_real_escape_string($conn, $_GET['id']);


if(!empty($sort)){
$sql2 = "SELECT * FROM Bewertungen WHERE t_id = '$id' ORDER BY b_datum DESC,'$sort'";
}
else{
$sql2 = "SELECT * FROM Bewertungen WHERE t_id = '$id' ORDER BY b_datum DESC";
}

$result2 = mysqli_query($conn, $sql2);  
$queryResults2 = mysqli_num_rows($result2); 
$crown= "https://project-disti.wbs.hs-rm.de/learn/ss2021/workspace/dbmgruppe2/Collatio%20(22.06.2021)/img/Webtool-Bilder/crown_PNG16.png";


if($queryResults2 > 0 ){
while ($row = mysqli_fetch_assoc($result2)){
echo " <div class='rating-box'> 
<p>".$row['b_vorname']." ".$row['b_nachname']."</p>
<br>
<p>".$row['b_industrie']."</p>
<p>".$row['b_dauer']."<p>
<p>".$row['b_niveau']."<p>
".( $row['b_exp'] == 'pro' ? "<img src= $crown width:10 />" : "" )."

<p>Design: ".$row['b_niv1']." / 10 </p>
<p>Intuitivität: ".$row['b_niv2']." / 10 </p>
<p>Vielseitigkeit: ".$row['b_niv3']." / 10 </p>
<p>Mehrwert: ".$row['b_niv4']." / 10 </p>
<p>Einzigartigkeit: ".$row['b_niv5']." / 10 </p>
<p>Gesamteindruck: ".$row['b_nivg']." / 10 </p>
<p>".$row['b_pro']."<p>
<p>".$row['b_con']."</p>
<p>".$row['b_kommentar']."</p>
<p>".$row['b_datum']."</p>
<br>
<br>
</div>"; 

}
}
?>


</div>



<footer>
<?php include '../Include/footer.php';?>
</footer>
</body>
</html> '''

您需要像这样更改html表单,并从get请求中获取排序值,而不是发布

<form action="f_toolseite.php" method="get">
<input type = "hidden" name = "name" value = "<?= $_GET['name'] ?>" />
<input type = "hidden" name = "id" value = "<?= $_GET['id'] ?>" />
<select name="sort">
<option value="" selected="selected">Nach den neusten Bewertungen geordnet</option>
<option value="b_nivg ASC">Am besten bewertet</option>
<option value="b_nivg DESC">Am schlechtesten bewertet</option>
</select>
<input name="search" type="submit" value="Ordnen"/>

最新更新