|
设置数据库
由于数据通常* *存储在数据库中,我们会将我们的自定义列表顺序存储在SQL表列。 我使用MySQL仅仅因为我使用,但据我所知,所有的查询都应该使用的SQL数据库。
首先,让我们来建立一个表。 创建一个名为“信息”的表和一个叫“作用”的列类型int和一个名叫“名称”列类型为varchar(10)。 这是一个查询:
创建表“信息”(“作用”INT非空,“名字”VARCHAR(10)非空
) 这是另一个查询来填充它与一些数据:
插入
“废话”(“作用”,“名字”)
值
(' 1 ',“拉里”),(' 2 ',“花”),(“3”,“萌”),(“4”,“玛丽”),(“5”,“简”); 注意:usort列中的值必须是唯一的为了这段代码的工作。 然而,不让这个主键列,auto_increment或独特。 如果你这样做,互换的作用值的查询会大喊大叫,你有重复的条目。
但没关系,因为作用的目的并不是替换行id,你可能会,也可能已经是独一无二的,auto_incremented等等……
这个计划
好现在我们已经与一些数据表设置,让我们来谈谈脚本。 这个示例脚本的目的是显示的数据表。 我们将列名称链接,这样我们可以通过列名排序。
更重要的是,我们将创建“向上”和“向下的箭头对于每一行,这样我们就可以订单列表中我们如何想。 当你点击一个向上或向下的箭头,该脚本将查询发送到数据库交换数据表中的行高于或低于行。
整个代码的方式- - - - - - - - - - - >
的代码
这是整个脚本。 接下来的几页将打破下来一点点。
< ?php
/ /连接数据库
康涅狄格州美元=首先(“localhost”,“dbusername”,“dbpassword”)或死(mysql_error());
$ db=mysql_select_db(“dbname”,康涅狄格州美元)或死(mysql_error());/ /如果一个箭头链接被点击了……如果($ _GET[“dir”]& &$ _GET[“id”]){/ /得到增值供应商更容易处理
dir美元=$ _GET[“dir”];/ /扮演int和sql注入预防开关两美元的id
$ id=(int)$ _GET[“id”];/ /决定行我们交换基于美元dir开关(dir美元){/ /如果我们上升,交换1小于id情况下“了”:/ /确保上面一行来交换
美元掉期=($ id>1)?$ id- - -:1;打破;/ /如果我们掉下来,掉期是1比id情况下“下来”:/ /找出行是最高的
美元的sql=“SELECT count(*)从信息”;
美元的结果=mysql_query(美元的sql,康涅狄格州美元)或死(mysql_error());
$ r=mysql_fetch_row(美元的结果);
美元最大=$ r[0];/ /确保下面一行来交换
美元掉期=($ id ”;/ /列名称链接,sortby
回声“< td > < a href = ' { $ _SERVER[' PHP_SELF ']} ? sortby = usort ' > usort < / > < / td >”;
回声“< td > < a href = ' { $ _SERVER[' PHP_SELF ']} ? sortby =名字' > < / > < / td >”;
回声" < / tr > ";/ /显示一行数据而($ r=作用是(美元的结果)){
回声“< tr >”;/ /链接改变定制订单,传递方向和自定义id排序
回声“< td对齐=“中心”> < a href = ' { $ _SERVER[' PHP_SELF ']} ? dir = up&id = { $ r(的作用)} > / \ < / >”;
回声“< a href = { $ _SERVER[' PHP_SELF ']} ? dir = down&id = { $ r(的作用)}’> \ / < / > < / td >”;
回声“< td > { $ r(“名字”)} < / td > ";
回声" < / tr > ";}/ / $ r时结束
回声" < /表> ";/ /显示表? >连接到数据库
< ?php
/ /连接数据库
康涅狄格州美元=首先(“localhost”,“dbusername”,“dbpassword”)或死(mysql_error());
$ db=mysql_select_db(“dbname”,康涅狄格州美元)或死(mysql_error()); 首先要做的是连接到数据库。 这里没有什么特别的。 在适当的地方插入你自己的信息。
如果一个箭头点击…
/ /如果一个箭头链接被点击了……如果($ _GET[“dir”]& &$ _GET[“id”]){/ /得到增值供应商更容易处理
dir美元=$ _GET[“dir”];/ /扮演int和sql注入预防开关两美元的id
$ id=(int)$ _GET[“id”]; 好,接下来,我们要检查是否一个箭头点击。 我们通过检查两个变量。 一个变量(“dir”)会告诉我们哪个方向交换(向上或向下)、数量和其他变量(id)会告诉我们数量是多少。 我们将它们分配给“常规”变量更容易编码。
$ id是int类型。我们这样做的原因是为了防止人们进入一半数字或数字以外的东西。 这样做是为了防止可能的sql注入×××这个变量(你总是安全意识)。
向上或向下
开关(dir美元){/ /如果我们上升,交换1小于id情况下“了”:/ /确保上面一行来交换
美元掉期=($ id>1)?$ id- - -:1;打破; 美元dir告诉我们我们想要交换:向上或向下。 例如,如果我们有一个列表,1,2,3,交换将改变列表2,1,3。 交换将改变列表1,3,2。
列表交换交换了
1 2 1
2 1 3
3 3 2 我们将使用一个开关来决定做什么如果$ dir向上或向下。 如果$ dir = = '了'然后我们将使用三元运算符确保当前行大于1,所以有高于行交换。 如果有,那么我们将分配前一行交换美元减去1。 如果没有行高于当前行(它已经在列表的顶部),我们分配1。
我们怎么知道行上面1小于当前号码吗? 的作用,因为所有的值应该是唯一的。 5行= = 5数字,1 - 5。 总是会有1、2、3、4、5。 订购的作用永远是1 - 5(或者无论有多少你有)。 你必须计划,或者它不会工作。
好吧,我收回那句话。 它不会工作,这段代码的例子。 你可以的,做一个查询发现上面或下面会是什么,不管它是1,但我们不会把所有复杂。
沿着…… 列表
/ /如果我们掉下来,掉期是1比id情况下“下来”:/ /找出行是最高的
美元的sql=“SELECT count(*)从信息”;
美元的结果=mysql_query(美元的sql,康涅狄格州美元)或死(mysql_error());
$ r=mysql_fetch_row(美元的结果);
美元最大=$ r[0];/ /确保下面一行来交换
美元掉期=($ id ”;/ /列名称链接,sortby
回声“< td > < a href = ' { $ _SERVER[' PHP_SELF ']} ? sortby = usort ' > usort < / > < / td >”;
回声“< td > < a href = ' { $ _SERVER[' PHP_SELF ']} ? sortby =名字' > < / > < / td >”;
回声" < / tr > "; 接下来,我们将开始一个html表,第一行的列名。 我们让他们链接,通过url传递列名,所以脚本知道列顺序的结果,你应该点击。
/ /显示一行数据而($ r=作用是(美元的结果)){
回声“< tr >”;/ /链接改变定制订单,传递方向和自定义id排序
回声“< td对齐=“中心”> < a href = ' { $ _SERVER[' PHP_SELF ']} ? dir = up&id = { $ r(的作用)} > / \ < / >”;
回声“< a href = { $ _SERVER[' PHP_SELF ']} ? dir = down&id = { $ r(的作用)}’> \ / < / > < / td >”;
回声“< td > { $ r(“名字”)} < / td > ";
回声" < / tr > ";}/ / $ r时结束
回声" < /表> ";/ /显示表? > 最后,我们使用while循环遍历和显示结果从数据查询。 我们做一些箭头和向下箭头链接,通过交换哪个方向,以及数量的作用这一行,所以脚本知道行交换,应该单击其中一个链接。 名字是显示为纯文本,因为我们什么都没做。 关闭循环后的表,做完了。
结束
|
|