2012-01-25 41 views
1

作爲一個自學成才(很差)的PHP編碼器,我已經用盡了所有的試驗和錯誤的可能性,所以我謙虛地問你的幫助,我遇到了一個小問題同時編寫社區在線「招標」遊戲。從兩個表獲取數據的難度/ php,mysql

我在我的數據庫中有兩個表格 - 一個叫做DCO_sponsors,列出了ID列表,一個關聯數量的(虛擬!)金錢,可用性計數器和(如果它們已經與團隊關聯),團隊ID。

結構:編號,數量,可用,TEAM_ID

第二個表,DCO_bids,列出了球隊的「競標」,奪得上述贊助商。它包括一個投標ID,團隊ID,在這種情況下是贊助者ID(其他過程使用同一張桌子)的「part_b」,描述投標類型的概念字段(例如「贊助」)和最後有兩個字段用於出價金額和當前狀態(A表示激活,W表示等待/待處理等)。

結構:ID,TEAM_ID,part_b,概念,投標,狀態

我想實現的是給我(管理員)在DCO_sponsors表中的所有贊助商名單的網站,通過有序金額,並在它旁邊的團隊team_id最高出價(團隊只有四個「贊助商」,並獲得最高的總票房,所以重要的是我看到他們的數量順序)。

生產的,而且我希望它會工作的代碼,如下所示:

  echo "<table>"; 
     echo "<tr><th width=30>Id</th><th width=100>Amount</th><th width=220>Team</th><th width=100>Offer</th><th></th><th></th><th></th></tr>"; 

     $data = mysql_query("SELECT id, amount FROM DCO_sponsors WHERE available='1' ORDER BY amount DESC", $CONNECTW); 
     while($row=mysql_fetch_row($data)) 
     { 
      $sp_id = "$row[0]"; 
      $sp_amount = number_format($row[1]); 

      $teamdata = mysql_query("SELECT team_id, bid FROM DCO_bids WHERE concept='sponsorship' AND part_b='$sp_id' ORDER BY bid DESC", $CONNECTW); 
      while($row=mysql_fetch_row($teamdata)) 
      { 
       $team_id = "$row[0]"; 
       $team_bid = number_format($row[1]);      
      }    

      // I call the name of the team from another table 

      $teamlabel = mysql_query("SELECT completename FROM DCO_teams WHERE id='$team_id'", $CONNECTW); 
      while($row=mysql_fetch_row($teamdata)) 
      { 
       $teamname = "$row[0]";      
      } 

      echo "<tr><td>$sp_id</td><td>&pound;$sp_amount</td><td>$teamname</td><td>$team_bid</td><td><a href='$RKP/kernel/lib/php_lib/action/AC_Bids_Update.php?op=A1&item_id=$item_id'><div id='IC_Tick' title='Sign Round 1 deal with $teamname'></div></a></td><td><a href='$RKP/kernel/lib/php_lib/action/AC_Bids_Update.php?op=A2&item_id=$item_id'><div id='IC_Tick' title='Sign Round 2 deal with $teamname'></div></a></td><td><a href='$RKP/kernel/lib/php_lib/action/AC_Bids_Update.php?op=A3&item_id=$item_id'><div id='IC_Tick' title='Sign Round 3 deal with $teamname'></div></a></td></tr>"; 

     } 

     echo "</table>"; 

在該行的最後一個單元的鏈接是打勾盒連接到修改其他表的行動。 目前,我得到的結果是按金額排序的贊助商名單(因爲它應該是這樣),但出現在它旁邊的球隊名稱對於所有排都是一樣的,它不是最高出價者之一,出價金額不是最高出價者之一,而只是第一個投標者之一。

我花了最近三個晚上的最好的部分試圖找出我得到這個錯誤的地方...我希望你傢伙可以幫忙!

+0

好吧,我不是100%肯定你正在試圖做什麼看完這個,但我想我有基本的瞭解。所以,你需要'$ teamname =「$ row [0]」;'用最高出價者返回名稱,對嗎? –

+0

是 - 實際上,這將是 $ teamdata =請求mysql_query( 「SELECT TEAM_ID,出價從DCO_bids WHERE概念= '贊助' AND part_b = '$ sp_id的' ORDER BY投標DESC」,$ CONNECTW); $ teamname只需從另一個表中獲取全名,而不是僅顯示團隊的ID號 –

回答

2
<table> 
    <tr> 
    <th width=30>Id</th> 
    <th width=100>Amount</th> 
    <th width=220>Team</th> 
    <th width=100>Offer</th> 
    <th></th> 
    <th></th> 
    <th></th> 
    </tr> 
<? $data = mysql_query("SELECT id, amount FROM DCO_sponsors WHERE available='1' ORDER BY amount DESC", $CONNECTW); ?> 

