这是我的表的一部分。但我使用"echo"的部分(根据我老板的说法)不是一个好的解决方案。我得用JavaScript来做。我不太明白"echo"有什么问题,有人能解释一下吗?我如何使用JS代替"echo"?
<td>Projekt: </td>
<td><select name="Projekt">
<?php
$result = mysql_query("select name from project");
while($row = mysql_fetch_array($result))
{
echo '<option value="" selected> </option>';
echo '<option value="' .$row['name'] .'">'.$row['name'].'</option>';
}
?>
</select>
</td>
我注意到你的代码中有一些基本的设计缺陷,这些缺陷可能与你的老板要求你做的事情有关。
你真的不应该在你的模板php文件中有数据库查询代码,与你的html代码混在一起。为了避免这种情况,如果您希望在服务器端呈现模板,则应该使用MVC或类似的方法。有像Silex或Symfony这样的框架和库可以帮助你完成大部分工作。无论如何,为了用Javascript呈现这些选项,您需要首先解决将它们传输到用户浏览器的问题(正如其他用户已经评论的那样)。您可以使用jQuery轻松地进行AJAX调用(如果您搜索它,可以找到大量关于此的文档和教程),但假设您已经将它们存储在Javascript变量中,您可以编写如下内容(它使用jQuery):
<td>Projekt: </td>
<td>
<select name="Projekt" id="projects">
<option value="" selected> </option>
</select>
</td>
<script>
// projects are stored in a variable named projects
var select = $('#projects');
projects.forEach(function(project) {
select.append('<option value="'+project+'">'+project+'</option>');
});
</script>
也有很多Javascript框架和库可以帮助你实现这种行为,让你使用模板、数据绑定和其他有用的东西,比如AngularJS、Backbone等。
编码快乐!
这是PHP,除了回显HTML标签之外,这段代码没有任何问题,这可能是他的意思。试试这个:
<td>Projekt: </td>
<td><select name="Projekt">
<option value="" selected="">
<?php
$result = mysql_query("select name from project");
while($row = mysql_fetch_array($result)): ?>
<option value="<?php echo $row['name'] ?>"><?php echo $row['name'] ?></option>
<?php endwhile; ?>
</select>
</td>
还要注意我是如何移动<option value="" selected="">
的。如果它在while
循环中,你会得到很多,我怀疑这不是你想要的:)