gpt4 book ai didi

php - 读取逗号分隔的数据列,并使用结果显示不同表中的行

转载 作者:行者123 更新时间:2023-11-29 22:54:45 24 4
gpt4 key购买 nike

目前对于获得我所追求的期望结果的最佳方法有点困惑。

因此,在我的用户表中,有一个列名称“gshowcase”,该字段将包含一系列用逗号分隔的数字。

这些数字指的是我的“游戏”表中的 UID(自动增量)。

因此,如果用户拥有游戏(“4,5,9,15,25”),它将在游戏表的配置文件中显示这些行。

不确定我是否已经很好地描述了这一点,哈哈

编辑-----------------------------------------我哪里出错了???

 function getGrelationsList() {
// The query to select the gamesid from the relations table
$query = sprintf("SELECT `game` FROM `grelations` WHERE `user` = '%s'", $this->db->real_escape_string($this->id));

// Run the query
$result = $this->db->query($query);

// The array to store the gameids the user plays
$gamesplayed = array();
while($row = $result->fetch_assoc()) {
$gamesplayed[] = $row['game'];

// Close the query
$result->close();

// Return the games info list (e.g: 13,22,19)
return implode(',', $gamesplayed);
}


function getGshowcase() {
// The query to select Games info based on gameids returned in previous function

$query = sprintf("SELECT `idu`, `title`, `image`, `url`, `desc` FROM `games` WHERE `idu` = $gamesplayed");

// Run the query
$result = $this->db->query($query);

// The array to store the games info
$gshowcase = array();
while($row = $result->fetch_assoc()) {
$gshowcase[] = $row['idu','title','image','url','desc'];
}

// Close the query
$result->close();

// Return the games info list (e.g: 13,22,19)
return implode(',', $gshowcase);
}

function sidebarGames($type, $for) {
global $LNG;

$result = $this->Gshowcase;
$title = $LNG['subshowcase'];
$r = 'showcase';


// If the select was made

if($for == 0) {
$i = 0;
$output = '<div class="sidebar-container widget-'.$r.'"><div class="sidebar-content"><div class="sidebar-header"><a href="'.$this->url.'/'.((!empty($this->profile)) ? $this->profile : $this->username).'&r='.$r.'">'.$title.' <span class="sidebar-header-light">('.$result[1].')</span></a></div>';
foreach($result[0] as $row) {
if($i == 6) break; // Display only the last 6 Games
// Add the elements to the array
$output .= '<div class="sidebar-subscriptions"><div class="sidebar-title-container"><a href="'.$row['url'].'"><div class="sidebar-title-name">'.$row['title'].'</div></a></div><a href="'.$row1['url'].'"><img src="'.$this->url.'/thumb.php?src='.$row['image'].'&t=a&w=112&h=112" /></a></div>';
$i++;
}
$output .= '</div></div>';
} elseif($for == 1) {
$output = '<strong><a href="'.$this->url.'/'.((!empty($this->profile)) ? $this->profile : $this->username).'&r='.$r.'">'.$result[1].' '.$LNG['people'].'</strong></a>';
}
return $output;
}

问候里斯

最佳答案

可以改进您选择的架构设计,以有效解决您的问题。一定有MANY-TO-MANY userDB 和 gamesDB 之间的关系(假设这些是表而不是数据库:P)。

使用多对多方法,您将拥有中间表,例如 user_games对于映射,将有 userDB's primary key and gamesDB's primary key作为自己的复合主键。

现在我正在使用 java 进行 ORM 工作。使用这种模式我可以直接拥有 list of gamesDB userDB 实例内的对象。否则,我可以为用户迭代 user_games 中的每一行,并为每个关联的游戏准备对象,并将此游戏列表设置到 userDB 的对象中。

现在将此 userDB 的对象转换为 JSON使用任何开源库并​​将其返回给客户端。返回的json可能是以下格式

{
'userid' : 1,
//other user info...
games_list : [
{
'idu' : 1,
'title': 'Counter strike...',
//other info...
},
{
'idu' : 2,
'title': 'H1Z1',
//other info...
},
//Other associated games
]
}

现在在javascript您可以轻松迭代此 json 并渲染 View 。

<小时/>

如果无法更改数据库架构。您仍然可以使用这种方法。但现在你需要先创建一个array通过拆分 gshowcase 获得 game_ids用逗号,然后迭代每个 id 并从数据库获取游戏行并从中准备游戏对象。

关于php - 读取逗号分隔的数据列,并使用结果显示不同表中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28758507/

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