gpt4 book ai didi

php - 将数据库中的项目显示到具有不同项目的不同数据的 ListView 中

转载 作者:行者123 更新时间:2023-11-29 21:15:19 25 4
gpt4 key购买 nike

我目前正在制作一个简单的 Android 论坛。我可以成功地从数据库中保存和检索数据(来自 000webhost 的 phpMyAdmin)。我还可以将检索到的数据显示到 listView 中。

由于这是一个论坛,不同的项目(主题)应该有不同的回复。所以我有 2 个不同的表,一个是 ForumData (用于存储主题),另一个是 ReplyData (用于存储回复)。两个表都有一个 topic_id,用于引用不同的主题,例如ReplyData 中 topic_id = 3 的回复与 ForumData 中 topic_id = 3 相关。

正常情况下,topic_id = 3的回复只有在点击主题3时才会显示。但是每次我点击不同的主题时,无论topic_id是什么,都会显示所有回复。那么,如何才能只显示相关主题中的相关回复呢?我应该在 php 文件中还是应用程序中执行此操作?

这是我检索回复数据的 php 文件:

<?php

//personal data hidden
$con = mysql_connect();
mysql_select_db('db', $con);

$r = mysql_query('SELECT ReplyData.reply_user, ReplyData.reply_content, ReplyData.reply_datetime FROM
ReplyData INNER JOIN ForumData ON ForumData.topic_id = ReplyData.topic_id');
$out = array();

while($row = mysql_fetch_array($r)){
$out[] = $row;
}

print(json_encode($out));
mysql_close($con);

?>

这是我的 listView 适配器:

public class MyListAdapter extends ArrayAdapter<ReplyItemList> {
public MyListAdapter() {
super(ContentPage.this, R.layout.layout_reply, itemList);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// make sure we have a view to work with
View itemView = convertView;
if (itemView == null) {
itemView = getLayoutInflater().inflate(R.layout.layout_reply, parent, false);
}

// find the activity to work with
ReplyItemList currentActivity = itemList.get(position);
//get current time and date

// fill the view
TextView makeReplyUser = (TextView) itemView.findViewById(R.id.tvRespondent);
makeReplyUser.setText("Re: " + currentActivity.getRespondent() + " ");
TextView makeReplyContent = (TextView) itemView.findViewById(R.id.tvReplyContent);
makeReplyContent.setText(currentActivity.getReplyContent());
TextView makeReplyDatetime = (TextView) itemView.findViewById(R.id.tvReplyDatetime);
makeReplyDatetime.setText("(" + currentActivity.getDateTime() + ")");

return itemView;
}
}

这是listView填充方法:

private void populateListView() {
adapter = new MyListAdapter();
ListView list = (ListView) findViewById(R.id.replyList);
list.setAdapter(adapter);
}

Log.i(fetchedTopicID + " " + respondent + " " + content + " " + datetime + " ", "json result");

最佳答案

尝试这个查询。如果两个表中的字段名称不同,还需提供 tablename.field_name。例如; ReplyData.reply_user 或 ForumData.reply_content。

SELECT reply_user, reply_content, reply_datetime FROM
ReplyData INNER JOIN ForumData ON ForumData.topic_id = ReplyData.topic_id

关于php - 将数据库中的项目显示到具有不同项目的不同数据的 ListView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36003227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com