2013-08-02 24 views
2

我已经查看了其他文章,在这里有关类似的问题,但无法找到答案。如何将外部php文件的输出放置到页面上的特定位置

编辑我一直在玩这个,我想改变我的问题。

我有一个问题,放置从外部的PHP文件回显的输出。

下面是一些示例代码,以证明我的问题 - 这是我的主文件writephp.php

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Test Php </title> 
    <link rel="stylesheet" href="writephp.css"> 
</head> 
<body> 
    <div class="allContent">  
     <?php for($i=0; $i<3; $i++): ?> 
      <div class="commentBox"> 
       <p> Just a box</p> 
      </div> 
     <?php endfor; ?> 
     <a href="write.php?outputHtml">Php output</a>  
    </div> 
</body> 
</html> 

现在我可以用CSS中心这样的:

.allContent { 
width: 400px; 
margin-left: auto; 
margin-right: auto; 
font-family: Arial; 
} 
.commentBox { 
border: 1px solid black; 
width: 400px; 
padding: 0px 5px 5px 5px; 
margin-top: 5px; 
} 

所以在HTML文件中的PHP由于php循环在“allConent”div内,所以写出了页面中心的框。

该锚定调用一个外部php文件,将回声一些更多的框。

这个文件看起来是这样的,被称为write.phpwritephp.php是这是从所谓的主文件):

<?php 
if (isset($_GET['outputHtml'])) 
{ 
echo "<p class='allContent commentBox'>" . "This is from external PHP" . "</p>"; 
echo "<p class='allContent commentBox'>" . "This is also from external PHP" . "</p>"; 
include 'writephp.php'; 
} 

output looks like

但是从外部PHP输出的呼应是从上面的输出主要文件 - 其实它放在<!doctype html>标签之前,显然不好。

页面的源代码如下所示:

<p class='commentBox allContent'>This is from external PHP</p 
><p class='allContent commentBox'>This is also from external PHP</p> 
    <!DOCTYPE html> 
    <html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Test Php </title> 
    <link rel="stylesheet" href="writephp.css"> 
</head> 
<body> 
    <div class="allContent">  
         <div class="commentBox"> 
       <p> Just a box</p> 
      </div> 
         <div class="commentBox"> 
       <p> Just a box</p> 
      </div> 
         <div class="commentBox"> 
       <p> Just a box</p> 
      </div> 
     <a href="write.php?outputHtml">Php output</a>  
    </div> 
</body> 

一般来说,我的问题是“我怎么把HTML从外部php文件的任何地方我想在页面上未来?”

+1

**在单个HTML页面上,你永远不能拥有多个具有相同ID的元素**。您究竟如何加载新内容? –

+0

外部php文件使用'include'writephp.php''这是主页面。它的工作原理,但我知道我不应该有多个具有相同ID的元素,这就是为什么我想知道正确的方法是什么。 – user2250892

+0

什么是writephp.php? –

回答

4
<?php 
if (isset($_GET['outputHtml'])) 
{ 
echo "<p class='commentBox'>" . "This is from external PHP" . "</p>"; 
echo "<p class='commentBox'>" . "This is also from external PHP" . "</p>"; 
include 'writephp.php'; 
} 

这在你的write.php是不正确的,看到writephp.php<html><head><body>标签完整的HTML页面,你是呼应了一些<p>标签之后包含其不会使您新的框在页面主体内神奇地出现,您将创建一些无效的标记,在文件开始处的两个<p>,然后是<!DOCTYPE><html>等等。

编辑

关于更新你的问题,现在读“如何从外部php文件输出的地方,页面上的特定位置”

由于@Robert西顿 - 史密斯正确注意到他的回答,使用include将使内容恰好出现在当呼叫提出的观点,所以,如果你想在您的主文件新盒,然后调用include应该是向后,也就是说,你应该包括主文件里面的内容,你可以使用这个例子文件来测试它:

修改write.php只是呼应盒当$ _GET变量存在

<?php 
    if (isset($_GET['outputHtml'])) 
    { 
    echo "<div class='commentBox'>" . "This is from external PHP" . "</div>"; 
    echo "<div class='commentBox'>" . "This is also from external PHP" . "</div>"; 
    } 
?> 

,使包括呼叫在您的主文件writephp.php

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Test Php </title> 
    <link rel="stylesheet" href="writephp.css"> 
</head> 
<body> 
    <div id="allContent"> 
     <?php for($i=0; $i<3; $i++): ?> 
      <div class="commentBox"> 
       <p> Just a box</p> 
      </div> 
     <?php endfor; ?> 
     <?php include 'write.php'?> 
     <a href="writephp.php?outputHtml">Php output</a>  
    </div> 
</body> 
</html> 

这将包括当您点击链接时,您的两个新框在容器内。

此外,您还会注意到,从包含文件中设置样式内容没有什么特别之处,这是因为最终所有标记都呈现为单个HTML页面,所以内容是否从主要页面或包含文件,它会服从任何规则,在你的CSS

+0

谢谢,我从这个答案中了解了一点,但它仍然不存在。我的目标是学习PHP,但我陷入了CSS的形式化。这只是我不理解如何格式化来自外部php代码的html的一个例子。我试着编一个简单的例子,只是输出一些框来演示。所以我的问题仍然是如何正确地做到这一点,当HTML是从外部文件的PHP。 – user2250892

+0

@ user2250892发生了什么? –

+0

@ user2250892你能否详细说明你的用例?有什么框?什么是链接? –

0

首先,你不应该在两个单独的元素上使用ID“allContent”。 ID应该是唯一的。类可以用于设计多个元素的样式。

为什么不把它改为下面的代码?你有没有理由让它们与众不同?

echo '<div class="commentBox"><p>' . 'This is from external PHP' . '</p></div>'; 
echo '<div class="commentBox"><p>' . 'This is also from external PHP' . '</p></div>'; 
+0

我已经有'class ='commentBox'',所以他们拿起那个样式,但是单独他们不是居中;他们没有从“allContent”得到样式 – user2250892

1

的问题是,你是不是产生正确的内容与write.php,可能是由于什么包括实际做一个误区。

所有include()函数的作用是把包含文件的内容,并在您包含它的文件中的点解析它作为PHP。它与剪切和粘贴文件内容的效果几乎相同。只需在你的包含文件中输入你可能输入的内容。

使write.php仅包含生成HTML字符串为您commment盒的功能我会适当地重写很多:

<?PHP 
function commentbox() 
    { 
    $output=""; 
    for($i=0; $i<3; $i++) 
    $output.="<div class='commentBox' id='cb_$i'><p> Just a box</p></div>"; 
    return $output; 
    } 
?> 

您包括()这个在你的PHP文件的顶部,然后调用它的输出任何需要的地方是:

echo commentbox(); 

,或者更好:

创建footer.php文件:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Test Php </title> 
    <link rel="stylesheet" href="writephp.css"> 
</head> 
<body> 
    <div id="allContent"> 
     <?PHP echo $content;?>  
    </div> 
</body> 
</html> 

,你可以用你的项目很容易使用。

这是这样使用:

<?PHP 
include("write.php"); 
$content="whatever"; 
$content.=commentbox(); 
$content.="whateverelse"; 
include("footer.php"); 
?> 

即使我特意去任何麻烦格式化上面的代码,这是很容易找到正在创建的内容,其中和调试。即使使用代码上下文着色,混合PHP和HTML代码也是一个噩梦。找到你想要借用的东西并放到别的地方也很困难。

相关问题