我正在编写一个基本的CMS系统并且遇到了看似简单的事情 - 但是开始让我感到沮丧。!
我正在尝试通过选择选项字段传递数组,以填充我可以保存帖子的类别列表。
我有一个'帖子'表格,其中包含3个字段。标题,内容和类别ID(CatID)。
当用户创建帖子时,他们可以使用下拉列表选择他们希望分配分配的帖子的类别 - (这是使用其他表单填充的。)
所以技术位; -
MySQL DB: -
categories = catname(char60 PRIMARY),catid(INT10,AI) posts = id(bigint20 PRIMARY),catid(int10 PRIMARY),title(text),content(varchar255)
类别填充示例:catname = Home / catid = 1 ... etc
Output.php;
<?php
function display_post_form($post = '') {
$edit = is_array($post);
?>
<form action="<?php echo $edit ? 'edit.php' : 'add.php' ; ?>" method="post">
<table border="0">
<tr>
<td> Title:</td>
<td> <input type="text" name="title" value="<?php echo $edit ? $post['title'] : '' ; ?>" size="60" /> </td>
</tr><tr>
<td> Content:</td>
<td> <textarea id="editor1" name="content" value="<?php echo $edit ? $post['content'] : '' ; ?>"> </textarea> </td>
</tr><tr>
<td> Category:</td>
<td><select name="catid">
<?php
$cat_array = get_categories($catid, $catname);
foreach($cat_array as $thiscat) {
echo "<option value=\"".$thiscat['catid']."\" ";
if (($edit) && ($thiscat['catid'] == $post['catid'])) {
echo " selected";
}
echo ">".$thiscat['catname']."</option>";
}
?>
</select>
</td>
</tr><tr>
<td> Button:</td>
<td <?php if (!$edit) { echo "colspan=2"; } ?> align="center">
<?php
if ($edit)
echo "<input type=\"hidden\" name=\"_id\" value=\"". $post['id'] ."\" />";
?>
<input type="submit" value="<?php echo $edit ? 'Update' : 'Add' ; ?> Post" />
</form></td>
</td>
</tr>
</table>
</form>
<?php
}
?>
Functions.php;
function get_categories($catid, $catname) {
$conn = db_connect();
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL " .mysqli_connect_error();
}
$sql = "SELECT catname, catid FROM categories";
$result = mysqli_query($conn, $sql) or die(" Could not query database");
while($row = mysqli_fetch_assoc($result)) {
printf("\n %s %s |\n",$row["catname"],$row["catid"]);
}
mysqli_close($conn);
}
我可以调用“get_cattegories()
”函数,该函数生成类别的平面数据及其各自的ID。然后我将它与Output.php文件中的Select Option字段相结合,它不会生成任何内容。
任何人都可以提供一些有用的提示或建议吗?非常感谢:))
答案 0 :(得分:2)
您没有返回数组,而是将字符串打印到输出。更改printf返回:
function get_categories($catid, $catname) {
$conn = db_connect();
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL " .mysqli_connect_error();
}
$sql = "SELECT catname, catid FROM categories";
$result = mysqli_query($conn, $sql) or die(" Could not query database");
$categories = array();
while($row = mysqli_fetch_assoc($result)) {
$categories[] = $row;
}
mysqli_close($conn);
return $categories;
}
此外,我同意对您的问题的评论。这些论点毫无用处。
你也可以重构代码,实际上......很多。将mysql_connect()移动到另一个地方,可能是在脚本的开头。
我建议使用一些框架。我认为KohanaPHP将是一个良好的开端。您将了解架构和一些设计模式。保持良好的工作并提高你的技能; - )