2013-03-22 2 views
0

이 코드에서 조인을 구현하는 방법을 알 수 없습니다. 또한 두 번째 문제는 내가하여 mysql_query 'Charity No: '.$don['charity_id'].'<br/>'.을 사용하고자하는 것입니다 ("SELECT * FROM charity where id='?????????'")이 코드에 조인하는 방법 및 PHP 폼에서 데이터를 검색하는 방법

코드로 지금하지가 괜찮 모든 데이터를 검색,하지만 난 (기부 테이블에있는) [FK]를 charity_id 원하는 것은 charityname (charity 테이블에서) 대신에, 그리고 이것은 조인을 사용하여 수행되지만 내 코드에서이 작업을 수행하는 방법을 알 수는 없다고 확신합니다. 두 번째 문제는 자선 단체 수 (자선 단체 기준)를 평가하는 등급 시스템을 만들고 싶다는 것입니다. 데이터는 리터럴리가 몇 줄이지만 위의 방법으로도 계산할 수 없습니다.

내 코드는 다음과 같습니다

$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)); 

하지만 지금은 운 :

<?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> 


    "; 
} 

(가) 지금 시도입니다 가입.

도움을 주시면 감사하겠습니다. 감사합니다.

답변

0

다음은 JOIN입니다 :

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

이 문은 모든 기부를 선택합니다. 기부없는 자선 단체는 게재되지 않습니다.

그리고 여기 당신을위한 라이브 데모입니다 : http://sqlfiddle.com/#!2/be925/2

은 바꿔 두 번째 질문을 지정하십시오, 나는 당신이 원하는 것을 이해하지 못했다.

+0

Hello Michi와 신속한 회신에 감사드립니다. 제가 2 부에 대해 원하는 것은 ????????로 표시된 영역입니다. 즉 $ find_data = mysql_query ("SELECT * FROM charity where id = '?????????'"); 나는 무엇 대신에 원하는가? ??????? 이전 검색어에서 위의 자선 단체 번호입니다 (예 : 'Charity No :'). $ don [ 'charity_id'].
'. 제가 성취하려고 시도하는 것은 등급 시스템을 만드는 것입니다.하지만 특정 기부 ID에 속한 자선 단체에 대해서만 평가할 수 있습니다. 이것이 조금 더 명확 해 지길 바래, 시간을내어 도와 줘서 고마워. – qwerty255

0

항상 설정되어 있고 배열을 응답으로 반환하므로 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; 
} 
관련 문제