【问题标题】:ORDER button (mysqli/PHP), different button same divORDER 按钮(mysqli/PHP),不同的按钮相同的 div
【发布时间】:2014-11-08 00:18:46
【问题描述】:

这是我显示数据库样式内容的代码。

<?php
include 'connect/con.php';

$query ="SELECT newsvid.id, newsvid.addName, newsvid.vidTitle, newsvid.url, newsvid.vidSD, newsvid.published, videoinformation.vidLD, videoinformation.vidYear, videoinformation.vidCity, videoinformation.vidZanr, videoinformation.vidZanr2, videoinformation.vidZanr3, videoinformation.vidQuality, videoinformation.vidTranslated, videoinformation.vidTime  FROM newsvid, videoinformation WHERE newsvid.id = videoinformation.id";
$order = isset($_GET['order']) ? $_GET['order'] : 'DESC';
$goodParam = array("ASC", "DESC");

if (in_array($order, $goodParam)) {
if($order == 'ASC'){
     $query .= " ORDER BY newsvid.id DESC"; 
}else{
     $query .= " ORDER BY newsvid.id ASC"; 
    }
}

$result = mysqli_query($con,$query);
echo "<div class=\"maincover \" data-role=\"scrollbox\" data-scroll=\"vertical\">";

echo "<div class=\"panel panel-default\">";
while($row = mysqli_fetch_array($result)) {
echo "<div class=\"panel-heading\">";
echo '<div><a class="panel-title btn-block vidTitle" href="details.php?id='.$row['id'].'"><h5>'.$row['id'].' | '.$row['vidTitle'].'</h5></a></div>';
echo "</div>";

echo "<div class=\"panel-body\">";
echo "<div class=\"imgCover\"><img class=\"imageCover\"src=\"" . $row['url'] . "\"></div>";
echo "<div class=\"vidSD\">" . $row['vidSD'] . "</div>";
echo "<div class=\"vidDetails\"> 


<table>
<tr><td><strong> Years: </strong></td><td>" . $row['vidYear'] . "</td></tr>
<tr><td><strong> City: </strong></td><td>". $row['vidCity'] . "</td></tr>
<tr><td><strong> Zanr: </strong></td><td>". $row['vidZanr'] ." , ". $row['vidZanr2'] ." , ". $row['vidZanr3'] . "</td></tr>
<tr><td><strong> Quality: </strong></td><td>". $row['vidQuality'] . "</td></tr>
<tr><td><strong> Translated: </strong></td><td>". $row['vidTranslated'] . "</td></tr>
<tr><td><strong> Video time: </strong></td><td>". $row['vidTime'] .  "</td></tr>
</table> 
</div></div>";

echo " <div class=\"panel-footer\">";
echo '<h6><strong>Author: </strong><a href="../userPages/user.php?u='.$row['addName'].'">'.$row['addName'].'</a></h6>';
echo '<div><h6><strong>Published: </strong>' . $row['published'] . '</h6></div>'; 
echo "</div>";
}
echo "</div></div>";

mysqli_close($con);
?>

问题是:

我有这个部分:

if (in_array($order, $goodParam)) {
if($order == 'ASC'){
     $query .= " ORDER BY newsvid.id DESC"; 
}else{
     $query .= " ORDER BY newsvid.id ASC"; 
    }

我在我的索引页面中使用按钮:

<a href="view.php?order=ASC">ASC</a> 
<a href="view.php?order=DESC">DESC</a> 

问题是:目前我有每个按钮打开 NEW 页面,其中包含有序的内容。我需要每次您按下不同的订购按钮时,只有内容部分(div)会改变,而不是整个网站,以便保持相同的样式。

我很困惑,按下每个订购按钮的方式...内容的样式将相同,只有订购会改变...我知道如何在同一页面中打开内容但我不想复制设计每次对于每个内容页面..理论上我只需要更改最后一位查询:

ORDER BY newsvid.id DESC

DESC 或 ASC 或通过 DATA 或 NAME 和 e.t.c....

<body>
<div id="joe"></div>

<script type="text/javascript">
// Fetch and display "content.htm" inside a DIV automatically as the page loads:
ajaxpagefetcher.load("joe", "content.htm", true)
</script>

<div id="bob"></div>

<script type="text/javascript">
<!-- Fetch and display "sub/content2.htm" inside a DIV when a link is clicked on. Also load one .css file-->
<a href="javascript:ajaxpagefetcher.load('bob', 'sub/content2.htm', false, '', ['page.css'])">Load Content 2</a>
</script>

</body>

这是我不想做的......或做但只改变订购类型而不是全部内容......

【问题讨论】:

  • 需要使用ajax实现异步请求。互联网上有很多很棒的教程。另一种解决方案是在单击按钮时使用javascript 和/或jquery 对该表进行排序,或者使用诸如datatables 之类的现成解决方案。
  • 您确实意识到ASC 是默认排序顺序,您可以省去使用逻辑来处理它的麻烦。
  • 我做了 ASC 和 DESC 只是为了测试,我不确定具体是怎么做的......在这种情况下......
  • jQuery 或 javascript 将能够处理大型数据集,而仅基于浏览器的数据存储则不能。最好使用 ajax 方法,例如使用 jQuery。

标签: php html mysql database mysqli


【解决方案1】:

按照您的方式,每次单击 ASC 或 DESC 按钮时,同一页面都会刷新并再次显示所有信息。

您可能正在寻找一种称为 Ajax 的网络技术。它基本上是带有一些 api 调用的 javascript 来刷新和加载网页的某些部分,而无需发送整个服务器请求以再次在页面上重新加载整个 html。

除此之外,如果不重新加载整个页面,就无法刷新/加载页面的某些部分。

【讨论】:

  • 我很困惑,每个排序按钮按下的内容样式都是相同的,只有排序会改变......我知道如何在同一页面中打开内容但我不想每次为每个内容页面复制设计...
【解决方案2】:

“问题是:目前我有每个按钮打开带有排序内容的新页面。我需要每次按下不同的排序按钮时,只有内容部分(div)会改变,而不是整个网站,这样样式相同会留下来。”

要仅更改 div 的内容并重新加载新页面,您需要使用一些 jQuery 或其他 javascript 在按钮(实际上是链接)单击时使用新数据更新 DOM。

【讨论】:

    【解决方案3】:

    如果我遇到类似的问题,我会使用 HTML 的 "form method" 来解决,因为我目前不知道 ajax。

      <?php
      if(isset($_POST['ASC']))   /* if user have clicked ASC button ,do this */
      {
         $query .= " ORDER BY newsvid.id ASC";
         echo "<div class='ur_div'>" . display() . "</div>";
      }
      if(isset($_POST['DESC']))   /* if user have clicked DESC button ,do this */
      {
         $query .= " ORDER BY newsvid.id DESC";
         echo "<div class='ur_div'>" . display() . "</div>";
      }
    
       echo "<form method='post' action='SamePage.php'>";
       echo "<input type='submit' name='ASC' value='ASC'>";
       echo "</form>";
    
       echo "<form method='post' action='SamePage.php'>";
       echo "<input type='submit' name='DESC' value='DESC'>";
       echo "</form>";
       ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-18
      • 2011-09-15
      • 1970-01-01
      • 2017-03-29
      • 2018-03-03
      • 2019-07-31
      • 1970-01-01
      • 2012-06-16
      相关资源
      最近更新 更多