-1

我正在制作一些页面,其中包含一些来自数据库的排序内容。A已经对php进行了排序,我需要通过按钮适当地调用它,并且我需要将taht php输出写入已经在页面上的某个div。是否可以?

排序.php

<?php
mysql_connect("localhost", "login", "pass") or die(mysql_error());
mysql_select_db("database");

$result = mysql_query("SELECT * FROM table ORDER BY added ASC");

while($row = mysql_fetch_array($result))
  {
  echo "<div class='something'>";
  echo "<a href='$row[link]'>";
  echo "<img src='$row[img]' height='125' width='125'/>";
  echo "<p>$row[name]</p></a></div>";
  echo "<br>";
  }
?> 

每种类型的排序或过滤器都将由不同的 php 处理。这是如何制作这种页面的好方法吗?还是有一些更简单更好的方法?还有一件事情。选择不同类型的过滤器时是否可以进行一些转换?我想要这样的东西:流沙

4

1 回答 1

0

如果你可以在你的页面中包含 jQuery,它有一个简写的方法来做到这一点:.load(). 您的最终 javascript 可能如下所示:

$(document).ready(function() {

    $("#searchButton").bind('click', function() {
        $("#resultsDiv").load(
            'http://mysite.com/sorting.php',
            { // parameters, in object literal format
               sortDir: 'asc',
               sortCol: 'lastname'
               // etc.
            }
        );
    });

});

您将 mysite.com、searchButton 和 resultsDiv 替换为您的站点/标记的真实信息。您还可以使用 jquery 选择器从页面元素中获取排序参数,如下所示:$("#sortDir").val()- 假设一个文本框、文本区域或选择框。假设您的表单使用它们,还有其他方法可以检索复选框和单选按钮。要回答您的其他问题:

1) 每种类型的排序或过滤器都将由不同的 php 处理。这是如何制作这种页面的好方法吗?还是有一些更简单更好的方法?

对于少数人来说并非不合理。不接受服务器上的任何参数是确保您永远不会允许恶意输入的一种方法。当您需要更改表名或您选择的列并且必须修改每个文件时,它往往会变得笨拙。您还需要意识到,如果您允许过滤器和排序的组合,您就是在谈论支持它们的交集。如果你有 3 个过滤器和 4 个排序,那就是 12 种组合。如果要添加另一个排序和另一个过滤器,则必须为过滤器添加 4 个新页面和为排序添加 5 个新页面 - 而且每次都会变得更糟。

大多数人会采用让所有数据进入同一页面的方法,并且只有该页面负责验证用户输入、制定查询并返回结果。这种范式通常称为DRY,表示 Don't Repeat Yourself。但是,如果您接受用户输入,则需要非常小心地验证它(在服务器端!不要相信用户输入!)并且不允许例如SQL 注入 攻击

2) 还有一件事。选择不同类型的过滤器时是否可以进行一些转换?我想要这样的东西:流沙

那个特定的动画非常复杂。他们在为每个页面显示的图标之间运行差异,并以编程方式自定义要缩小、爆炸、移动等的图标。我可以更详细地了解如何自己做......

但你知道吗?它是一个插件,与 jQuery 1.3+ 兼容,并在 MIT 和 GPLv2 下获得许可,因此将它整合到您的站点中应该没有问题。检查文档并自己尝试一下。我没有看到任何与排序您返回的标记类型本质上不兼容的东西。我确实注意到他们的示例使用li标签进行排序,而您的示例返回使用div. 但这不应该是一个主要的挂断,如果是,只需 return lis 。当您在使用它时遇到问题时,请发布另一个问题,适当地标记它并准备发布您在这方面尝试过的所有内容。

于 2013-02-25T18:57:01.437 回答