PHP提交按钮导致strang url问题

时间:2014-06-27 16:40:22

标签: php submit

我正在开发一个PHP搜索框,它应该专门用于数据库来查找关键字。当我点击搜索按钮时,虽然唯一改变的是URL,但我已经查看了十几次代码并且似乎无法找到错误。我认为它必须以我的名义" searchSubmitButton",但我已经绝对确保无处不在。我还发现了其他一些拼写错误,但我确定必须有一个我错过的错误。

Here is an imgur that shows what happens正如您可以看到网址更改,但没有其他内容可以打印出来。

编辑:我很抱歉我心不在焉忘记发布我的代码。

的index.php

<?php

require("./config.php");

if (isset($_POST['searchSubmitButton'])) { // If the form has been submitted
    if (!isset($_POST['searchText']) || empty($_POST['searchText'])) { //If the search text wasn't set
        die("<strong>Error:</strong> Search text empty");
    } else {
        $searchText = $mysql->real_escape_string($_POST['searchText']);

        $query = $mysql->query("SELECT * FROM `products` WHERE `product` LIKE '%" . $searchText . "%'");

        if ($query->num_rows) { // If at least one row has been returned
            print("<h3>Results:</h3>\n");
            print("<table id=\"resultsTable\">\n");

            print("<th>Item Number</th>\n");
            print("<th>Product</th>\n");
            print("<th>Price</th>\n");

            while ($product = $query->fetch_assoc()) {
                print("<tr>\n");

                print("<td>" . $product['id'] . "</td>\n");
                print("<td>" . $product['product'] . "</td>\n");
                print("<td>" . $product['price'] . "</td>\n");

                print("</tr>\n");
            }
            print ("</table>\n");
        } else { // If nothing has been returned
            print("<h3>Sorry, there were no products matching your search.</h3>\n");
        }
    }
}

print("<h2>Search Products</h2>\n");
print("<form id=\"searchForm\" action=\"./\" methond=\"post\">\n");
print("<input id=\"searchText\" name\"searchText\" type=\"text\" /><br /><br />\n");
print("<button id=\"searchSubmitButton\" name=\"searchSubmitButton\" type=\"submit\">Search</button>\n");
print("</form>")
?>

的config.php

<?php

$dbHost = "localhost";
$dbUser = "root";
$dbPass = "";
$dbName = "test1";

$mysql = new mysqli($dbHost, $dbUser, $dbPass, $dbName);

if ($mysql->connect_error) {
    die("<strong>Error: </strong> (" . $mysql->connect_errno . ")" . $mysql->connect_error);
} else {
    print("<strong>Successfully connected to the database.</strong><br /><br />");
}
?>

2 个答案:

答案 0 :(得分:1)

导致代码失败的问题包括:

methond=\"post\"

其中包含拼写错误。将其更改为:

method=\"post\"

此外,缺少等号

name\"searchText\"

将其更改为

name=\"searchText\"

您的代码将有效。

旁注:您可能还想将action=\"./\"更改为action=\"\"action='',因为您正在执行同一页面中的所有内容。

答案 1 :(得分:0)

我认为您错误地 GET POST 请求。您现在拥有的是 GET 请求,这意味着您通过表单提交的数据将附加到网址。你想要的是一个post请求(数据不会附加到url并直接发送到php页面)。只需在表单标记中将method="get"更改为method="post"

使用代码回答已编辑的问题:您现在使用的代码正在等待 POST 请求,但您的表单正在发送 GET 请求,如说method="post"添加<form>,提交表单,php会识别它。

我建议你阅读this tutorial