2014-12-08 68 views
2

我已经创建了一个包含字符以及我分配给它们的年份的年份搜索功能块的目录。因此,1940年至1949年的任何事情都将在1940年的时间段内,等等。我使用href来将这些时间段分组。使用之间,最小值和最大值之间的问题

<?php 

$sql = "SELECT * FROM catalog"; 

$displayby = $_GET['displayby']; 
$displayvalue = $_GET['displayvalue']; 

if($displayby && $displayvalue){ 
    $sql = "SELECT * FROM catalog WHERE $displayby LIKE '$displayvalue'"; 
} 
if($displayby == 'year'){ 
    $min = $_GET['min']; 
    $max = $_GET['max']; 
    $sql = "SELECT * FROM catalog WHERE year BETWEEN '$min' AND '$max'"; 
} 
//$result = mysqli_query($con,$sql); 
$result = mysqli_query($con,"SELECT * FROM catalog WHERE year BETWEEN '$min' AND '$max'"); 
    while($row = mysqli_fetch_array($result)){ 
     $name = $row['name']; 
     $filename = $row['filename']; 
     $cid = $row['cid']; 

     echo "\n<div class=\"holder\">"; 
     echo "<a href=\"single.php?cid=$cid\"><img src=\"thumbs/$filename\"></a>"; 
     echo "<a href=\"single.php?cid=$cid\">$name</a><br />\n"; 
     echo "</div>"; 
    } 
?> 

有了这个HREF,只有那些年之内带来了一定的字符:

<a href="index.php?displayby=year&min=1940&max=1949">40's Villans</a><br/> 

但是他们表现出在未来几年达到之前 - 这可能是1945年的一组日期为字符,但他们只出现在20世纪30年代的链接。

我在做什么错了? 编辑:这里是表SQL table

+0

你能告诉我们表'目录'的结构? (什么类型的字段是'year'?) – 2014-12-08 08:17:08

+0

你做了很多错误(检查SQL注入),但逻辑似乎没问题。在SQL控制台中查询是否工作? – 2014-12-08 08:17:15

+0

如果'SELECT * FROM catalog WHERE year>'$ min'AND year <'$ max'“';? – 2014-12-08 08:21:20

回答

-1

,而不是你们之间的使用也可以使用下面的语句用于获取所需的数据如下

$sql = "SELECT * FROM catalog WHERE year >= '$min' AND year <='$max'"; 

,并在phpMyAdmin,你可以运行查询,以确保您越来越正确的数据,之后你可以检查你的代码,你在哪里显示它

我希望它帮是你..

+0

按照您的建议更改为无运气。然后在phpmyadmin中查询,并且它工作正常。 – shyinryu 2014-12-08 08:35:14

+0

这不会解决任何问题 – Strawberry 2014-12-08 08:43:09

2

BETWEEN ... AND ....可以使用d表示整数和字符串。所以:

BETWEEN 1 AND 3 

将为1,2和3,但为真:

BETWEEN 'a' AND 'c' 

将是 '一', 'b' 和 'c' 的真。

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between

你把引号你的号码,把它们变成字符串。所以比较是在字符上完成的,而不是数字。

删除引号应该使其工作。

$result = mysqli_query($con,"SELECT * FROM catalog WHERE year BETWEEN $min AND $max"); 

但正如其他人所说,代码还有很多其他问题。这个错误是某个人不知道自己在做什么的症状。为什么不从一开始就着手,拿一本好书。阅读。做例子。实验。成为一名流利的程序员可能需要几年的时间。 (这意味着作为一种ecouragement,而不是批判。)

+0

谢谢你的帮助!它现在已经修复。 我可以相信,即时通讯不得不在学校为网页设计使用php,但它并不是我感觉舒服的课程之一。我一定会以更慢,更轻松的步伐,让我更好地理解,一旦完成了。再次感谢! – shyinryu 2014-12-08 08:45:40

+0

警告:此代码需要SQL注入。请改用参数化查询。 – jcaron 2017-07-29 14:13:42

相关问题