2012-01-31 46 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