0

このコードで結合を実装する方法を理解できません。'Charity No: '.$don['charity_id'].'<br/>'.また、2番目の問題はmysql_queryで使用したいということです("SELECT * FROM charity where id='?????????'")

コードは現在、このすべてのデータを正常に取得しますが、代わりにcharity_id [FK](寄付テーブルにあります)をcharityname(慈善テーブルから)として取得します。これは結合を使用して行われると確信していますが、私のコードでこれを行う方法を理解できません。2番目の問題は、(慈善団体番号に基づいて)慈善団体を評価する評価システムを作成したいということです。データは文字通り数行上にありますが、これも理解できません。

私のコードは次のとおりです。

<?php
if (!isset($_POST['do']) || !isset($_POST['id']) || !$_POST['id'])
exit;

    require_once 'connection.php';

    $don=mysql_fetch_assoc(
        mysql_query('SELECT *
            FROM donation
            WHERE id="'.mysql_real_escape_string($_POST['id'],$con).'"',$con));
    if ($don===false || !$don['id'])
        print '<h3>Donation id #'.$_POST['id'].' does not exist!</h3>';
    else {
        print '<h3>Information about donation id #'.$_POST['id'].'</h3>'.
            'Donor ID: '.$don['donor_id'].'<br/>'.
            'Charity No: '.$don['charity_id'].'<br/>'.
            'Date & Time: '.$don['TransactionTime'].'<br/>'.
            'Donation Amount: £ '.number_format($don['D_Amount'],2).'<br/>'.
         }

$find_data = mysql_query("SELECT * FROM charity where id='?????????'");

while($row = mysql_fetch_assoc($find_data))
{
    $id = $row['id'];
    $C_Name = $row['CharityName']; 
    $C_Desc = $row['CharityDescription'];
    $Hits = $row['Hits'];
    $Ranking = $row['Ranking'];

    echo "

    <form action='rate.php' method='POST'>
    $C_Name: <select name='Ranking'>

    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>

    </select>
    <input type='hidden' value=$id name='ID'>
    <input type='submit' value='Rate'>; 
    </form>


    ";
}

私が今試したJOINは次のとおりです。

$don=mysql_fetch_assoc(
        mysql_query('SELECT *
                   FROM donation As D JOIN charity as C ON d.charity_id=C.id 
            WHERE id="'.mysql_real_escape_string($_POST['id'],$con).'"',$con));

しかし、今は運がいい。

どんな助けでも大歓迎です、ありがとう。

4

2 に答える 2

0

これがJOIN

SELECT charity.*, donation.* 
FROM charity 
JOIN donation 
ON charity.id = donation.charity_id; 

このステートメントは、すべての寄付を選択します。寄付のない慈善団体は表示されません。

そして、これがあなたのためのライブデモです:http ://sqlfiddle.com/#!2/be925/2

言い換えて、2番目の質問を指定してください。あなたが何を望んでいるのかわかりませんでした。

于 2013-03-22T23:34:37.180 に答える
0

$ _POSTは常に設定され、応答として配列を返すため、issetを$_POSTと一緒に使用することはできません。代わりに空を使用してください。

<?php
if (!empty($_POST['do']) || !empty($_POST['id']) || !$_empty['id'])
exit;

require_once 'connection.php';

//I'm guessing that ID is a number.
if(is_numeric($_POST['id'])){
        $temp_ID = $_POST['id'];    
    }
//Do a count before you trust the ID
$don=mysql_result(mysql_query('SELECT count(*) FROM donation WHERE id="'.$temp_ID.'"'),0);

if ($don!=='1') {
    //Don't print anything they give you here.
    print '<h3>That id does not exist!</h3>';
} else {
    $id = $temp_ID;

    $SQL = "select * from donation d,charity c where c.id=$id and d.id=c.id";
    $result = mysql_query($SQL);
    while ($row = mysql_fetch_array($result)){
        $donorID = $row['donor_id'];
        $charityID = $row['charity_id'];
        $transactionTime = $row['TransactionTime'];
        $amount = number_format($row['D_Amount'],2);
        $C_Name = $row['CharityName']; 
        $C_Desc = $row['CharityDescription'];
        $Hits = $row['Hits'];
        $Ranking = $row['Ranking'];
    }
    $form = "<h3>Information about donation id #$id</h3>\n
        Donor ID: $donorID<br/>\n
        Charity No: $charityID<br/>\n
        Date &amp; Time: $transactionTime<br/>\n
        Donation Amount: £ $amount<br/>\n";



$form .= "
<form action='rate.php' method='POST'>\n
$C_Name: <select name='Ranking'>\n
<option>1</option>\n
<option>2</option>\n
<option>3</option>\n
<option>4</option>\n
<option>5</option>\n
</select>\n
<input type='hidden' value=$id name='ID'>\n
<input type='submit' value='Rate'>\n 
</form>";
print $form;
}
于 2013-03-23T00:07:21.403 に答える