2014-02-09 79 views
0

我剛開始使用PHP編程,並有以下場景;PHP T9手機鍵盤

  1. 我的聯繫人列表保存在MySQL數據庫(FNAME,LNAME,電話)=做
  2. 採取用戶輸入想象它從手機鍵盤.i.e服用。 'abc'對應於1,'def對應於2等。
  3. 假設用戶輸入「738」...這將對應於'PET','REU'也是如此。
  4. php代碼假設要做的是獲取數字形式的用戶輸入,並通過mysql數據庫搜索姓氏,以查看它是否與任何姓名相對應,最後列出這些聯繫人(s) 。但是,由於'SET'也是738 BUT的有效組合,如果它不存在於數據庫中,它將不會顯示。

問題:如何以數字輸入並生成所有可能的組合以匹配數據庫?我想我將不得不使用數組來存儲移動鍵盤映射,並以某種方式做排列的東西。 任何幫助將不勝感激。

+0

這裏真正的問題是你是怎麼從2002年管理時間旅行? –

+0

我想你是暗示我在想念舊學校。 :) –

+1

請顯示一些努力。提供您已經嘗試過(並且失敗)的短重複代碼。 –

回答

1

我很想聽到更多有關使用情況下這仍然是在2014年

如果你真的想這樣做,你可以列舉所有的可能性和搜索這種方式,如編程身價:

222 = AAA, AAB, AAC, ABA, ABB, ABC, ACA, ACB, ACC, BAA, BAB, BAC, BBA, BBB, BBC, BCA, BCB, BCC, CAA, CAB, CAC, CBA, CBB, CBC, CCA, CCB, CCC 

這是3立方(27)的可能性。

但是,如果你有7個數字,你有3^7個,或2187個排列,這將是一個不負責任的OR LIKE 'AAAAAAA%'鏈。

但是這種方法是倒退的。你應該做的是爲你想用這種方法搜索的任何name添加mobile-keypad-name,並用代表性數字預填充它 - 每name只有一種可能性。

的SQL查詢是那麼直杆:

WHERE mobile-keypad-name = "2222222";