通过选择选项字段传递PHP数组

时间:2014-03-19 23:57:08

标签: php mysql

我正在编写一个基本的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字段相结合,它不会生成任何内容。

任何人都可以提供一些有用的提示或建议吗?非常感谢:))

1 个答案:

答案 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将是一个良好的开端。您将了解架构和一些设计模式。保持良好的工作并提高你的技能; - )