2014-03-25 40 views
0

我目前正在爲我的網站製作一個消息傳遞系統,該系統允許人們向其他9個人(包括作者)發送消息。我有我的數據庫稱爲 '會話' 具有以下字段的表:計數數組值返回額外結果

  • convo_id
  • 作者
  • recipient_1
  • recipient_2
  • recipient_3
  • recipient_4
  • recipient_5
  • recipient_6
  • recipient_7
  • recipient_8
  • recipient_9
  • 標題
  • 時間戳

然後我有一個叫做 'private_messages' 這些領域的表:

  • MESSAGE_ID
  • convo_id
  • 作者
  • 時間戳
  • 消息

所以在會話中的所有參與者都存儲在談話表,並存儲在p_m表中的實際消息。

我使用的是單一的輸入字段的形式爲受助上,用逗號分隔的名字,然後對另一側下面的代碼提交:

$recipients = explode(",", $_POST['recipient']); 
$duplicate = array($recipients[0],$recipients[1],$recipients[2],$recipients[3],$recipients[4],$recipients[5],$recipients[6],$recipients[7],$recipients[8],$recipients[9],$recipients[10]); 
$unique = array_values(array_unique($duplicate)); 
$result = count($unique); 
echo "$result<br>"; 

的問題,我有,當我回應$結果時,我得到一個額外的計數。如果我將該字段留空,則它正確地表示爲0,但是任何條目都會返回2,這會在驗證後進一步發生異常。

我完全難住,任何幫助將不勝感激!

+0

您是否嘗試過error_log'ing的$ _ POST [ '接受者']?也許你會將作者添加到收件人列表中。 –

+0

是的,$ _POST ['recipient']只返回輸入的值。 – user3461991

+1

嗯,你添加11個收件人的數組...索引0到10.爲什麼你甚至做手動數組的東西? –

回答

0

我覺得你的問題是你的$重複步驟

// assuming $_POST['recipient'] = bob,fred 

$recipients = explode(",", $_POST['recipient']); 
// $recipients is array ['bob','fred'] 
$duplicate = array($recipients[0],$recipients[1],$recipients[2],$recipients[3],$recipients[4],$recipients[5],$recipients[6],$recipients[7],$recipients[8],$recipients[9],$recipients[10]); 
// $duplicate is ['bob','fred',null, null, null, null, null, null, null, null, null] 
$unique = array_values(array_unique($duplicate)); 
// $unique is ['bob','fred',null] 
$result = count($unique); 
//$result = 3 
echo "$result<br>"; 

這一翻譯做:

// assuming $_POST['recipient'] = bob,fred 

$recipients = explode(",", $_POST['recipient']); 
// $recipients is array ['bob','fred'] 
$unique = array_values(array_unique($recipients)); 
// $unique is ['bob','fred'] 
$result = count($unique); 
//$result = 2 
echo "$result<br>"; 

說明問題的鍵盤:http://codepad.org/YZSvieEr

+0

輝煌,你是對的。謝謝! – user3461991