【问题标题】:Dynamically generated HTML (Server-side) in new page在新页面中动态生成 HTML(服务器端)
【发布时间】:2015-12-09 09:49:47
【问题描述】:

出于学习目的,我正在构建一个简单的网络应用程序,允许用户为自己编写介绍页面。我对服务器端动态生成的 HTML 以及它如何连接到客户端感到非常困惑。我目前正在使用 PHP 和 Mustache 模板在服务器端生成 about 页面 HTML,效果很好。

假设我输入了 URL:localhost/intro.html

intro.html 上有一个按钮,如果我点击它,浏览器会将我带到一个带有用户介绍信息的新 URL (localhost/intro.html/Adam),让我们说“Adam”。

据我了解,这应该向服务器发送一个请求,以生成一个包含有关 Adam 信息的 HTML 页面并将该 HTML 页面发送回浏览器。

我不明白它在 HTML、JS (JQuery) 和 PHP 中会是什么样子。同样,我可以很好地在服务器端生成 HTML,但是如何单击 localhost/intro.html 上的按钮将页面更改为 localhost/intro.html/Adam ?我的 PHP 代码如何检测页面 localhost/intro.html/Adam 并知道为其生成 HTML?代码是什么样的,我错过了一些概念吗?

任何方向、示例代码或教程将不胜感激。我只能找到严格的 PHP 教程。谢谢!

【问题讨论】:

  • 你对创建数据库和数据库查询了解多少?不要试图变得粗鲁。只是想找出你的经验水平。我可以帮你,但我需要知道从哪里开始。
  • @Kuya 谢谢,我目前正在使用XAMMP,对数据库和数据库查询有基本的了解。我相信我会没事的。
  • 你最好花点时间在 w3schools 上
  • @DarrenH,谢谢你的建议。在来这里问问题之前,我一直在 w3schools,但我似乎找不到我需要的东西。您是否可以将我引导至与我的问题相关的 w3schools 链接?

标签: javascript php html server mustache.php


【解决方案1】:

好的,凭借您对数据库和查询的了解,您可以做到这一点...

创建您的主页...我们将其命名为index.php

  1. 把这个js放到你的<head>标签中

    function MM_jumpMenuGo(objId,targ,restore){ //v9.0 变量 selObj = null;与(文件){ if (getElementById) selObj = getElementById(objId); if (selObj) eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'"); 如果(恢复)selObj.selectedIndex=0; } }
  2. 在重复区域内创建一个包含动态生成选项和提交按钮的下拉列表。

  3. 该下拉列表的值类似于 <option value="/<?php echo $row['username'] ?>"><?php echo $row['username'] ?></option>

  4. 您的提交按钮将调用 javascript 将您发送到您想要的页面
    <input type="button" name="go_button" id= "go_button" value="Go" onClick="MM_jumpMenuGo('jumpMenu','parent',0)">

已完成主页...

<form name="form1">
  <select name="name" id="name">
    <option selected>Please make a selection</option>
    <?php do { ?>
    <option value="/<?php echo $row['username'] ?>"><?php echo $row['username'] ?></option>
    <?php } while($row = $query->fetch(PDO::FETCH_ASSOC)) ?>
  </select>
<input type="button" name="go_button" id= "go_button" value="Go" onClick="MM_jumpMenuGo('select14','parent',0)">
</form>

然后我们从您的“目标”页面开始...我们将其命名为 results.php

  1. 查询数据库以获取从主页传递的用户名。

    $name = $_GET['name']; // 这是主页上下拉菜单的名称 SELECT * FROM mytable WHERE username=:name

  2. 确保绑定参数$query-&gt;bindValue(':name', $name, PDO::PARAM_STR);

  3. 然后你可以像这样回显你想要显示的信息...&lt;?php echo $row['fieldname'] ?&gt;

最后,.htaccess 文件...

创建一个重写规则来处理这个...

RewriteEngine On    # Turn on the rewriting engine
RewriteCond %{REQUEST_FILENAME} !-f # if this is not a real file
RewriteCond %{REQUEST_FILENAME} !-d # if this is not a real directory
RewriteRule    ^([A-Za-z0-9_-]+)$    results.php?name=$1    [NC,L]    # Handle page requests

你已经完成了。

注意:我使用的代码是pdo_mysql。您可以获取更多信息here

【讨论】:

  • 是否可以通过分离 HTML 和 PHP 文件来实现这一点?还是我有一个错误的误解?否则我明白到目前为止发生了什么。
  • 您将拥有一个主页 (index.php)、一个结果页面 (results.php) 和 .htaccess 文件
  • 谢谢,这对我来说很有意义!
  • 其实,我有一个后续问题。假设用户键入 results.php/Adam 以尝试访问有关 Adam 的信息并假设他们有权访问。那将如何转换为 results.php?name=Adam ?
  • $name = $_GET['name'] 这是正在发生的事情...您正在创建一个名为 $name 的变量,并通过调用 $_GET['name'] 为其分配一个值。这使得(在您的示例中)变量 $name 等于“亚当”或传递的任何其他名称。所以...$name = $_GET['name'] 是您所需要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 2012-07-08
  • 2013-04-01
  • 2011-02-09
  • 2011-07-26
  • 2015-02-20
相关资源
最近更新 更多