使用html表单和php从MySql数据库检索数据

使用html表单和php从MySql数据库检索数据,php,Php,我是php新手,我读过几乎所有的论坛,但没有结果!!!我正在尝试使用html表单和php文件从mySql数据库中检索一些数据。名为choose.htm的html表单如下所示: <form name="choose" method = "POST" action = search.php> <table> <tr> <tr><td height="3"></td></tr>

我是php新手,我读过几乎所有的论坛,但没有结果!!!我正在尝试使用html表单和php文件从mySql数据库中检索一些数据。名为choose.htm的html表单如下所示:

    <form name="choose" method = "POST" action = search.php>
    <table>
    <tr>
    <tr><td height="3"></td></tr>
    <td width="60"><font1>Denomination</font1></td>
    <td><Select name = denom>
        <option value="" selected>All</option>
              <option value="half">Half Cents</option>
        <option value="large">Large Cents</option>
        <option value="bust">Bust Dollars</option>
        <option value="morgan">Morgan Dollars</option>
    </Select></td></tr>
    <tr>
    <tr><td height="3"></td></tr>
    <td width="60"><font1>Year</font1></td>
    <td><Select name = year>
        <option value="" selected>All</option>
        <option value="1793"><font4>1793</font></option>      
        <option value="1794">1794</option>    
        <option value="1795">1795</option>    
        <option value="1796">1796</option>    
    </Select></td></tr>

    <tr>
    <tr><td height="3"></td></tr>
    <td width="60"><font1>Picture</font1></td>
    <td><Select name = picture>
        <option value="" selected>All</option>
        <Option value="liberty">Liberty Cap</Option>
        <Option value="draped">Draped Bust</Option>
        <Option value="classic">Classic Head</Option>
        <Option value="chain">Chain Reverse</Option>
    </Select></td></tr>

   <tr><td height="3" colspan="2"></td></tr>
   <tr><td><font1>Text</b></font1></td>
   <td><input name=text type=text></td></tr>
   </Select></td></tr>

   <tr><td><input name=look type=submit value=Submit></td></tr>
   </form>
    <html>
    <body>

    <?php
    $username="root";
    $password="";
    $database="xxxxxxxx";

    mysql_connect(localhost,$xxxxxx,$xxxxxx);
    @mysql_select_db($database) or die( "Unable to select database");
    $query="SELECT * FROM coins";
    $result=mysql_query($query);

    $num=mysql_numrows($result);

    mysql_close();

    echo "<b><center>US Coins</center></b><br><br>";

    $i=0;
    while ($i < $num) {

    $denom=$_POST["denom"];
    $year=$_POST["year"];
    $picture=$_POST["picture"];
    $text=$_POST["text"];

    echo "$denom<br>Year: $year<br>Picture: $picture<br>Text: $text<br><br>";

    $i++;
    }
    ?>

    </body>
    </html>

面额
全部的
半美分
大仙
破产美元
摩根美元
年
全部的
1793
1794
1795
1796
图画
全部的
自由帽
波浪头像
经典头
倒链
正文
名为search.php的php文件如下所示:

    <form name="choose" method = "POST" action = search.php>
    <table>
    <tr>
    <tr><td height="3"></td></tr>
    <td width="60"><font1>Denomination</font1></td>
    <td><Select name = denom>
        <option value="" selected>All</option>
              <option value="half">Half Cents</option>
        <option value="large">Large Cents</option>
        <option value="bust">Bust Dollars</option>
        <option value="morgan">Morgan Dollars</option>
    </Select></td></tr>
    <tr>
    <tr><td height="3"></td></tr>
    <td width="60"><font1>Year</font1></td>
    <td><Select name = year>
        <option value="" selected>All</option>
        <option value="1793"><font4>1793</font></option>      
        <option value="1794">1794</option>    
        <option value="1795">1795</option>    
        <option value="1796">1796</option>    
    </Select></td></tr>

    <tr>
    <tr><td height="3"></td></tr>
    <td width="60"><font1>Picture</font1></td>
    <td><Select name = picture>
        <option value="" selected>All</option>
        <Option value="liberty">Liberty Cap</Option>
        <Option value="draped">Draped Bust</Option>
        <Option value="classic">Classic Head</Option>
        <Option value="chain">Chain Reverse</Option>
    </Select></td></tr>

   <tr><td height="3" colspan="2"></td></tr>
   <tr><td><font1>Text</b></font1></td>
   <td><input name=text type=text></td></tr>
   </Select></td></tr>

   <tr><td><input name=look type=submit value=Submit></td></tr>
   </form>
    <html>
    <body>

    <?php
    $username="root";
    $password="";
    $database="xxxxxxxx";

    mysql_connect(localhost,$xxxxxx,$xxxxxx);
    @mysql_select_db($database) or die( "Unable to select database");
    $query="SELECT * FROM coins";
    $result=mysql_query($query);

    $num=mysql_numrows($result);

    mysql_close();

    echo "<b><center>US Coins</center></b><br><br>";

    $i=0;
    while ($i < $num) {

    $denom=$_POST["denom"];
    $year=$_POST["year"];
    $picture=$_POST["picture"];
    $text=$_POST["text"];

    echo "$denom<br>Year: $year<br>Picture: $picture<br>Text: $text<br><br>";

    $i++;
    }
    ?>

    </body>
    </html>

