- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含用户配置文件的网站。在主页上,我试图显示每个人个人资料的小摘要。此摘要包括人员的姓名、性别和年龄。
<ul>
{section name=i loop=$person_list}
<li><a href="user_detail.php?id={$person_list[i].id}">{$person_list[i].username}, {$person_list[i].gender}, {$age[i]}
{/section}
</ul>
我以前使用 foreach 循环来遍历它们,但我需要索引来显示在 index.php 文件中计算的显示年龄。
if (isset($_GET['name']) && isset($_GET['gender']))
{
$name = $_GET['name'];
$gender = $_GET['gender'];
}
else
{
$name = "";
$gender = "";
}
define("PERSONS_PER_PAGE", 10);
if (isset($_GET['offset']))
{
$offset = $_GET['offset'];
}
else
{
$offset = 0;
}
list($person_list, $num_persons) = get_persons($name, $gender, $offset, PERSONS_PER_PAGE);
$ages = array();
for ($i = 0; $i < count($person_list); $i++)
{
$ages[$i] = age($person_list[$i].$dateOfBirth, time());
}
$smarty = new Smarty;
$smarty->assign("name", $name);
$smarty->assign("gender", $gender);
$smarty->assign("persons_per_page", PERSONS_PER_PAGE);
$smarty->assign("interests", $interests);
$smarty->assign("offset", $offset);
$smarty->assign("num_persons", $num_persons);
$smarty->assign("person_list", $person_list);
$smarty->assign("ages", $ages);
$smarty->display("index.tpl");
不要太担心 $offset 和 PERSONS_PER_PAGE,它们只用于分页。
我的年龄函数是这样的:
function age($birth)
{
$birth_date = new DateTime();
$birth_date = $birth;
$birth_date->setTimestamp($birth);
$now = time();
$now_date = new DateTime();
$now_date->setTimestamp($now);
$interval = $birth_date->diff($now_date); // $interval is a DateInterval
$age = $interval->y; // number of years in the interval
return $age;
}
此外,如果它是相关的;我的 get_persons 函数如下所示:
function get_persons($name, $gender, $offset, $persons_per_page)
{
$connection = mysql_open();
$query = "SELECT SQL_CALC_FOUND_ROWS id, username, gender, dateOfBirth FROM Person";
if ($name && $gender)
{
$query .= " WHERE name like '%$name%' AND gender like '%$gender%'";
}
$query .= " order by id";
$query .= " LIMIT $offset, $persons_per_page";
// print "$query<br>\n";
$result = mysql_query($query, $connection) or show_error();
$r = mysql_query("SELECT FOUND_ROWS()", $connection) or showerror();
$r = mysql_fetch_array($r);
$num_entries = $r[0];
$entries = array();
$person_list = array();
while ($person = mysql_fetch_array($result)) {
$person_list[] = $person;
}
mysql_close($connection) or show_error();
return array($person_list, $num_entries);
}
一个人的 table 看起来像这样:
create table if not exists Person
(
id int not null auto_increment primary key,
username varchar(10) not null,
name varchar(40) not null,
gender varchar(1) not null,
dateOfBirth timestamp not null,
email varchar(40) not null
);
这会产生以下错误:
Notice: Undefined variable: dateOfBirth in /net/homes.ict.griffith.edu.au/export/home/s2737451/public_html/wp/labs/lab5/index.php on line 39 Fatal error: Call to a member function setTimestamp() on a non-object in /net/homes.ict.griffith.edu.au/export/home/s2737451/public_html/wp/labs/lab5/includes/defs.php on line 167
提前致谢,我真的需要这方面的帮助:(
最佳答案
我认为 prodigitalson 解决了你的问题,但对你的代码有一些杂项建议:
您的 SQL 查询可用于 SQL Injection攻击。这是因为您直接将用户输入(GET 参数)插入到您的 SQL 查询字符串中——一个很大的NO NO。对于字符串值,您应该使用字符串转义函数,以确保将字符串安全地插入到查询中。对于 MySQL,使用 mysql_escape_string()
功能:
$query .= " WHERE name like '%" . mysql_escape_string($name) . "%' AND gender like '%" . mysql_escape_string($gender) . "%'";
对于数值,您应该检查以确保用户输入的是数字而不是字母等其他内容。您可能希望 $offset
始终为正数,因此您可以使用 ctype_digit()
函数以确保变量仅包含数字字符 (0-9)。 $persons_per_page
的值已硬编码在您的脚本中,因此您不必担心。
if (!ctype_digit($offset)){
//set to a default value if it's not a positive integer
$offset = 10;
}
$query .= " LIMIT $offset, $persons_per_page";
您可以简化计算返回的人员条目数的代码。利用 mysql_num_rows()
功能:
$num_entries = mysql_num_rows($result);
关于php - 基于 dateOfBirth mysql 时间戳显示年龄的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5605696/
是否有任何公式可以直接从 TextField 中的年月日中查找 D.O.B?InShort 将 21 年 6 月 16 日放入返回计算 D.O.B 的文本文件中? 最佳答案 在 iphone 中你没有
我有一个包含用户配置文件的网站。在主页上,我试图显示每个人个人资料的小摘要。此摘要包括人员的姓名、性别和年龄。 {section
我正在尝试使用POCO库来存储出生日期。 #include #include void main() { Poco::Data::Date dateOfBirth; } 但是在编译时出现错误
我正在使用 spring mvc 和 Thymeleaf。这是日期时间选择器的 html 表单: Date of Birth
我是一名优秀的程序员,十分优秀!