我有一个存储人们快速链接的数据库。这是一种非常基本的快速链接存储方法。数据库如下所示:
full_name | 1url | 1name | 2url | 2name | 3url | 3名称| 4url | 4name | 5url | 5name
^这一直持续到10.我知道这是一个糟糕的方式,但这是一个不专业的网站。
我想将结果放入有序列表中。但我不确定如何每次更改数字(1url或2url)?
所以目前我在PHP中设置了这样的
$result = mysql_query(SELECT * FROM `links` WHERE `full_name`='$loggedin')or die (mysql_error());
while($row = mysql_fetch_array($result)){
echo '<li><a href="';
echo $row['1url'];
echo '"></a></li>';
}
但我没有运气!我不确定自己应该做些什么。我希望它显示另一个带有<li>
的{{1}}以及找到的每一行的链接名称和链接名称。
谢谢!请具体跟我说,因为这是新的事! :d
编辑:
我也遇到了另一个问题。我使用了人们的答案中的代码,其中大部分都有效。但是,如果其中一个字段为空(因此用户只有6个快速链接),则仍会显示<a>
。现在我无法看到这个问题。 :/
解决方案:
这是有效的:
<li>
答案 0 :(得分:1)
$result = mysql_query("SELECT * FROM `links` WHERE `full_name`='$loggedin'")or die (mysql_error());
while($row = mysql_fetch_array($result)){
for($i = 1; $i < 10; $i++)
{
echo '<li><a href="';
echo $row[$i . 'url'];
echo '"></a></li>';
}
}
请注意,这非常hacky ...我会用3列(可能是4个使用自动增量进行排序)实现它,然后根据用户选择行,发出每一行。这将删除10个网址限制。
修改强>
关于第二个问题,看一下PHP'empty'函数,如果函数返回true,则断开/继续循环。
答案 1 :(得分:1)
稍微更改数据库设置会更清晰,更容易。你可以有两个表:
用户强>
<强> quick_links 强>
然后你可以简单地做一些像
这样的事情$userid_result = mysql_query(
"SELECT `id` from `users` WHERE `full_name` = $loggedin;"
);
$row = mysql_fetch_row($userid_result);
$userid = $row[0];
$links_result = mysql_query(
"SELECT * from `quick_links` WHERE `user_id` = $userid ORDER BY `order` ASC;"
);
while($quick_link = mysql_fetch_object($links_result))
{
printf("<li><a href=\"%s\">%s</a></li>", $quick_link->url, $quick_link->$name);
}
当然,您需要在那里进行一些错误检查,但这会让您有所了解。
答案 2 :(得分:0)
您需要将SQL查询作为包含在“...”中的字符串传递:
$result = mysql_query( "SELECT * FROM `links` WHERE `full_name`='$loggedin'" )
or die (mysql_error());
$i = 0;
while($row = mysql_fetch_array($result)){
$attributeURL = $i . 'url';
$attributeName = $i++ . 'name';
echo '<li>'
. '<a href="' . $row[ $attributeURL ] . '">' . $row[ $attributeName ] . </a>'
. '</li>'
;
}
答案 3 :(得分:0)
你需要在select语句周围添加一些双引号:
$result = mysql_query("SELECT * FROM `links` WHERE `full_name`='$loggedin'") or die (mysql_error());
while($row = mysql_fetch_array($result)){
echo '<li><a href="';
echo $row['1url'];
echo '"></a></li>';
}
答案 4 :(得分:0)
while ($row = mysql_fetch_array($result))
{
$full_name = array_shift($row);
for ($i = 0; $i < 10; ++$i)
{
echo '<li><a href=' . htmlspecialchars(array_shift($row)) . '>';
echo array_shift($row);
echo '</a></li>';
}
}
array_shift
返回数组中的第一个元素,同时将其从数组中删除。因此,上面的代码从记录中删除full_name
字段,然后迭代记录的其余部分,在每次迭代时删除并打印URL及其相应的名称。
htmlspecialchars
用于确保创建有效的a
- 标记。根据链接名称的来源,它也应该用在链接名称上。