2012-02-13 95 views
0

我試圖做一個腳本,輸出基於天氣的用戶名,他們被分配一個奇數或偶數值。我想我已經設法讓奇怪的工作,但即使不會輸出。這是它的樣子。 'commentid'是確定它們是否被分配給奇數或偶數的值。奇怪/偶數腳本遇到問題

<?php 

$db = mysql_connect('localhost','username','pass') or die("Database error"); 
mysql_select_db('dbname', $db); 


$query2 = "SELECT * FROM comments"; 
$result2 = mysql_query($query2); 

while ($row2 = mysql_fetch_assoc($result2)) 

    if ($row2['commentid'] % 2 ) 
    { 
     echo $row2['name']; 
     echo "<br />"; 
    } 
    elseif (!$row2['commentid'] % 2) 
    { 
     echo $row2['name']; 
    } 
    else 
    { 
     echo ""; 
    } 
?> 

我認爲這是與任一$row2['name'](!$row2['commentid'] % 2)也許我需要分配行字符串或東西,但我想不出什麼我做錯了。

編輯我真的應該更清楚地知道我在用這個腳本來做什麼,因爲雖然你的答案有意義,但他們不解決我的問題。在與此腳本相同的頁面上,我正在運行另一個腳本。該腳本從同一數據庫中的不同表中調用一個值。它運行在每天重置的定時cron事件上,因此每天的價值都不一樣。它看起來像這樣並且正在按照它應該的工作。

<? 
$db = mysql_connect('localhost','username','pass') or die("Database error"); 
mysql_select_db('dbnamesameasother', $db); 


$query = "SELECT pool FROM winners"; 
$result = mysql_query($query) or die(mysql_error()); 

while ($row = mysql_fetch_array($result)) 

if ($row['pool'] % 2) 
{ 
echo "<h4>Result 1</h4>"; 
echo "<br />"; 
} 
else 
{ 
echo "<h4>Result 2</h4>"; 
echo "<br />"; 
} 
?> 

我想要做的只是調用基於上述腳本編號的奇數或偶數值相關聯的名稱。因此,如果這個腳本選擇結果1,我只想顯示誰也歸入結果中的用戶名1

+0

如果它應該像它應該那樣工作,你永遠不應該碰到最後一個'else'。 – PeeHaa 2012-02-13 09:41:30

+1

曾經聽說過[運算符優先級](http://php.net/manual/en/language.operators.precedence.php)? – 2012-02-13 09:41:49

+0

%2 == 0 - >偶數,否則 - >奇數 – GroundZero 2012-02-13 09:43:22

回答

0

希望這有助於

if ($row2['commentid'] % 2 ==0) 
{ 
echo $row2['name']; 
echo "<br />"; 
} 
else 
{ 
echo $row2['name']; 
} 
5

這足以做:

if ($row2['commentid'] % 2) 
{ 
    // odd 
} 
else 
{ 
    // even 
} 

如果你想知道什麼是錯的邏輯,你應該學到一些關於operator precedence in PHP的東西。根據圖表,!%有更高的優先權。因此,表達!$row2['commentid'] % 2被評價爲如下:

  • $row2['commentid']是0
    • 0 =真
    • 真%2 = 1
  • $row2['commentid']是1
    • ! 1 =虛假
    • 虛假%2 = 0
  • $row2['commentid']是2
    • !2 =假
    • 虛假%2 = 0
0
if ($row2['commentid'] % 2 ) 
{ 
echo $row2['name']; 
echo "<br />"; 
} 
elseif (!$row2['commentid'] % 2) 
{ 
echo $row2['name']; 
} 
else 
{ 
echo ""; 
} 

替換此代碼同

if ($row2['commentid'] % 2 ) 
{ 
echo $row2['name']; 
echo "<br />"; 
} 
else 
{ 
echo $row2['name']; 
} 

由於只有2 posibility要麼commentid被2整除或不被2整除

0

有一個問題。如果您刪除評論,您將獲得2個adiacent行(有/無<br>)。你應該使用一個迭代器變量,如下所示:

$i=1; 
while ($row2 = mysql_fetch_assoc($result2)){ 

    echo $row2['name']; 
    if($i % 2 == 0){ 
     echo "<br />"; 
    } 
    $i++; 
}