所以想象一下,你有一个在线书店,页面是一个网格,有9个元素代表书籍封面。每本书都有价格,当用户加载页面第一次生成网格时,书籍存储在数据库中。现在,用户可以选择选择要加载顺序网格的选项(desc / asc)。现在实现这一目标的最佳方法是什么。这就是我尝试过的:
1)最简单的方法是制作有序的php页面,并简单地将链接放入该页面。现在这很容易,但如果我有30种不同类型的订单(价格,人气,年份等),我将不得不制作一大堆网站。
2)我尝试了ajax:当用户点击按钮时,我发送数据(如何订购)到基于该数据的特殊php脚本将创建数据库查询,然后我将使用php文件操作以新的顺序重写整个首页,我会简单地回应那个网站,并在ajax succes函数中我会做window.location.replace(sent_from_php),这将加载相同的网站,但因为我改变了它的内容,现在它将按顺序。这里有什么不对,当1个用户请求订购网站时,第二个用户也会看到有序网站,而不是原始网站。
那么,我如何使用我的第二种方法,但是我隔离用户的方式。用户想要订购网站,php重写首页html并输出新网站。第二个用户获得一个常规网站(他不会得到有序网站)等等。基本上我需要隔离用户,因此一个用户对网站所做的更改对任何其他用户都不可见?
我的index.php:
<?php
include 'db_menager.php';
$db_handler = new DB();
$query = "SELECT `Title`, `Autor`, `Price`, `Cover`, `Brief_desc`, `id` FROM `book` ORDER BY Price DESC";
$row = array();
$rows = $db_handler->select($query);
if ($rows)
{
echo "<ul id='main'>";
while ($row = $rows->fetch_array(MYSQLI_ASSOC))
{
echo '<li> <img src = "' . $row["Cover"] . '"/>';
echo '<p>Title : ' . $row["Title"] . '</p>';
echo '<p>Autor : ' . $row["Autor"] . '</p>';
echo '<p>Price : ' . $row["Price"] . '</p>';
echo '</li>';
}
echo "</ul>";
}
?>
答案 0 :(得分:0)
永远不要从其他文件修改php脚本 - 这是一个坏主意
有更好的解决方案 - 幸运的是简单的解决方案。
从URL字符串中获取用户需要的内容。查询位于lat:28.541743483605376 and lon:77.2174072265625 and i have define radius: 1
全局数组中。
$_GET
此示例的一个注释:始终使用ESCAPING ! (mysqli_real_escape_string更好,但需要mysqli链接(引用你的数据库,我没有一个,我不知道你的数据库类提供了哪些方法,变量)。) 他们阻止了您SQL Injection
链接将是
//default sort values
$sortby = "Price";
$order = "DESC";
if(isset($_GET['sortby'])){ //if theres a sortby query in the URL
$sortby = mysql_real_escape_string($_GET['sortby']);
}
if(isset($_GET['order'])){ //if user provided elements order in the URL
$order = mysql_real_escape_string($_GET['order']);
if($order == "DESC"){
$order = "DESC";
}else{
$order = "ASC";
}
}
$db_handler = new DB();
$query = "SELECT `Title`, `Autor`, `Price`, `Cover`, `Brief_desc`, `id` FROM `book` ORDER BY $sortby $order";