切换数据库值

时间:2015-10-11 03:55:23

标签: php mysql

我的网站上有基于科学名称的网址。例如,如果值为'Canidae'在我的数据库中,然后我的网站将在MySite / canidae上显示一个页面。

有一些科学名称是重复的。例如,有两种鱼类通常名为Leptocephalus,而Phyllanthus是植物属和鸟类的名称。

如果我导航到MySite / bison - 那么它通过其亲子关系识别其作为哺乳动物页面的状态。 Bison的父母是Bovidae,它的父母是Artiodactyla,依此类推,直到我们到达哺乳动物(哺乳动物)。

想象一下,我们有一个重复的学名 - Myname。让我们说一个哺乳动物的父母名叫Mammus,另一个是父母名为Fishus的鱼。

如果我们导航到MySite / myname,页面默认将自己识别为哺乳动物。我想知道是否有办法让访问者将页面更改为“鱼”#34;单击一个按钮或链接,将父母从Mammus更改为Fishus。换句话说,URL仍然是相同的 - MySite / myname。但是,如果访问者点击按钮或链接,内容将从哺乳动物内容变为鱼内容。

2 个答案:

答案 0 :(得分:3)

我真的不喜欢发帖说“不要做你正在尝试的事情,做一些不同的事情”,但这似乎是合适的,特别是有一个原因:

如果内容不同,则会有一个相当强烈的理由,即URL也应该不同。

URL应该是显示内容的决定因素。否则,最好的情况是,您的内容不适合搜索引擎。

如果我分享了一个指向您网站的链接,那么告诉别人“转到example.com/myname,这将显示一个名字恰巧相似的哺乳动物,对我来说没有意义,所以你必须点击“鱼”。“鱼儿确实如此。

考虑一下:即使/ bison是明确的,更好的设计可能是“301”将浏览器重定向到/ animalia / chordata / mammalia / eutheria / artiodactyla / bovidae / bovinae / bison的“页面”。

如果存在歧义,请提供“消除歧义”页面(由维基百科完成,但会自动生成),提供可能匹配的规范链接,而不是直接重定向到单个匹配页面。大多数情况。

野牛的例子假设你没有达到物种水平,否则它也是模棱两可的,野牛是 Bison bison 中的属和种,仅属于 Bison bonasus 等等。

进一步阅读:Theme change

答案 1 :(得分:1)

我同意Michael-sqlbot,因为有两个原因你应该有更多的描述性网址

1)它更加用户友好 2)它更适合搜索引擎

所以,让我们开始说我们在www.examplesite.com/fish/myname这个页面向我们展示关于" MyName" " Fish"

有趣的是,还有一个"哺乳动物"同样。因此,我们提供了一些按钮,允许访问者查看该内容。

这就是我们这样做的方式......

假设您有三个表,例如......

enter image description here
正如你所看到的,我们有两个动物"叫做#34; MyName" ...但是如果你追溯它们,你会看到ID#2是一个哺乳动物而ID#5是一个鱼叉
所以..." MyName"有两个父ID

我们使用JOIN

查询数据库以获取我们需要的所有信息
$name = 'MyName';
$sql = "SELECT Animals.*, Species.*, ParentTable.* FROM Animals JOIN Species ON Animals.subcatid = Species.id JOIN ParentTable ON Species.parentid = ParentTable.id WHERE Animals.name=:name";
$query = $conn->prepare($sql);
$query->bindValue(':name', $name, PDO::PARAM_STR);
$query->execute();
$row = $query->fetchAll();

然后我们将按钮回显到将它们链接到自己唯一的URL

的页面
<?php foreach($row as $id) { ?>
<input name="switch" type="button" value="<?php echo $id['name'] ?>" onclick="goToURL('self','/<?php echo $id['name'] ?>/MyName');return document.MM_returnValue">
<?php } ?>

这是按钮动作的js

<script type="text/javascript">
<!--
function goToURL() { //v3.0
var i, args=goToURL.arguments; document.MM_returnValue = false;
for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
//-->
</script>

快乐的编码!