PHP____处理HTML与PHP交互的问题


引言

通常需要实现这样的需求,HTML需要从PHP后端获取到一些数据进行前台展示。

本文着重解决这样的需求。


Let's do it!

PHP在获取了post的数据以后,怎样输出返回信息到原有的HTML中。

a.html文件中使用了

<form action ="b.php" method="POST">
<input type ="submit">
</form>

然后b.php处理了post请求过来的信息以后,我 想要输出一个返回信息到a.html

HTML是静态页面,一般是服务器处理后直接交由浏览器展示的。要想在原a.html中显示提交后的信息,可以有这些思路:

  • (1) 在b.php中处理完成后,将要输入的信息保存至数据库session等中,然后使用header跳转到a.html,但是在服务器端要将html文件当成php页面处理,在此html中(相当于php页面),使用php语句获取要输入的信息并生成html传输到浏览器.(不推荐)

  • (2) 同上,但是服务器端不将html当成php来解析处理,而是在此html页中使用javascript标签,链接指向某一个php,由它取出之前数据并以js语句输出,如:

a.html中:

<script src="j.php"></script>

b.php中:(略过取之前数据的过程)

echo "document.write('$message');";
  • (3) 在a.html中使用ajax通过XMLHttpRequest对象提交数据到b.php,处理完成后输出数据.a.html中可以在不刷新页面的情况下取得返回的信息并按你的想法显示在页面的任何地方.(推荐)

HTML调用PHP的方法

HTML本身是无法处理动态请求,要完成这个,一般是用javascript。在生成静态网页,可以根据数据库id给html页面生成一个相对应的javascript文件引用。比如页面是123.html,那就在这个页面生成一个

<script type="text/javascript" src="click.php?id=123"></script>

然后在click.php这个页面就按照php的语法去处理操作数据库就行。

静态页面中是不能直接调用php文件,但是可以使用js调用方式来调用php文件,还可以使用ajax 调用php文件

举一个简单的例子来说明:在页面a.html中使用如下代码,可以将action=test的参数传递到b.php。

Javascript代码如下:

<script type="text/javascript" src="b.php?action=test"></script> 

在b.php中有这样一段PHP代码:

<?php 
    $action=$_GET['action'];     
    echo "document.write('".$action."');n";    
?> 

在html中使用php返回的数据进行界面更新

html通过js发送http请求,php返回加工过的数据,js通过回调函数加载数据。以下是用户申请访问ip后,加载到table中的例子

1.html+js部分

