2013-06-24 77 views
2

我正在创建一个页面,它从论坛上获取注册成员的联系信息。我试图检索自定义字段时遇到了一些问题。对于大学和航班,使用下拉菜单,以便用户可以从特定列表中进行选择。但是论坛使用3个不同的表来存储数据。 这是表用php检索数据库

db mock up http://www.emuas.co.uk/images/db_mock_up.png

此刻我得到的单查询和航班查询航班单向的一小部分,但结果是毫无关系的USER_ID。不知道如何改变这一点。

$user = "SELECT * 
    FROM profile_fields_data 
    JOIN users 
    ON profile_fields_data.user_id = users.user_id 
    ORDER BY users.username"; 

$uni = "SELECT * 
    FROM profile_fields_data 
    JOIN users 
    ON profile_fields_data.user_id = users.user_id 
    JOIN profile_fields_lang 
    ON profile_fields_data.pf_university = profile_fields_lang.option_id 
    WHERE field_id =4 
    ORDER BY users.username"; 

$flight = "SELECT * 
    FROM profile_fields_data 
    JOIN users 
    ON profile_fields_data.user_id = users.user_id 
    JOIN profile_fields_lang 
    ON profile_fields_data.pf_flight = profile_fields_lang.option_id 
    WHERE field_id =3 
    ORDER BY users.username"; 

$userdata = $db->sql_query($user); 
$unidata = $db->sql_query($uni); 
$flightdata = $db->sql_query($flight); 
while($data = $db->sql_fetchrow($userdata)) 
{ 
    $datauni = $db->sql_fetchrow($unidata); 
    $dataflight = $db->sql_fetchrow($flightdata); 
    echo "<tr> 
    <td> <a href='http://emuas.co.uk/forum/memberlist.php?mode=viewprofile&u=" . $data['user_id'] . "'>" . $data['username'] . "</a></td> 
    <td> <a href='mailto:" . $data['user_email'] . "'>" . $data['user_email'] . "</a> </td> 
    <td>" . $data['pf_contact_number'] . "</td> 
    <td>" . $data['user_birthday'] . "</td> 
    <td>" . $data['pf_service_number'] . "</td> 
    <td>" . $datauni['lang_value'] . "</td> 
    <td>" . $dataflight['lang_value'] . "</td> 
    <td>" . $data['pf_secondary_duty'] . "</td> 
    </tr>"; 

非常感谢

+0

嗨拜伦,所以你需要一个SQL查询来选择一个特定的user_id上面的所有信息?查看一个体面的SQL手册(谷歌将帮助)并查看'JOIN',尝试一下,如果你需要支持,发布你的代码 - 只有SQL - 然后问一个问题!祝好运并玩得开心点! – michi

+0

既然你有两个查询users.user_id你可以加入他们吗? – ethrbunny

+0

子句阻止我做这件事不同吗? –

回答

0

发现问题。当论坛得到option_id的数据时,它将值加1。我已经改变了它考虑到这一点