You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何无法展示合作社用户全部动态?代码仅显首条且重复循环

问题分析与解决方案

你的代码存在两个核心问题,导致只显示第一条动态且出现重复循环的情况:

1. 查询函数仅返回单条数据

你的viewCoopNewsfeed函数使用了fetch()方法,它只会从结果集中取出第一条匹配的记录。要获取合作社的所有动态,你需要改用fetchAll()方法,它会返回符合条件的所有记录组成的数组,无匹配数据时则返回空数组。

修正后的查询函数:

function viewCoopNewsfeed($coopID) {
    try {
        $connection = connect();
        $statement = $connection->prepare("SELECT * FROM newsfeed WHERE coopID = :coopID");
        $statement->bindParam(":coopID", $coopID);
        $statement->execute();
        $statement->setFetchMode(PDO::FETCH_ASSOC);
        // 使用fetchAll获取所有符合条件的记录
        return $statement->fetchAll();
    } catch (PDOException $exception) {
        die("Error: " . $exception->getMessage());
    }
}

2. 视图循环中错误引用数组变量

在foreach循环里,你错误地用数组名$coopNewsfeeds访问字段(比如$coopNewsfeeds['photo']),而不是循环的单个元素$coopNewsfeed。此外还有两个小问题需要修正:

  • <textarea>标签不需要value属性,内容应该直接放在标签内部
  • 表单标签<form>没有闭合,会导致HTML结构混乱

修正后的视图代码:

<?php if(!empty($coopNewsfeeds)) {
    foreach($coopNewsfeeds as $coopNewsfeed) {
?>
<form method="post" enctype="multipart/form-data">
    <!-- 传递动态ID,用于后续修改/删除操作 -->
    <input type="hidden" name="newsfeed_id" value="<?=$coopNewsfeed['id']?>">
    
    <div class="row">
        <div class="col-md-6">
            <div class="form-group">
                <label>Photo</label>
                <img class="profile-pic" src="<?=$coopNewsfeed['photo']?>"/>
            </div>
        </div>
        <!-- 建议用CSS margin替代大量<br>,更利于维护 -->
        <br><br><br><br><br><br><br><br><br><br>
    </div>
    <div class="row">
        <div class="col-md-6">
            <div class="form-group">
                <label>Title</label>
                <input type="text" class="form-control" placeholder="Title" name="title" value="<?=$coopNewsfeed['title']?>" required>
            </div>
        </div>
        <div class="col-md-6">
            <div class="form-group">
                <label>Body</label>
                <textarea class="form-control" name="Body" placeholder="Body" id="" cols="30" rows="2">
                    <?=$coopNewsfeed['Body']?>
                </textarea>
            </div>
        </div>
    </div>
    <!-- 添加修改/删除按钮,根据需求调整逻辑 -->
    <button type="submit" name="action" value="edit">修改</button>
    <button type="submit" name="action" value="delete">删除</button>
</form>
<?php }
}?>

额外提示

  • 表单中添加的隐藏字段newsfeed_id是为了让后端识别要操作的具体动态,你需要在处理提交的后端代码中,根据这个ID执行对应的修改或删除逻辑。
  • 大量的<br>标签不利于页面维护,建议用CSS的margin属性来控制元素之间的间距。

内容的提问来源于stack exchange,提问作者John Macasinag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:31:20