2010-09-09 8 views
0

je fais une fonction autosuggesting, lorsque l'utilisateur écrit quelque chose dans le domaine qu'il stocke dans:PHP: Rechercher dans une table et dans un autre

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

Je veux qu'il autosuggest après les amis des utilisateurs. Les amis de l'utilisateur sont dans users_friends, mais seulement l'identifiant de l'ami. Maintenant, leur nom complet est dans la table "users". Et je veux quand vous recherchez il devrait dans les utilisateurs pour le nom complet + vérifier si ses amis avec l'utilisateur.

Comme vous pouvez le comprendre, je ne m'attends pas à ce que tous mes utilisateurs se connaissent les uns les autres en écrivant ainsi "52" "233", mais en recherchant leur nom complet.

MISE À JOUR:

Je sais essayé de faire ceci: $ query = $ db-> query ("SELECT uf.bID de ses amis utilisateurs, users_friends uf OÙ uf.uID = '1' ET uf.type = 'ami' ET friends.full_name LIKE '$ queryString%' LIMIT 10; " );

Il sélectionne le bID, à partir des utilisateurs amis où l'ID utilisateur est 1 et sont amis.

Maintenant, je commence à voir des résultats, je pense. Quand j'écris un full_name avec lequel je suis ami, j'obtiens l'identifiant de l'utilisateur (l'identifiant qui est stocké dans le bID). Maintenant, j'ai juste besoin de saisir le full_name dans les « utilisateurs » où id = Bid ​​..

table: users 
id | full_name 

table: users_friends 
id | uID | bID 

Donc conclusion de tout cela (en essayant de faire un meilleur résumé afin de vous faire mieux comprendre:)

Lorsque vous tapez par exemple Jack dans le champ de recherche, le $ queryString est maintenant "jack". Ensuite, il prend "Jack" (nom complet dans les utilisateurs), saisissant son id (id dans les utilisateurs), s'il existe là bien sûr, et ensuite le faire correspondre avec bID (dans users_friends) où uID est $ USER; ($ user est l'utilisateur actuel qui est connecté.)

Espérons que ce fut plus facile à comprendre, s'il vous plaît laissez un commentaire si theres quelque chose n'est pas clair.

+0

Quelle base de données utilisez-vous? MySQL? – Lekensteyn

+0

oui mysql et codage avec php – Karem

Répondre

1

donc, comme je le figure, vous avez l'ID de l'utilisateur actuel $ uSER et sa chaîne de requête dans la requête $ Chaîne, et ce que vous voulez, ce sont les noms des amis de l'utilisateur basés sur $ queryString, ai-je raison?

Donc, en supposant que le schéma de la base de données est que vous avez mis:

table: users 
id | full_name 

table: users_friends 
id | uID | bID 

Voir si cette requête fonctionne pour vous, alors:

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; 

Où $ USER et queryString $ sont vos variables

+0

Vous rock, merci un million! – Karem

0

Voulez-vous lire les données de plusieurs tables à la fois?

SELECT table1.id, table2.name DE table1, table2 WHERE ...

Mon anglais est pas très bon pour tout comprendre: D

0

Je ne l'ai pas compris votre question Mais vous pouvez utiliser cette requête:

mysql_query("SELECT * FROM table_one, table_two WHERE table_one.id = table_two.id"); 
Questions connexes