2016-04-26 20 views
-1

我想不通,它怎麼算所有這些舞者列和總所有舞者的呼應Mysql的數列問題

id | dancer1 | dancer2 | dancer3 | dancer4, and so on.. 
--------------------------------------- 
1  alex  michael dalm  name 
2  clare rose  test   

我有這樣的開始,但不工作:

$counter = mysql_query("SELECT COUNT(*) AS id FROM table"); 

$num = mysql_fetch_array($counter); 
$dancers = $num["id"]; 

echo "Total dancers: $dancers"; 

任何幫助表示讚賞。謝謝!

+1

你能解釋一下表結構嗎?什麼是id 1和2的聯繫人?他們的姓/名?如果是這樣,你需要重新組織表結構。 count(*)將計算行數。你期望和接收什麼號碼? – Matt

+0

如果你有這樣的編號列,這通常是一個很好的跡象表明你需要正確地規範你的數據庫結構 –

+0

你有多少個舞者爲每個compitition? –

回答

0

完整的答案試試這個:

$counter = mysql_query("SELECT * FROM table"); 
$dancers = 0; 
while($rows = mysql_fetch_array($counter)){ 
    for($i = 1; $i <= 24; $i++){ 
     $dan_id = 'dancer'.$i; 
     if($rows[$dan_id] != "" || $rows[$dan_id] != null) 
      $dancers++; 
    } 
} 
echo "Total dancers:". $dancers; 

注:決不設計數據庫表這樣。

+1

它的工作原理,謝謝你們! – Fido

+0

Frayne Konok,你能告訴我如何根據桌面ID來統計個人嗎?用添加的舞者數量列出每個用戶? – Fido

0

我真的保存您的舞者在不同的(容易)的方式...對於examle:

ID姓名] PHONE ....

1安娜磚石0975 ...

2傑夫·達曼0754 ...

這樣,你可以使用下面的代碼來算表:

$dancersCount="0"; 

$sql = "SELECT * FROM dancers"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
    $dancersCount++; 
} 
} else { 
    echo "No dancers.."; 
} 

echo"$dancersCount"; 

計數器將它所發現的每一行時間(舞者)

如果你真的想這樣做的算+1 ...

然後,我真的不認爲有一個簡單的方法來解決這個問題......你可能會需要檢查你多少列在你的數據庫,但是這不是我可以幫你...

+0

它只會顯示2.但OP要計算舞者。 –

+0

噢..沒有那麼好......我會看看我能做什麼然後......我會在一秒內改變我的答案...... – CoderYordi

+0

除非我錯過了某些東西,本質上這只是一個非常複雜的'SELECT COUNT(*)...'? – CD001

0

你需要改變你的表結構:

id | dancerNumber | name 
1  1    alex 
2  1    clare 
3  2    michael 
4  2    rose 
5  3    dalm 
6  3    test 
7  4    name 
8  4    dana 

SELECT COUNT(*) AS id FROM table將返回8個舞者。如果這是你正在尋找的?

如果你想保持你的結構

那麼你需要做下面的SQL查詢

SELECT dancer1, 
     dancer2, 
     dancer3, 
     (CASE WHEN (dancer1 <> "" AND dancer1 IS NOT NULL) THEN 1 ELSE 0 END + 
     CASE WHEN (dancer2 <> "" AND dancer2 IS NOT NULL) THEN 1 ELSE 0 END + 
     CASE WHEN (dancer3 <> "" AND dancer3 IS NOT NULL) THEN 1 ELSE 0 END) AS COUNTER 
FROM  table 

這將計算所有非空非空列,並在表的末尾添加計數器。這個櫃檯將包含你的結構舞者的數量。

與你的PHP代碼

$query = 'SELECT (CASE WHEN (dancer1 <> "" AND dancer1 IS NOT NULL) THEN 1 ELSE 0 END + 
       CASE WHEN (dancer2 <> "" AND dancer2 IS NOT NULL) THEN 1 ELSE 0 END + 
       CASE WHEN (dancer3 <> "" AND dancer3 IS NOT NULL) THEN 1 ELSE 0 END) AS COUNTER 
FROM table' 

$counter = mysql_query($query); 

$num = mysql_fetch_array($counter); 
$dancers = $num["COUNTER"]; 

echo "Total dancers: $dancers"; 
+0

每個用戶必須提交一些舞者參加舞蹈比賽,並且在表格中我有:「id」,「username」,「clubname」,「crew」,「dancer1」,「dancer2」等。「dancer24」和所以..我想計算每個用戶的舞蹈家字段,並顯示我從表中所有舞者的總數 – Fido

+0

@Fido我已經添加了一個新的SQL命令,以生活在你需要填寫剩餘的結構它最多可容納24名舞者。今後請看看改變你的表格結構。 – Matt

+0

在非空參數中添加 – Matt