运行带变量的PHP循环
为解决方案搜索 - 找不到任何东西。也许我用错了词。运行带变量的PHP循环
我尝试拆分服务器端操作和html结构。所以我做了两个不同的文件,第一个是index.php
,然后是operation.php
。
里面的operation.php的我做了一个mysqli的查询和获取的MySQL表的内容分成不同的变量:
$query = "SELECT * FROM work";
if ($result = $mysqli->query($query)) {
while ($row = $result->fetch_assoc()) {
$title = $row["title"];
$desc = $row["desc"];
$id = $row["id"];
$date = $row["date"];
$time = $row["time"];
$kat = $row["kat"];
$user = $row["user"];
}
$result->free();
}
$mysqli->close();
?>
现在,我试图通过包括operation.php
,并用它在index.php
使用此像
<div><?php echo $title ?></div>
一切正常,但我想循环这个div,并得到一个<div>
数据库中的每一个“标题”行。
这怎么可能?
在此先感谢。
嗯,你可以在上面
$rows = array();
...
while ($row = $result->fetch_assoc()) {
$rows[] = $row;
}
....
foreach($rows as $row) {
echo '<div>' . $row['title'] . '</div>';
}
这可能是一个解决方案声明数组。
在另一方面,如果你想的逻辑和观点分开,你可以看看MVC设计模式,或使用模板引擎(如桂枝例如)
什么模板引擎允许你做的是这样的事情(未测试;-)
$variables = array();
while ($row = $result->fetch_assoc()) {
$variables['rows'][] = $row;
}
$twig->render('index.html.twig', $variables);
,独立的index.html.twig可以使用模板语言
...
<body>
{% for row in rows %}
<div>{{ row.title }}</div>
{% endfor %}
</body>
我希望这帮助:)
谢谢! 我是新来的PHP,并试图使用你的代码 - 但我得到一个错误,服务器无法获取mysqli结果。错误在哪里?我错了什么? – Eric 2014-10-17 13:27:19
我用你的代码的一部分来说明你可以采取的另一种路径。 接下来,您需要用于模板工作的树枝库。 如果你是PHP的新手,编程这些基础知识可能是非常有益的,但也有很高的学习曲线。 我建议你从一个框架开始,为你做所有这些事情。 Populair框架例如Symfony,CakePHP,Kohana,Laravel等等。 这些框架在ususally有很好的教程如何去。 http://laravel.com/docs/4.2/quick http://kohanaframework.org/3。3/guide/kohana/install etcetera – Dennis 2014-10-17 13:40:50
当您掌握使用框架的时候,您可以查看实际运行框架的代码,并查看它们如何解决特定问题,并从中学习,创建您自己的框架模块,处理框架项目中的错误等等。 此外,我强烈建议加入一个PHP用户组。我看到你来自斯图加特,我发现了这个:http://www.phpugs.de/ 通常有不同经验水平的人在那里。跟着一个谈话,跟一些人交谈,这通常可以给你一个PHP入门和一般编程。 – Dennis 2014-10-17 13:44:23
在operation.php中格式化输出,除非您想要将所有数据检索为数组,然后在格式化时循环。 – 2014-10-17 13:03:52
我认为这将是非常舒服的分裂的PHP和HTML,所以我想在operation.php避免HTML。编辑:但我会改变主意,如果这种方式更好! – Eric 2014-10-17 13:07:35
我同意,为了查看您将不得不* *处理。我们一直这么做 - 将查询结果存储在一个对象中,然后在index.php中循环查看该对象。真的,你不应该在operation.php中循环,只是返回结果。然后遍历index.php中的结果。它会更清洁,你的代码将可重用。 – 2014-10-17 13:09:24