PHP:如何在用户单击URL时动态填充页面

时间:2016-02-04 16:44:53

标签: php url dynamic

@teresko的帮助下,我设法使用下面的循环为我的网站创建动态网页(及其网址)。 我的问题如何在ahref获取新创建的页面,将数据库中的数据与模板(我已经准备好)结合起来,以便用户点击它时,她/他去了填充数据的页面。我应该使用javascript点击功能(宁可不会)。我如何用php和html做到这一点?

以下是生成网址的循环:

<?php foreach ($reciperow as $recipe) { ?>    
    <a href="?id=<?php echo $recipe['uniqno'];?>"><h2><?php echo $recipe['rectitle'];?></h2></a>    
    <p class="subhead"><?php echo $recipe['recsummary']; ?></p>    
<?php } ?>

非常感谢一个保持清除路由的解决方案,因为我的网站是一个基本项目,我计划在下一个项目中使用MVC和PHP路由。感谢。

1 个答案:

答案 0 :(得分:1)

如果您的意思是How, when user clicks generated link, show him page with data from database accordingly to "id" he/she selected,请执行以下操作:

<?php

    $id = intval($_REQUEST['id']);
    if ($id) { // user get here by clicking on link with id

        $data = ... // fetch data from database

?>
        <sometag>Some data from database:<?php echo $data['somecollumn']; ?></sometag>
        ...
<?php

    } else {
        // user just opened first page

        // generate links list as usual
        ...
        foreach ($reciperow as $recipe) {
?>    
            <a href="?id=<?php echo $recipe['uniqno'];?>"><h2><?php echo $recipe['rectitle'];?></h2></a>    
            <p class="subhead"><?php echo $recipe['recsummary']; ?></p>    
<?php
       }

        ...
    }
?>

修改

  

这是通常对简单网站的做法吗?

取决于。

如果你在datadabe中只有一个实体,那么就没有参数冲突,id只是标识符的收件人,但如果你打算同时显示f.e的详细信息。成分,家具和/或更多,然后你必须添加特定的。

喜欢,链接看起来像

<a href="?show=recipie&id=<?php echo $recipe['uniqno'];?>">
<a href="?show=ingredient&id=<?php echo $ingredients['id'];?>">

...然后必须相应地提取和显示数据:

$id = ...;
if ($id)
    switch ($_REQUEST['show']) {
    case 'recipie':
        // show recipie data
        break;
    case 'ingredient':
        // show ingredient data
        break;
    case ...

    default:
        // show start page
    }

但是,添加其他实体后,您的.php文件将会增长。另一个解决方案是添加单独的脚本来处理每个实体:

// generate links list as usual
...
foreach ($reciperow as $recipe) { // look at `recipie.php` portion of link's href
?>    
    <a href="recipie.php?id=<?php echo $recipe['uniqno'];?>"><h2><?php echo $recipe['rectitle'];?></h2></a>    
    <p class="subhead"><?php echo $recipe['recsummary']; ?></p>    
<?php
}

recipie.php文件添加到与基本脚本相同的文件夹中,其中包含以下内容:

<?php

    $id = intval($_REQUEST['id']);
    if ($id) { // user get here by clicking on link with id

        $data = ... // fetch data from database

?>
        <sometag>Some data from database:<?php echo $data['somecollumn']; ?></sometag>
        ...
<?php

    } else {
?>
        <h1 class="error">No recipie ID specified</h1>
<?php
    }
<?

当链接看起来像MVCrouting和/或{{}时,进一步探索将通过人性友好链接格式为您带来/home/recipie/12的概念1}}甚至是/recipie/?id=12。但这个故事又一次......