<? while($row=mysql_fetch_row($data)): 
    $sp_id = $row['id']; 
    $sp_amount = number_format($row['amount']); 

    $teamdata = mysql_query("SELECT team_id, bid FROM DCO_bids WHERE concept='sponsorship' AND part_b='$sp_id' ORDER BY bid DESC", $CONNECTW); 
    while($row=mysql_fetch_row($teamdata)) 
    { 
     $team_id = $row['id']; 
     $team_bid = number_format($row['bid']);      
    }    

     $teamlabel = mysql_query("SELECT completename FROM DCO_teams WHERE id='$team_id'", $CONNECTW); 
     while($row=mysql_fetch_row($teamlabel)) 
     { 
      $teamname = $row['completename'];      
     } 
?> 
    <tr> 
     <td><?=$sp_id;?></td> 
     <td>&pound;<?=$sp_amount;?></td> 
     <td><?=$teamname;?></td> 
     <td><?=$team_bid;?></td> 
     <td><a href='<?=$RKP;?>/kernel/lib/php_lib/action/AC_Bids_Update.php?op=A1&item_id=<?=$item_id;?>'> 
     <div id='IC_Tick' title='Sign Round 1 deal with <?=$teamname;?>'></div></a></td> 
     <td><a href='<?=$RKP;?>/kernel/lib/php_lib/action/AC_Bids_Update.php?op=A2&item_id=<?=$item_id;?>'> 
     <div id='IC_Tick' title='Sign Round 2 deal with <?=$teamname;?>'></div></a></td> 
     <td><a href='<?=$RKP;?>/kernel/lib/php_lib/action/AC_Bids_Update.php?op=A3&item_id=<?=$item_id;?>'> 
     <div id='IC_Tick' title='Sign Round 3 deal with <?=$teamname;?>'></div></a></td> 
    </tr> 

<? endwhile; ?> 
</table> 

您的問題與您最後一次通話發揮作用。你試圖再次使用mysql_fetch_row($ teamdata)而不是$ teamlabel。

此外,作爲一項規則,你應該只寫出任何不需要由php生成的html。所以我把這些東西分解給你。

+0

謝謝Josh--這個修正了出現在列表中的正確團隊名稱!然而,它仍然不是現在出現的最高出價者名稱,而是第一個出價的人(根據我認爲的BIDS表中的ID號)(以及相對金額)。 但領先一步:)謝謝! –

+0

因此,在您的BID表中有一個出價清單,每個出價清單都有與其相關的團隊ID和出價金額?投標欄的字段類型是什麼?有沒有可能列的格式不正確,也不是根據數值進行排序,而是根據其他因素進行排序? – VictorKilo

+0

另外,投標和贊助商如何相關?我無法在頭腦中拼湊你的模式。現在你已經設置好了,你的桌子將首先通過贊助商名單,從最高金額開始。對於這些贊助商中的每一個,它都會爲他們贊助的每個團隊推出一個連續的競標,並在這個範圍內從最高到最低競標。如果您想獲得的出價,以從高到低,無論哪支球隊或贊助商,他們都涉及到,你應該通過查詢報價表像你和向後的工作開始了。 – VictorKilo

1

解決了這一問題 - 這裏是工作的代碼:

echo "<table>"; 
    echo "<tr><th width=30>Id</th><th width=100>Amount</th><th width=220>Team</th><th width=100>Offer</th><th></th><th></th><th></th></tr>"; 

    $query = mysql_query("SELECT id, amount FROM DCO_sponsors WHERE available = '1' ORDER BY amount DESC"); 
    while($row = mysql_fetch_assoc($query)){ 
     $sp_id = $row['id']; 
     $sp_amount = $row['amount']; 
     $sp_amount = number_format($sp_amount); 
     $tQuery = mysql_query("SELECT team_id, bid, id FROM DCO_bids WHERE concept='sponsorship' AND part_b='$sp_id' AND status='W' ORDER BY bid DESC"); 
     $trow = ' '; 
     $trow = mysql_fetch_assoc($tQuery); 
     $team_id = $trow['team_id']; 
     $team_bid = $trow['bid']; 
     $team_bid = number_format($team_bid); 
     $item_id = $trow['id']; 
     $nquery = mysql_query("SELECT completename FROM DCO_teams WHERE id='$team_id'"); 
     $nrow = mysql_fetch_assoc($nquery); 
     $teamname = $nrow['completename']; 


     echo "<tr><td>$sp_id</td><td>&pound;$sp_amount</td><td>$teamname</td><td>&pound;$team_bid</td><td><a href='$RKP/kernel/lib/php_lib/action/AC_Bids_Update.php?op=A1&item_id=$item_id'><div id='IC_Tick' title='Sign Round 1 deal with $teamname'></div></a></td><td><a href='$RKP/kernel/lib/php_lib/action/AC_Bids_Update.php?op=A2&item_id=$item_id'><div id='IC_Tick' title='Sign Round 2 deal with $teamname'></div></a></td><td><a href='$RKP/kernel/lib/php_lib/action/AC_Bids_Update.php?op=A3&item_id=$item_id'><div id='IC_Tick' title='Sign Round 3 deal with $teamname'></div></a></td></tr>"; 
    } 

    echo "</table>";