0

我无法将数据回显到 HTML 表中。

结果是这样的:

错了一个

但它应该是:

正确一个

这是代码。我究竟做错了什么?

<?php
    $query = $_POST['query']; 
    $min_length = 1;

    if(strlen($query) >= $min_length){ // if query length is more or equal minimum length then

        $query = htmlspecialchars($query); 
        $query = mysql_real_escape_string($query);         
        $raw_results = mysql_query("SELECT * FROM norse5_proov
            WHERE (`model` LIKE '%".$query."%') OR (`year` LIKE '%".$query."%')") or die(mysql_error());

        if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following

            while($results = mysql_fetch_array($raw_results)){
                echo "<table>";
                echo "<tr>";
                        echo "<td>Model name</td>";
                echo "<td>Year</td>";
                echo "</tr>";
                echo "<td>".$results['mudeli_nimetus']."</td>";

                echo "<td>".$results['soetusaasta']."</td>";
                echo "<br>";
                echo "</table>";
            }

        }
        else{
            echo "No results";
        }

    }
?>
4

5 回答 5

2

问题是您不断为每次迭代输出一个新表。

您的代码应如下所示:

<?php
$query = $_POST['query']; 
$min_length = 1;

if(strlen($query) >= $min_length){ // if query length is more or equal minimum length then

    $query = htmlspecialchars($query); 
    $query = mysql_real_escape_string($query);         
    $raw_results = mysql_query("SELECT * FROM norse5_proov
        WHERE (`model` LIKE '%".$query."%') OR (`year` LIKE '%".$query."%')") or die(mysql_error());

    if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following

        echo "<table>"; // Start the table
        // Output the table headers
        echo "<tr>";
        echo "<td>Model name</td>";
        echo "<td>Year</td>";
        echo "</tr>";

        while($results = mysql_fetch_array($raw_results)) {
            echo "<tr>";
            echo "<td>".$results['mudeli_nimetus']."</td>";
            echo "<td>".$results['soetusaasta']."</td>";
            echo "<br>";
            echo "</tr>";
        }

        echo "</table>"; // End the table

    }
    else{
        echo "No results";
    }

}
?>
于 2013-02-28T09:29:50.017 回答
0

只需将echo "<table>";第一个tr创建语句放在 while 循环的一侧,并在循环table完成后关闭,while我相信它会起作用。

尝试

<?php
    echo "<table><tr><td>Model name</td><td>Year</td></tr>";

    while($results = mysql_fetch_array($raw_results))
    {
        echo "<tr><td>".$results['mudeli_nimetus']."</td><td>".$results['soetusaasta']."</td></tr>";
    }
    echo "</table>";
?>
于 2013-02-28T09:28:17.743 回答
0

使用此代码,您必须首先启动表,使用 while 循环迭代结果,然后关闭表。

echo "<table>";
echo "<tr>";
echo "<td>Model name</td>";
echo "<td>Year</td>";
echo "</tr>";
while($results = mysql_fetch_array($raw_results)){
    echo "<tr>";
    echo "<td>".$results['mudeli_nimetus']."</td>";
    echo "<td>".$results['soetusaasta']."</td>";
    echo "</tr>";         
}
echo "</table>";
于 2013-02-28T09:29:53.950 回答
0

从 while 循环中删除代码并放在外面。

echo "<table>";
echo "<tr>";
echo "<td>Model name</td>";
echo "<td>Year</td>";
echo "</tr>";


while($results = mysql_fetch_array($raw_results)){
            echo "<tr>";
            echo "<td>".$results['mudeli_nimetus']."</td>";

            echo "<td>".$results['soetusaasta']."</td>";

            echo "</tr>";
}

echo "</table>";
于 2013-02-28T09:30:53.793 回答
0

替换你的 if 块,使用下面的代码,希望它可以帮助你

如果(mysql_num_rows($raw_results)> 0){

        echo "<table>";
        echo "<tr>";
        echo "<td>Model name</td>";
        echo "<td>Year</td>";
        echo "</tr>";
    while($results = mysql_fetch_array($raw_results)){
        echo "<tr>";
        echo "<td>".$results['mudeli_nimetus']."</td>";
        echo "<td>".$results['soetusaasta']."</td>";
        echo "</tr>";
    }echo "</table>";
}
于 2013-02-28T09:35:09.600 回答