MySQL离开连接以显示一个表的值,但存储在第二个表中

时间:2015-01-26 14:27:10

标签: php mysql

我正在建立一个房产网站并创建了一个页面来创建一个新房产。当我想编辑它时,我很难显示所需的结果。

相关细节: 属性表有一个开发人员字段,它是开发人员表中的id。 属性创建页面有一个下拉列表,用于选择显示给用户的字符串(取自开发人员表),但id存储在开发人员字段中

当我想设置编辑页面时,我需要显示当前的表值,但允许像以前一样选择。

我已尝试过此功能,但它没有显示当前表格的值,并且由于两个表格中都使用了开发人员和ID列,因此我使用"作为"创建一个缩短的独特形式。

<?php
$qry=mysql_query("SELECT Distinct a.id as a_id,a.developer as a_dev,b.developer as b_dev FROM developer  a left join property b on b.developer=a.id", $con);
if(!$qry)
{
    die("Query Failed: ". mysql_error());
}
?>
<div class="title">Select a  <?php echo $title2 ?> : </div>
<div class="description">
<select name="field2" id="field2">
<option value=""></option>
<?php
// First, define the desired default value
$default_value = $row['b_dev'];
while($row=mysql_fetch_array($qry))
{
    // Then you can mark that one as selected in your "while" loop
    $selected = ($row['b_dev'] == $default_value) ? ' selected' : '';
    echo "<option value='" . $row['a_id'] . "'" . $selected . ">" . $row['a_dev'] . "</option>";
}
?>

选择下拉列表工作正常,但b_dev当前存储的字段值不显示。我也试过使用变量,但它没有显示存储的值。还有一点需要注意的是,b.developer中的存储值是一个数字,显示的值必须是与b.developer = a.id匹配的字符串,所以我们只看到字符串而不是整数。

我已经提供了相关详细信息,如果有人需要更多详细信息,请在评论中提及,我会尽力提供。

PS: 是的我知道我应该使用MySQLi或PDO,但是一旦我得到结构并且后端完成,我将转换它。

2 个答案:

答案 0 :(得分:0)

什么是$default_value = $row['b_dev'];?具体来说,你的案例中$row是什么?我假设$ row在你的循环之前是未分配的。

您需要将$default_value设置为当前值,您需要将其作为单独的查询从数据库中获取。

答案 1 :(得分:0)

显然我不得不重写我的sql以使用左连接一次接收所有信息。它适用于我尝试过的一些东西。

$qry_main=mysql_query("SELECT a.id, name, description, b.developer as pdev, c.agent as pagent ,g.country as pcountry,f.city as pcity, d.area as parea, size, furnished, h.type as ptype, finished, bed, bath, pool, featured, price,delivery from property a left join developer b on a.developer_id=b.id left join agent c on a.agent_id=c.id left join area d on a.area_id=d.id left join type h on a.type_id=h.id left join city f on d.city_id=f.id left join country g on f.country_id=g.id where a.id='$id'",$con);