2013-05-02 3 views
0

Im new to php, и я нашел небольшой фрагмент кода в Интернете, который был почти идеален для того, что я хотел, однако для трех разделов (функция, менеджер & zone) это отображение идентификатора вместо имени, которые проводятся в других таблицах (функций, менеджеров & зон), связанный с идентификатором в качестве внешнего ключа функцийВыбор имени из другой таблицы с использованием внешнего ключа

(functionID, FunctionName) менеджеров (ManagerID, Managername) зоны (ZoneId , Zonename)

Так что я хочу, чтобы таблица отображала имя вместо id, если кто-то мог помочь, я бы v чень много ценю это

<html> 
<head> 
<title></title> 

</head> 
<body > 

<? 
$con = mysql_connect ("localhost","xxx","xx"); 
if (!$con){ 
die("can not connect: " . mysql_error()); 
} 
mysql_select_db("xx",$con); 

//////Displaying Data///////////// 
$id=$_GET['requestID']; // Collecting data from query string 
if(!is_numeric($id)){ // Checking data it is a number or not 
echo "Data Error"; 
exit; 
} 

$q=mysql_query("select * from requests where requestID=$id "); 
$row=mysql_fetch_object($q); 
echo mysql_error(); 
echo "<table>"; 

echo " 
<tr bgcolor='#f1f1f1'><td><b>Function</b></td><td>$row->functionID</td></tr> 
<tr><td><b>Manager</b></td><td>$row->managerID</td></tr> 
<tr bgcolor='#f1f1f1'><td><b>Zone</b></td><td>$row->zoneID</td></tr> 
<tr><td><b>Headcount Request</b></td><td>$row->Headcountrequest</td></tr> 
<tr bgcolor='#f1f1f1'><td><b>Utilisation</b></td><td>$row->Utilisation</td></tr> 
<tr><td><b>Current Headcount</b></td><td>$row->Currentquarterheadcount</td></tr> 
<tr bgcolor='#f1f1f1'><td><b>Entered By</b></td><td>$row->Enteredby</td></tr> 
<tr><td><b>Start Date<br>(YYYY-MM-DD)</b></td><td>$row->Startdate</td></tr> 
"; 
echo "</table>"; 

//////////////////// 
?> 
</body> 
</html> 

ответ

1

Измените эту строку:

$q=mysql_query("select * from requests where requestID=$id "); 

к этому:

$q=mysql_query("select r.*, f.Functionname, m.Managername, z.Zonename from requests as r inner join functions as f on r.functionID = f.functionID inner join managers as m on r.managerID = m.managerID inner join zones as z on r.zoneID = z.zoneID where r.requestID=$id "); 

Затем измените:

echo " 
<tr bgcolor='#f1f1f1'><td><b>Function</b></td><td>$row->functionID</td></tr> 
<tr><td><b>Manager</b></td><td>$row->managerID</td></tr> 
<tr bgcolor='#f1f1f1'><td><b>Zone</b></td><td>$row->zoneID</td></tr> 
<tr><td><b>Headcount Request</b></td><td>$row->Headcountrequest</td></tr> 
<tr bgcolor='#f1f1f1'><td><b>Utilisation</b></td><td>$row->Utilisation</td></tr> 
<tr><td><b>Current Headcount</b></td><td>$row->Currentquarterheadcount</td></tr> 
<tr bgcolor='#f1f1f1'><td><b>Entered By</b></td><td>$row->Enteredby</td></tr> 
<tr><td><b>Start Date<br>(YYYY-MM-DD)</b></td><td>$row->Startdate</td></tr> 
"; 

к:

echo " 
<tr bgcolor='#f1f1f1'><td><b>Function</b></td><td>$row->Functionname</td></tr> 
<tr><td><b>Manager</b></td><td>$row->Managername</td></tr> 
<tr bgcolor='#f1f1f1'><td><b>Zone</b></td><td>$row->Zonename</td></tr> 
<tr><td><b>Headcount Request</b></td><td>$row->Headcountrequest</td></tr> 
<tr bgcolor='#f1f1f1'><td><b>Utilisation</b></td><td>$row->Utilisation</td></tr> 
<tr><td><b>Current Headcount</b></td><td>$row->Currentquarterheadcount</td></tr> 
<tr bgcolor='#f1f1f1'><td><b>Entered By</b></td><td>$row->Enteredby</td></tr> 
<tr><td><b>Start Date<br>(YYYY-MM-DD)</b></td><td>$row->Startdate</td></tr> 
"; 

Предполагая, что я набрал все это правильно, теперь у вас должен быть запрос, который объединяет ваши 4 таблицы вместе с использованием полей * ID и выбирает поля * имени из каждой из объединенных таблиц. Не имея доступа к вашей базе данных и не написав SQL вручную, это может быть не совсем корректно, но должно привести вас к правильному пути.

+0

работал отлично большое спасибо! – user2317823

+0

Рад помочь. Хотя это единственный ответ, вы должны отметить его как принятый, чтобы другие увидели милую зеленую галочку и знали, что это сработало для вас. –