1
我的目標是顯示所有用戶的名稱及其針對特定匹配的可用性。下面的代碼就是這樣做的。可能不是最簡單的方法,但我是新手,現在可以工作。MySQL:僅顯示尚未從另一個表中顯示的表中的信息
//Display match dates and times(showing all matches)
$stmt = $conn->prepare('SELECT * FROM matches
WHERE tid=:tid /*AND datetime BETWEEN (NOW() + INTERVAL 24 HOUR) AND (NOW() + INTERVAL 28 DAY)*/
ORDER BY datetime');
$stmt->bindParam(':tid', $tid, PDO::PARAM_INT);
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo "
<h2>".date("F j",strtotime($row["datetime"])). " @ ".date("g:i A",strtotime($row["datetime"]))."<br></h2>
<h3>"$row[location] Match <br> vs $row[opponent]</h3>";
echo "<table>
<tr>
<th>Player</th>
<th>Availability</th>
</tr>
</table>";
//Get available(Yes) users first and last names to display
$stmtY = $conn->prepare("SELECT user.first, user.last
FROM user
INNER JOIN match_part ON user.uid=match_part.uid
WHERE mid=:mid AND availability = 'Yes'");
$stmtY->bindParam(':mid', $row['mid'], PDO::PARAM_INT);
$stmtY->execute();
while ($rowY = $stmtY->fetch(PDO::FETCH_ASSOC))
{
echo "<table class='match-avail'>
<tr>
<td>$rowY[first] $rowY[last]</td>
<td><span style='color: #70db62'>✔</span></td>
</tr>
</table>";
}
//Get unavailable(No) users first and last names to display
$stmtN = $conn->prepare("SELECT user.first, user.last
FROM user
INNER JOIN match_part ON user.uid=match_part.uid
WHERE mid=:mid AND availability = 'No'");
$stmtN->bindParam(':mid', $row['mid'], PDO::PARAM_INT);
$stmtN->execute();
while ($rowN = $stmtN->fetch(PDO::FETCH_ASSOC))
{
echo "<table class='match-avail'>
<tr>
<td class='Avail_No'>$rowN[first] $rowN[last]</td>
<td><span style='color: #b20000'>✘</span></td>
</tr>
</table>";
}
上面給出了我想要的確切信息。
我在哪裏卡住是...
我有對一個給定的團隊
一個match_part表中的所有球員名單team_members表(TmID是否,UID,TID)(MPID,中,UID ,可用性)以及已經輸入可用於特定比賽的球員的可用性。
我現在想展示那些還沒有給出他們可用性的人。因此,我需要顯示match_part表中不存在的team_members名稱。所以我只需要顯示team_members表中而不是match_part表中的玩家的名字。
因此,一些沿行...
$stmtU = $conn->prepare("SELECT user.first, user.last
FROM user
INNER JOIN team_members ON user.uid=team_members.uid
INNER JOIN match_part ON user.uid=match_part.uid
WHERE ***team_member.uid is not in match_part.uid***");
$stmtU->bindParam(':tid', $tid, PDO::PARAM_INT);
$stmtN->bindParam(':mid', $row['mid'], PDO::PARAM_INT);
$stmtU->execute();
while($rowU = $stmtU->fetch(PDO::FETCH_ASSOC))
{
echo "<table class='match-avail'>
<tr>
<td>$rowU[first] $rowU[last]</td>
<td>?</td>
</tr>
</table>";
}
對不起,冗長的職位,但我想通的信息可能有助於理解這裏的目的。感謝所有有任何想法/解決方案的人。非常感謝您的幫助!
真棒不使用!這樣做,只需將WHERE添加到兩個部分,並得到我想要的。謝謝! – BL10s
謝謝..在哪裏添加.. – scaisEdge