2012-01-31 47 views
3

我正在用我正在构建的一种表单挣扎。我想说明一个丢弃事件的下降,这符合两个条件:PHP - 无法显示完整的结果集,只是第一个

  1. 他们在“活动”比赛每个用户一个
  2. 他们发生当天或前一天。

不幸的是,我只设法显示列表的第一个实例,而不是所有的实例。我确信系统“看到”其他人就好像我命令DESC的结果一样,它会告诉我最后一个。

对于$compcheck,第一个查询检查对某个用户有效的所有比赛。比赛的范围从1到5,任何用户都可以尽可能多地活跃。

尝试在下拉列表中定义<options>时会出现该问题。我认为通过把它放到一边,它会为$compcheck中的每个结果做到这一点,但它不会这样做。

这不是很容易解释!这至少是我第四次重写代码(如果有的话,它会简化它很多)。

$compcheck = mysql_query("SELECT competition FROM RCO_contracts WHERE partB='$UserID' AND state='A'"); 
$numrows = mysql_num_rows($compcheck); 

if($numrows = 0) 
{ 
    echo "You are not participating in any competition at the moment."; 
} 
else 
{ 

    $yesterday = $day-1; 

    echo "<form action='$RKP/kernel/lib/php_lib/action/AC_Appeals_Add.php?op=add_appeal&id=$UserID' method='post'>"; 
    MODW_Buttons_Select(Normal,UAdminSelUser,RCO_users,completename,id,completename,False,False,$UserID,$do,$RKP); 
    echo "<select name='event'>"; 

    while($row=mysql_fetch_row($compcheck)) 
    { 
     $comp = "$row[0]"; 

     $complabel = mysql_query("SELECT competition FROM DCO_competitions WHERE id='$comp'"); 
     while($row=mysql_fetch_row($complabel)) 
     { 
      $compname = "$row[0]"; 
     } 

     $calendarlist = mysql_query("SELECT id, event, category FROM DCO_calendar WHERE category='$comp' AND (day='$day' OR day='$yesterday') AND month=$month AND year=$year"); 
     while($row=mysql_fetch_row($calendarlist)) 
     { 
      $event_id = "$row[0]"; 
      $event_name = "$row[1]"; 

      echo "<option value='$event_id'>$compname $event_name</option>"; 
     } 

     echo "</select>"; 

    } 
    MODW_Buttons_Input(Normal,Normal,UPerRegTeamWeb,$lang,$link,False,$UserID); //lap 
    MODW_Buttons_Input(Normal,Normal,UPerRegTeamWeb,$lang,$link,False,$UserID); //timestamp 
    MODW_Buttons_Input(Normal,Normal,UPerRegTeamWeb,$lang,$link,False,$UserID); //textarea 
    MODW_Buttons_Button(Normal,Normal,Normal,Normal,None,$RKP,$id,BGenSu,$intern,$intcont); 
    echo "</form>"; 

} 
+0

请不要介意最后的按钮 - 他们是我仍然必须努力的东西。 – 2012-01-31 12:12:59

回答

1

在每次出现用户之后,您还要关闭</select>(值得检查php脚本生成的页面的源代码) - 您的查询并非针对每次竞争。试试这个:

if($numrows == 0) 
{ 
    echo "You are not participating in any competition at the moment."; 
} 
else 
{ 

    $yesterday = $day-1; 

    echo "<form action='$RKP/kernel/lib/php_lib/action/AC_Appeals_Add.php?op=add_appeal&id=$UserID' method='post'>"; 
    MODW_Buttons_Select(Normal,UAdminSelUser,RCO_users,completename,id,completename,False,False,$UserID,$do,$RKP); 
    echo "<select name='event'>"; 

    while($row=mysql_fetch_row($compcheck)) 
    { 
     $comp = "$row[0]"; 

     $complabel = mysql_query("SELECT competition FROM DCO_competitions WHERE id='$comp'"); 
     while($row=mysql_fetch_row($complabel)) 
     { 
      $compname = "$row[0]"; 

      $calendarlist = mysql_query("SELECT id, event, category FROM DCO_calendar WHERE category='$comp' AND (day='$day' OR day='$yesterday') AND month=$month AND year=$year"); 
      while($row=mysql_fetch_row($calendarlist)) 
      { 
       $event_id = "$row[0]"; 
       $event_name = "$row[1]"; 

       echo "<option value='$event_id'>$compname $event_name</option>"; 
      } 

    } 

    echo "</select>"; 
    MODW_Buttons_Input(Normal,Normal,UPerRegTeamWeb,$lang,$link,False,$UserID); //lap 
    MODW_Buttons_Input(Normal,Normal,UPerRegTeamWeb,$lang,$link,False,$UserID); //timestamp 
    MODW_Buttons_Input(Normal,Normal,UPerRegTeamWeb,$lang,$link,False,$UserID); //textarea 
    MODW_Buttons_Button(Normal,Normal,Normal,Normal,None,$RKP,$id,BGenSu,$intern,$intcont); 
    echo "</form>"; 

} 
+0

谢谢!这解决了它。它是否由选择结束标记在事件发生中导致? – 2012-01-31 12:40:36

+0

选择标记会让你的页面变得混乱,但你应该还是会看到其他选项。它在第二时间内移动,而第二时间应该解决它(因为你希望'while's'运行在每一行读取到php。 – Elen 2012-01-31 12:43:51

4
if($numrows = 0) 

你有一个丢失等号和这里。

此外,你不应该把变量放入一个字符串来重新分配它们。只需使用$comp = $row[0]如果要将变量插入到字符串中,应将它们与点("abc".$comp."def"))连接起来,它更易于阅读并且不易出错。

Normal我不认为你有一个常量叫做Normal,你可能想要一个字符串。

纠正这些错误将有助于找到问题(当它不能解决问题时)。对于开发总是使用error_reporting(E_ALL)来查看所有的错误和通知。

编辑:在HTML中,你应该围绕你的属性加双引号,单引号是不好的样式。

+0

感谢 - “正常”只是调用了一些旨在显示按钮的变量(这不是我正在涉及的atm)。 – 2012-01-31 12:39:15