如何设置PHP输出的样式?

时间:2011-11-21 07:52:18

标签: php sql echo

我正在学习php并制作了一个简单的应用程序,将人名保存到数据库中,然后将所有保存的名称拉到页面下方的列表中。

这是获取名称的代码:echo "<div class=\"results\"> $row[Name] </div>";

我在结果类中添加了一个div,以便我可以设置样式。在这一点上,我想做的就是将结果集中在一起。在使用css进行样式设置以使其居中后,查看页面源,每个echo'ed的名称都有一个div与结果类。它们都像我想要的那样居中,但这似乎不是最好的方法,因为会为数据库中的每个新名称创建一个新的div(现在有18个div。太多了!)我希望只创造一个div,但我显然是错的。

那么,是否有可能在html标记中预先创建div而没有任何内容并将名称回显到div中?或者你认为有一种方法可以让它一次全部输出,所以它都在一个div内?

以下是代码的其余部分,以便您了解发生了什么:

<?php 
$connect = mysql_connect("localhost","user","0123");
if(!$connect){
    die("Failed to connect: " . mysql_error());
}

if(!mysql_select_db("Test")) {
    die("Failed to select database: " . mysql_error());
}

$results = mysql_query("SELECT * FROM Friends");

while($row = mysql_fetch_array($results)){
    echo "<div class=\"results\"> $row[Name] </div>";
}

if ($_POST[name] !="") { $sql="INSERT INTO Friends 
(name) VALUES('$_POST[name]')";

if (!mysql_query($sql,$connect))
  {
  die('Error: ' . mysql_error());
  }
echo "<div id=\"added\"> $_POST[name] added to the database </div>";
}
else die("")

?>

4 个答案:

答案 0 :(得分:4)

由于在while循环中输出div,因此每个结果都会得到一个新的div。只需在循环外移动div:

echo "<div class=\"results\">";
while($row = mysql_fetch_array($results)){
    echo $row['Name'];
}
echo "</div>";

请注意,您应该始终引用您的密钥。使用$row['Name']代替$row[Name](如果Name是定义的常量,则显然不是这样。)

答案 1 :(得分:2)

我认为最好有一些变量来存储输出:

$out .= "<div class=\"results\">";
while($row = mysql_fetch_array($results)){
  $out .= $row[Name]."<br />";
}
$out .= "</div>";

echo $out;

答案 2 :(得分:2)

不要让php输出html标签。它在代码中看起来很糟糕,你的编辑器不会将它识别为html,并且会使它变得很糟糕。一般来说,我建议先做所有的PHP处理,然后在其中制作带有PHP输出的HTML。像这样:

请注意,我已将div替换为ul,因为您的列表似乎更适合ul而不是div 。显然,你可以在HTML中使用你想要的任何标签

<?php
 // do all php stuff here
 $persons = /* get collection from database here */
?>

<html>
 <head>
 </head>
 <body>
  <ul id="ListOfPersons">
   <? foreach ($persons as $person): ?>
    <li>
      <?= $person["Name"] ?>
    </li>
   <? endforeach ?>
  </ul>
 </body>
</html>

答案 3 :(得分:0)

您可以将div创建与结果 echoing 分开:

echo '<div class="results">';
while($row = mysql_fetch_array($results)){
    echo $row['Name'].'<br/>';
}
echo '</div>';

如果您不希望div如果没有结果(没有朋友),您可以使用mysql_num_rows