美好的一天,
我有一个代码从数据库中读取用户并将它们放在下拉菜单中:
<?php
mysql_connect('', '', '');
mysql_select_db ("");
$sql = "SELECT id,name FROM jos_users";
$result = mysql_query($sql);
echo "<select name='deelnemers' onchange='copyId2textinput(this);'>";
while ($row = mysql_fetch_array($result)) {
echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>";
}
echo "</select>";
?>
现在我有另一个名为jos_comprofiler的数据库,同时还有一个ID和一个头像(图像)。
我想知道是否有人给我一些建议来比较2个表中的ID然后显示图片。
例如,如果我点击下拉菜单中的某个用户,则必须查看是否有ID与其他表匹配,如果有,请显示“avatar”中的图片。
感谢您的帮助,请原谅我的英语不好!
答案 0 :(得分:1)
查询可以是:
SELECT `ju`.`id`, `ju`.`name`, `jcp`.`avatar` FROM `jos_users` as `ju`
LEFT JOIN `jos_comprofiler` as `jcp` ON (`ju`.`id` = `jcp`.`id`)
这里我们使用左连接,这意味着每个jos_users都不需要存在jos_comprofiler。在这些情况下,字段“avatar”将为NULL。
然后你在行中有'avatar'元素,它可以是NULL或值。
if($row['avatar'] != NULL) echo "<img src=\"".$row['avatar']."\">";
祝你好运
答案 1 :(得分:0)
会有一些方法,但我会快速展示一个。
<?php
mysql_connect('', '', '');
mysql_select_db ("");
$sql = "SELECT u.id, name, avatar FROM jos_users AS u LEFT JOIN jos_comprofiler USING(id)";
$result = mysql_query($sql);
echo "<div id='imgContainer'></div>";
echo "<select name='deelnemers' onchange='showAvatar(this.value);'>";
$avatars = array();
while ($row = mysql_fetch_array($result)) {
if($row['avatar']){
$avatars[$row['id']] = $row['avatar'];
}
echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>";
}
echo "</select>";
?>
<script>
var avatars = <?=json_encode($avatars)?>;
//alert(avatars[5]);
var avatarContainer = document.getElementById('imgContainer');
function showAvatar(id) {
if(avatars[id]===undefined) return false;
avatarContainer.innerHTML = '<img src="/path/'+avatars[id]+'" />';
}
</script>
这应该可行,对代码进行一些修改:img path等。