从另一个表的值填充表

时间:2016-03-23 13:11:29

标签: php mysql

我有2个视图表,第一个是国家,第二个是州。他们个人都很好。国家表列出了所有国家,州表列出了所有州。

在countries表中,我有一个指向将country_id传递到states表的状态的链接,因为我只想列出所选国家/地区的州,而不是所有州。

我尝试过很多其他人提供的解决方案,但仍无法让它发挥作用。我非常感谢你对简单的帮助。

states.php(这是我到目前为止但它不起作用,错误在选择行中。)

<?php
$per_page = 25;
$result = mysql_query("SELECT * FROM states' SET states.country_id = countries.id FROM countries INNER JOIN countries ON states = countries WHERE states.country_id = country_id ORDER BY states.name ASC;");
$total_results = mysql_num_rows($result);
$total_pages = ceil($total_results / $per_page);

if (isset($_GET['page']) && is_numeric($_GET['page']))
{
    $show_page = $_GET['page'];

    // make sure the $show_page value is valid
    if ($show_page > 0 && $show_page <= $total_pages)
    {
        $start = ($show_page -1) * $per_page;
        $end = $start + $per_page; 
    }
    else
    {
        // error - show first set of results
        $start = 0;
        $end = $per_page; 
    }       
}
else
{
    // if page isn't set, show first set of results
    $start = 0;
    $end = $per_page; 
}

echo "<p><a href='state.php'>View All</a> | <b>View Page:</b> ";
for ($i = 1; $i <= $total_pages; $i++)
{
    echo "<a href='state.php?page=$i'>$i</a> ";
}
echo "</p>";

echo "<table border='1'>";
echo "<tr> <th>State:</th></tr>";

for ($i = $start; $i < $end; $i++)
{
    if ($i == $total_results) { break; }

    echo "<tr>";
    echo '<td>' . mysql_result($result, $i, 'name') . '</td>';
    echo "</tr>"; 
}
echo "</table> "; 

?>

2 个答案:

答案 0 :(得分:0)

您没有任何变量包含从country.php中选择的国家/地区传递给states.php,因此您需要首先计算出来。

这是您需要根据“已选择”国家/地区提取状态的查询的一个非常基本的示例。但是你需要在某处指定的$ country变量,这在代码中没有。

SELECT a.* FROM states a  
WHERE a.country_id = '".$country_id."' 
ORDER BY a.name ASC

如果你没有使用PDO(你不是),那么你需要确保$ country变量是安全的,并且最好至少逃避它。

答案 1 :(得分:0)

我能够按照以下方式使用它:

SELECT * FROM states
WHERE country_id='.$_GET['country_id'].'
ORDER BY name ASC'