0

ちょっとわかりにくいかもしれませんが、私の問題を説明するために最善を尽くします。

SQL データベースに 2 つのテーブルがあります。テーブル 1 は Events と呼ばれ、Table2 は Results と呼ばれます。

Events テーブルには、過去のコンピューター ゲームの試合に関するエントリが含まれています。

eg. EventID   EventName  EventDate  Location 
      1       GG vs AU    04/08     Game room 1

結果テーブルには、ほぼ同じエントリが含まれています..ただし、その単一のエントリの詳細が含まれています

eg.  EventID   MemberID       Score        Ranking 
       1         02        7(victory):5      1st

基本的に、「Events」php ファイルに移動すると、エントリが表示されます。同じ行のいずれかのエントリ (例: 1、GGvsAU、04/08、Gameroom1) を押すと、結果テーブルにリンクされ、その試合に関する詳細情報が表示されます。その例から、eventID は 1 であるため、同じ行のエントリのいずれかを押すと、results.php?EventID=1 にリンクされます。

Events php ファイルは完全に機能しているので問題ありません。しかし、エントリを押すと、Results php ファイルにリンクされます。

私が今問題を抱えているのは、Results php ファイルです。Events.php のエントリを押すと、results.php?EventID=1 にリンクされますが、データベース内のすべてのエントリが表示されます。EventID1 の情報だけが必要です。

また、以下のコードに基づいて、EventID と「MemberID」をビューから「非表示」にすることは可能でしょうか?

Events.php

<?
        $pdo = new PDO('mysql:host=localhost;dbname=clubresults', 'root', '12345678');
    #Set Error Mode to ERRMODE_EXCEPTION.
    $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  

$query = $pdo->query('SELECT EventID, EventName, EventDate, Location from events');
$rowset = array();

if ($query) {
  while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
    // Build array of rows
    $rowset[] = $row;
  }    

  // Output header first
  $headrow = $rowset[0];
  print("<table border=\"1\">\n<tr>\n");
  // Use $rowset[0] to write the table heading
  foreach ($headrow as $col => $val) {
    printf("<th>%s</th>\n", $col);
  }
  print("</tr>");

  // Then output table rows.
  // Outer loop iterates over row
  foreach ($rowset as $row) {
     print("<tr>");
     // Inner loop iterates over columns using $col => $val
     foreach ($row as $col => $val) {
        // We don't know your column names, but substitute the first column (the ID) for FIRSTCOL here
        printf("<td><a href=\"listresults.php?EventID=%s\">%s</a></td>\n", $row['EventID'],$val);
     }
     print("</tr>");
  }
}
print("</table>");
?>

Results.php (私が問題を抱えているもの)

   <?
 #Get the event id from $_GET
    $int_event_id = $_GET["EventID"];
    if((int)$int_event_id)
    {
        $pdo = new PDO('mysql:host=localhost;dbname=clubresults', 'root', '12345678');
    #Set Error Mode to ERRMODE_EXCEPTION.
    $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
  $query = $pdo->query('SELECT * from results WHERE EventID ='$int_event_id' ORDER By EventID ASC');
}
    $rowset = array();

if ($query) {
  while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
    // Build array of rows
    $rowset[] = $row;
  }    

  // Output header first
  $headrow = $rowset[0];
  print("<table border=\"1\">\n<tr>\n");
  // Use $rowset[0] to write the table heading
  foreach ($headrow as $col => $val) {
    printf("<th>%s</th>\n", $col);
  }
  print("</tr>");

  // Then output table rows.
  // Outer loop iterates over row
  foreach ($rowset as $row) {
     print("<tr>");
     // Inner loop iterates over columns using $col => $val
     foreach ($row as $col => $val) {
        // We don't know your column names, but substitute the first column (the ID) for FIRSTCOL here
        printf("<td><a href=\"index.php?ID=%s\">%s</a></td>\n", $row['EventID'],$val);
     }
     print("</tr>");
  }
}
print("</table>");

この問題で私を助けてくれる人に本当に感謝しています! どうもありがとう!

verisimilitude のソリューションを使用した最終更新日

4

2 に答える 2

1

ListResults.php で EventID 列と MemberID 列を非表示にするには、select クエリから除外するだけです。

したがって、すべての列 (*) に対してクエリを実行する代わりに、次のようにします。

SELECT * from results

代わりに、次のような特定の列をクエリします。

SELECT Score, Ranking FROM results

あなたの場合、最終的にメンバー名が必要になると思われるので、次のようにしてみてください。

SELECT Member.Name AS Name, Result.Score AS Score, Result.Ranking AS Ranking
FROM results
INNER JOIN members
ON results.MemberID = members.MemberID
WHERE results.EventID = '$int_event_id'

これは、MemberID が結果と一致するメンバー テーブルからメンバー名を取得することです。

于 2012-05-31T09:11:52.947 に答える
1

どうぞ。「Results.php」では、クエリに where 句を追加して、特定のイベント ID のみのデータを表示する必要があります。だから私の以下のコードをチェックしてください。

<?
    #$_GET からイベント ID を取得
    $int_event_id = $_GET["イベントID"];
    if((int)$int_event_id)
    {
       $pdo = new PDO('mysql:host=localhost;dbname=clubresults', 'root', '12345678');
       # エラー モードを ERRMODE_EXCEPTION に設定します。
       $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  

   $query = $pdo->query("SELECT * from results WHERE EventID ='$int_event_id' ORDER By EventID ASC");
}

?>

また、「events.php」の「listresults.php」とリンクしていますが、タイプミスかどうかはわかりません。「Results.php」にリンクする必要がありますよね?

于 2012-05-31T08:14:57.240 に答える