2010-09-09 54 views
0

我想提出一个autosuggesting功能,当用户在它存储在现场写了一句:PHP:搜索一个表,而在另一个

$queryString = $db->real_escape_string($_POST['queryString']); 

我希望它自动提示后,用户朋友。用户的朋友在users_friends中,但只有朋友的ID。现在他们的full_name在表格“用户”中。我希望当你搜索它应该在用户的full_name +检查是否与用户的朋友。如你所知,我不希望我的所有用户都知道彼此的编号,例如写作“52”“233”,但要搜索他们的全名。

UPDATE:

我知道试着这样做: $查询= $ DB->查询(“选择uf.bID 来自用户的朋友,users_friends UF WHERE uf.uID = '1' AND uf.type ='friend'AND friends.full_name LIKE'$ queryString%'LIMIT 10;“ );

它从用户朋友那里选择用户标识为1且是朋友的bID。

现在我开始看到我认为的一些结果。当我编写一个名为im的朋友时,我得到了用户的id(存储在bID中的id)。现在我只需要抢在FULL_NAME“用户”其中id =投标..

table: users 
id | full_name 

table: users_friends 
id | uID | bID 

所以这一切的结论(努力做出更好的总结,是为了让你更好的理解:)

当您在搜索字段中输入例如Jack时,$ queryString现在是“jack”。然后,它将“Jack”(用户名中的full_name),如果他在那里存在,抓住他的id(用户中的id),然后将其与uID是$ USER的bID(在users_friends中)进行匹配; ($ user是当前登录用户的ID)

希望这个更容易理解,如果这些东西不清楚,请留下评论。

+0

您使用的数据库是? MySQL的? – Lekensteyn 2010-09-09 17:30:39

+0

是的mysql和编码与PHP – Karem 2010-09-09 17:38:37

回答

1

所以,我看着办吧,你已经得到了当前用户的ID在$ USER和$查询的查询字符串字符串,而你想要的是基于$ queryString的用户朋友的名字,对吗?

因此,假设数据库的模式是因为你已经把:

table: users 
id | full_name 

table: users_friends 
id | uID | bID 

看是否有此查询工作为你,然后:

SELECT users.full_name 
FROM users INNER JOIN users_friends ON users.id=users_friends.uID 
WHERE bID=$USER AND users.full_name LIKE '$queryString%' 
LIMIT 10; 

其中$ USER和$的queryString是你的变量。

+0

你摇滚,谢谢你一百万! – Karem 2010-09-13 14:20:22

0

你想从多个表中读取数据?

SELECT table1.id,table2.name FROM表1,表2 WHERE ...

我的英语不太好明白了一切:d

0

我不明白你的问题 但是你可以使用此查询:

mysql_query("SELECT * FROM table_one, table_two WHERE table_one.id = table_two.id"); 
相关问题