2012-02-13 87 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++; 
}