我在数据库中获得了行数的输出,并选择了以下选项:

一半 年份:1793 图片: 正文:

一半 年份:1793 图片: 正文:

。。。。。。。。继续

我解决不了这个问题。我们将非常感谢所有的帮助


Sarp

$\u POST
包含与表单一起提交的值。没有理由在循环中打印它,因为在您的情况下,每个键都有一个值。如果您想从MySQL结果中输出数据,您需要在
while
循环中使用类似
MySQL\u fetch\u array
的东西,然后输出此返回的每个数组的值


一个很好的起点是,它包含一个工作示例,您可以从中轻松推断基本情况(即使您不想使用TFM)。

如果您想找到错误,您需要一些更好的代码

1) -将HTML代码放在该表单中,然后首先修复所有错误。
2) 在启动HTML之前解析所有PHP代码。否则,用户将在一秒钟内看到加载页面的一半。而且还不太干净。
3) @mysql\u select\u db($database)或die()错误。处理PHP错误
4) 使用
mysql\u fetch\u assoc
而不是
mysql\u numrows

您可以感谢我稍后清理了您混乱的代码

<?php
    $host = 'localhost';
    $username="root";
    $password="";
    $database="xxxxxxxx";


    $connection = @mysql_connect($host,$username,$password);
    $selection = @mysql_select_db($database, $connection);

    if(!$connection || !$selection){
        echo 'Connection failed. Contact webmaster and ask if his connection settings are okay.';
    }

    $query = "SELECT * FROM coins";
    $mysqlquery = mysql_query($query);

    if($mysqlquery){ // Query succeed! :D
        $result = mysql_fetch_assoc($mysqlquery); // We'll parse em later
    }
    else
    {
        echo 'MySQL Query failed! Give the webmaster a slap for his bad coding.';
    }

    mysql_close();

    // We've handeled all the PHP stuff, now we can get started with printing everything
?>

<html>
<body>

    <?php
        echo '<b><center>US Coins</center></b><br><br>'; // This HTML code needs cleanup too

        $i = 0;
        while($i < $num){
            echo htmlspecialchars($_POST['denom']).'<br>Year: '. htmlspecialchars($_POST['year']) .'<br>Picture: '. htmlspecialchars($_POST['picture']) .'<br>Text: '. $_POST['text'] .'<br><br>';
            $i++;
        }
    ?>

</body>
</html>

如果数据库中没有任何数据,查询将返回空结果。 因此,确保数据库中有一些数据

试试这样的

$num=mysql_fetch_array(mysql_query("select * from coins"))
while ($i<$num) {
echo $num . "<br />";
}
$num=mysql\u fetch\u数组(mysql\u查询(“从硬币中选择*))

而($ithHTML属性
name
需要引号,例如
name=“foo”
not
name=foo
@PatrickLorio-不正确。在这种情况下,引号是可选的。它们是很好的样式,但不是必需的。就像不将标记大写或在属性和值之间加空格一样。@PatrickLorio不是必需的,但与f***一样难看。请不要评判我。这是我从n上的教程中学到的et…亲爱的bkconrad,确实非常感谢你提到的手册。我从中学到了很多东西。但是,我仍然对如何使用html表单以及如何将表单中的值与php结果文件相结合感到困惑。亲爱的bkconrad,确实非常感谢你提到的手册。我从中学到了很多东西。但是,我仍然对如何使用h感到困惑tml表单,并将其中的值与php结果文件相结合。——SarpThanks差异很大,为什么要等到以后再感谢呢!我学到了很多东西,但问题是您键入的查询返回空。。