如何设置PHP输出的样式?
我正在学习php,并制作了一个简单的应用程序,将人名保存到数据库中,然后将所有保存的人名放到页面下方的列表中 这是获取名称的代码:如何设置PHP输出的样式?,php,sql,echo,Php,Sql,Echo,我正在学习php,并制作了一个简单的应用程序,将人名保存到数据库中,然后将所有保存的人名放到页面下方的列表中 这是获取名称的代码:echo“$row[Name]” 我在成绩类别上加了一个div,这样我就可以设计它了。在这一点上,我只想把结果放在中心。在使用css将其样式设置为居中后,查看页面源,每个被回送的名称周围都有一个div,其中包含结果类。它们都以我想要的方式为中心,这很好,但这似乎不是最好的方法,因为数据库中的每个新名称都会创建一个新的div(现在有18个div,太多了!)。我希望只创建
echo“$row[Name]”代码>
我在成绩类别上加了一个div,这样我就可以设计它了。在这一点上,我只想把结果放在中心。在使用css将其样式设置为居中后,查看页面源,每个被回送的名称周围都有一个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("")
?>
由于您在while循环中输出div,因此每个结果都将获得一个新的div。只需将div移出循环:
echo "<div class=\"results\">";
while($row = mysql_fetch_array($results)){
echo $row['Name'];
}
echo "</div>";
echo”“;
while($row=mysql\u fetch\u数组($results)){
echo$row['Name'];
}
回声“;
请注意,您应该始终引用密钥。使用$row['Name']
而不是$row[Name]
(如果Name是一个已定义的常量,则显然不是)。我认为最好使用一些变量来存储输出:
$out .= "<div class=\"results\">";
while($row = mysql_fetch_array($results)){
$out .= $row[Name]."<br />";
}
$out .= "</div>";
echo $out;
$out.=”;
while($row=mysql\u fetch\u数组($results)){
$out.=$row[Name]。“
”;
}
$out.=”;
回音$out;
您可以将div创建与结果回显分开:
echo';
while($row=mysql\u fetch\u数组($results)){
echo$row['Name']。
;
}
回声';
如果您不想要div
如果没有结果(没有朋友),您可以使用不要让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>
-
>使用一些变量来存储输出。为什么?@Boann在这种情况下,按正确的顺序打印每件事要容易得多。例如:如果您需要在输出的开头添加something
,但是这个something
只能在脚本的末尾计算。一些“总”价值等,也是一个有趣的方式来绕过它谢谢。我也将尝试这种方法。可能使用echo$row['Name']。
代码>在每个字符后添加换行符result@BillyMoon我错过了。谢谢,谢谢!我一定会把它放到我的应用程序中,当表中有0行时,它会显示“列表为空”或类似的内容。谢谢,我会在搞乱第一个家伙说的话后尝试这个。这是一个不错的选择,因为我想要一个名单。太棒了,谢谢。正是我想要的。另外,如果名称用倒逗号$row['name']
开头,则无法加载页面(出现服务器错误),但如果没有它们,则可以正常加载。现在它与它们一起工作,我认为这是因为您的代码在同一语句中没有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>