//js代码
<script type="text/javascript">
    var xmlHttp;
    function createXMLHttpRequest(){
        if(window.ActiveXObject){
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else if(window.XMLHttpRequest){
            xmlHttp = new XMLHttpRequest();
        }
    }

    function start(){
        createXMLHttpRequest();
        var url="http://www.52300.com/yzydede/yhsetipmap.php";
        xmlHttp.open("POST",url,true);
        xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        xmlHttp.onreadystatechange = callback;
        xmlHttp.send("sip="+document.getElementById("sip").value);
    }

    function callback(){
        if(xmlHttp.readyState == 4){
            if(xmlHttp.status == 200 && xmlHttp.responseText != ""){
                if (xmlHttp.responseText.indexOf("127") >= 0)
                {
                    var bodyObj=document.getElementById("ipmap_list");
                    if(bodyObj==null)
                    {
                        alert("Body of Table not Exist!");
                        return;
                    }
                    var rowCount = bodyObj.rows.length;
                    var cellCount = bodyObj.rows[0].cells.length;
                    var newRow = bodyObj.insertRow(rowCount++);
                    newRow.insertCell(0).innerHTML=rowCount - 1;
                    newRow.insertCell(1).innerHTML=document.getElementById("sip").value;
                    newRow.insertCell(2).innerHTML=xmlHttp.responseText;
                }
                else
                    alert(xmlHttp.responseText);
            }
        }
    }

    function getyhip(){
        createXMLHttpRequest();
        var url="http://www.52300.com/yzydede/yhgetipmap.php";
        xmlHttp.open("POST",url,true);
        xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        xmlHttp.onreadystatechange = yhcallback;
        xmlHttp.send("");
    }

    function yhcallback(){
        if(xmlHttp.readyState == 4){
            if(xmlHttp.status == 200 && xmlHttp.responseText != ""){
                if (xmlHttp.responseText.indexOf(".") >= 0)
                {
                    var bodyObj=document.getElementById("ipmap_list");
                    if(bodyObj==null)
                    {
                        alert("Body of Table not Exist!");
                        return;
                    }

                    var strall= new Array();
                    strall=xmlHttp.responseText.split("|");
                    for (i=0; i<strall.length ;i++ )
                    {
                        var allip = new Array();
                        allip = strall[i].split("-");
                        var rowCount = bodyObj.rows.length;
                        var cellCount = bodyObj.rows[0].cells.length;
                        var newRow = bodyObj.insertRow(rowCount++);
                        newRow.insertCell(0).innerHTML=rowCount - 1;
                        for (j=0; j<allip.length; j++)
                            newRow.insertCell(1+j).innerHTML=allip[j];
                    }
                }
                else
                    alert(xmlHttp.responseText);
            }
        }
    }

</script>

//点击按钮触发更新
<input style="width:150px;margin-top:10px; margin-bottom:20px;" class="button_blue" type="button" value="申请防护" onclick="start()" />

//刷新网页更新
<script type="text/javascript">
    getyhip();
</script>

2.php代码

<?php
echo "hello world.";    //这是需要加工后返回的数据
?>

参考代码

本段主要为大家详细介绍HTML中嵌入PHP的简单方法,以一个实例实现php嵌入到html文件中,感兴趣的小伙伴们可以参考一下

我们以一个提交订单和显示订单信息的例子为学习PHP的开始。

这个例子包含两个文件。
一个提交订单的html文件:orderform.html
一个显示订单信息的php文件:processorder.php。
我将这两个文件放在test_1文件夹下,将test_1文件夹放在htdocs目录下。

文件的组织形式如下图所示,使用xampps安装的集成环境。


提交订单的html文件orderform.html如下所示:

<form action="processorder.php" method="post">
  <table>
    <tr bgcolor="#cccccc">
      <td width="150">Item</td>
      <td width="15">Quantity</td>
    </tr>
    <tr>
      <td>Tires</td>
      <td align="center"><input type="text" name="tireqty" size="3" maxlength="3" /></td>
    </tr>
    <tr>
      <td>Oil</td>
      <td align="center"><input type="text" name="oilqty" size="3" maxlength="3" /></td>
    </tr>
    <tr>
      <td>Spark Plugs</td>
      <td align="center"><input type="text" name="sparkqty" size="3" maxlength="3" /></td>
    </tr>
    <tr>
      <td colspan="2" align="center"><input type="submit" value="Submit Order" /></td>
    </tr>
  </table>
</form>

显示订单信息的php文件processorder.php如下所示:

<?php
// create short variable names, also can use '$_REQUEST['name']'
$tireqty = $_POST['tireqty'];
$oilqty = $_POST['oilqty'];
$sparkqty = $_POST['sparkqty'];
?>
 
<!DOCTYPE html>
<html>
<head>
  <title>Bob 's Auto Parts - Order Results</title>
</head>
<body>
  <h1>Bob 's Auto Parts</h1>
  <h2>Order Results</h2>
  <?php
  echo "<p>Order processed at ";
  echo date('H:i, jS F Y')."</p>";
  echo "<p>Your order is as follows: </p>";
  echo "$tireqty tires<br />";
  echo $oilqty.' bottles of oil<br />';
  echo $sparkqty." spark plugs<br />"
  ?>
  ---------------------------------------------------<br />
  <?php
  $testHeredoc = <<< EOF
  line 1  
  line 2  
  line 3  
EOF;
  echo "$testHeredoc"."<br />";
  ?>
  ---------------------------------------------------<br />
  <?php
  echo "About Comment:";
  //Here is a comment.
  #Here is a comment too.
  /*
  Here is multi line comment.
  Here is multi line comment.
   */
  ?>
</body>
</html>

填入数字,然后点击“Submit Order”按钮提交内容。则页面将显示processorder.php经过PHP解析器解析之后生成的html页面,如下所示:

在这个例子中,我们可以学习到以下几点内容:

  1. 在html中嵌入php代码的语法格式为: <?php 代码内容 ?> ,需要注意的是开始符号“<?php”中间不能有空格。
  2. post方法提交的表单内容可以通过php的“$_POST[]”数组按照name获取,也可以通过“$_REQUEST[]”数组获取。这些数组为超级全局变量。
  3. 字符串可以用单引号也可以使用双引号引起来, 也可以用反单引号引起来(反单引号在键盘最左上角,与~是一个键)。
    三种引号作用不同:
  • 单引号内的字符串将被当作纯文本原样输出;
  • 双引号中如果有变量,则会替换成变量的值然后输出文本;
  • 反单引号被叫做执行符,php解析器会先执行反单引号中的内容,将执行之后的结果返回。
  1. 字符串可以使用点号“.”连接在一起。在php中点号是唯一的字符串连接符,相当于java中的“+”。
  2. php中有三种注释方式:分别为类Java的单行注释“//”;类shell的单行注释“#”;类Java的多行注释“/**/”。
    6.php中所有的变量使用时都是以“$”打头的, 并且变量使用时不需要提前声明。
    而且变量的类型也可以随时改变,这取决于赋值给变量的值的类型。php变量的类型是在每一次赋值时确定和改变的。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,093评论 0 3
  • 1、PHP语言的一大优势是跨平台,什么是跨平台?一、PHP基础: PHP的运行环境最优搭配为Apache+MySQ...
    __书山有路__阅读 1,475评论 0 15
  • 每个人都是智慧的,有的打开了,有的还在串联,有的需要激活。我喜欢听她人的故事,学了NLP之后,听故事都不同了。在故...
    智爱189阅读 542评论 0 7
  • 秋叶 轻轻地, 将你的名字刻在秋叶, 飘向远方 教室 在教室的一角, 我静静地, 看你飘逸的发 不喜欢 我不喜欢你...
    瘦瘦的小猪阅读 203评论 0 3
  • 这是发生在我爸爸身上的真实事件。 我爸爸小的时候特别爱打架,人家欺负他——打;人家欺负他朋友——打;人家欺负别人—...
    梦楠依旧笑春风阅读 514评论 9 2