0

そこで、2つのテーブルから名、姓、ドナータイプを取得しようとしています。基本的に、人は主要な「ドナータイプ」を持っています。つまり、それらが2つの異なるドナータイプである場合、ドナーテーブルに最高ランクのものを配置します。DonorandTypeテーブルに、残りすべてを配置します。したがって、彼らが理事会メンバー、卒業生、および親である場合、ドナーテーブルに理事会メンバーが表示され、次に他のテーブルに卒業生と親が表示されます。

最終的に、donorandtypeテーブル(それぞれ異なるタイプの数でテストするために4人しか入れません)のすべての人が継続的に表示されます。ただし、2011年(昨年度)を選択した場合、繰り返されません。ただし、2012年(今年度)はそうです。必要に応じて、sqlステートメントとwhileループに関する部分だけでなく、すべてのコードを表示できます。しかし、それは私の日付の制約の問題ではないと思います。

sqlステートメントにも日付の制約がありますが、それで違いが生じるとは思いません。基本的には会計年度をチェックするだけで、その年に寄付していない場合は表示されません。SQLステートメントのその部分がある場合とない場合で試してみましたが、違いはないようです。ですから、その部分は無視できると思います。

ドナーテーブル:

  • DonorID(PK)
  • ファーストネーム
  • 苗字
  • Eメール
  • 電話
  • DonorType(FK)

DonorTypeテーブル:

  • DonorTypeID(PK)-これは、ドナータイプの2文字の略語です。例:卒業生の場合はAL
  • DonorType-これらは各ドナーの名前で、合計8つです
  • ランク-重要な基本ランク1、2、3など

DonorandTypeテーブル:

  • DonorID(FK)
  • DonorType(FK)

寄付表:

  • DonationID(PK)
  • 寄付金額
  • 制限
  • 説明
  • DateReceived
  • DonorID(FK)

わかりました。ドナーテーブルから名前と名前を取得します。次に、DonorandTypeテーブルからすべてのドナータイプをプルします。

// SQL query to interact with info from our database
$sql = mysql_query("
    SELECT donor.FirstName, donor.LastName, donorandtype.DonorType
    FROM donor, donortype, donorandtype, donations
    WHERE donor.DonorID = donorandtype.DonorID
      and donortype.DonorType = donorandtype.DonorType
      and donations.Date_Received BETWEEN '" . $startdate . "' and '" . $enddate . "'
") or die (mysql_error()); 

// Establish the output variable
echo "<table border=\"1\" cellpadding=\"10\" >
        <tr>
    <th id='name'>Donor Name</th>
    <th id'dontype'>Donor Type</th>
  </tr>";
while($row = mysql_fetch_array($sql)){ 

    $first_name = $row["FirstName"];
    $last_name = $row["LastName"];
    $donor_type = $row["DonorType"];

    echo "
    <tr>
    <td> $first_name $last_name </td>
    <td>$donor_type </td>
    </tr>";


}
echo '</table>';

この部分は実際にテーブルに表示されます...それは言う必要がありますか?上記のコードから明らかだと思いますが、何でも。

DONOR'S TYPES
Donor Name  Donor Type
Henry Hunt  Alumni
Henry Hunt  Board member
Paul Gates  Past Parent
Winifred Gardner    Parent
....
</trim>
4

1 に答える 1

1
<?php
// SQL query to interact with info from our database
$sqlTpl = 'SELECT `d`.`FirstName`, `d`.`LastName`, `t`.`DonorType`
           FROM
             `donorandtype` AS `j`
             LEFT JOIN `donor` AS `d` ON ( `j`.`DonorID` = `d`.`DonorID` )
             LEFT JOIN `donortype` AS `t` ON ( `j`.`DonorType` = `t`.`DonorTypeID` )
             LEFT JOIN `donations ` AS `m` ON ( `d`.`DonorID` = `m`.`DonorID` )
           WHERE
             `m`.`Date_Received` BETWEEN "%s" AND "%s"
           ORDER BY
             `d`.`DonorID` , `t`.`Rank`';
$sqlStr = sprintf( $sqlTpl ,
            date( 'Y-m-d h:i:s' , strtotime( $startdate ) ) ,
            date( 'Y-m-d h:i:s' , strtotime( $enddate ) ) );
$sqlRes = mysql_query( $sqlStr );

if( !$sqlRes ){
  echo 'SQL Error Occurred:';
  echo 'But I am not going to show the error messages publicly.';
}else{
?>
<table border="1" cellpadding="0">
  <thead>
    <tr>
      <th id="name">Donor Name</th>
      <th id="type">Donor Type</th>
    </tr>
  </thead>
  <tfoot>
    <tr>
      <th colspan="2"><?php echo mysql_num_rows( $sqlRes ); ?> Donors Found</th>
    </tr>
  </tfoot>
  <tbody>
<?php
  if( mysql_num_rows( $sqlRes ) ){
    while( $r = mysql_fetch_array( $sqlRes ) ){
?>
    <tr>
      <td><?php echo $r['FirstName'].' '.$r['LastName']; ?></td>
      <td><?php echo $r['DonorType']; ?></td>
    </tr>
<?php
    }
  }else{
?>
    <tr>
      <td colspan="2">No Records Returned</td>
    </tr>
<?php
  }
?>
  </tbody>
</table>
<?php
}
?>
于 2012-12-07T05:20:28.340 に答える