【问题标题】:php search, show php template based on search returnphp搜索,根据搜索返回显示php模板
【发布时间】:2015-11-04 18:20:16
【问题描述】:

我仍在学习,如果有任何帮助,我们将不胜感激。 HTML 非常简单。还没有样式或类似的东西,都在 localhost 上进行测试。所以我没有现场设置示例。

我只使用 PHP 和 phpmyadmin 中的一个表。我拥有的文件是index.php(表格在这里),search.php(搜索代码存储在这里),provider1.php,provider2.php,provider3.php,provider4.php。

到目前为止,我有一个存储有以下列的表:提供者、州全名、城市、州、邮政编码。我有一个搜索表单,用户输入邮政编码,如果邮政编码与表中的一行匹配,它会查看提供者,检查它是哪一个(提供者1,提供者2,提供者3,提供者4)。在search.php上回显他们有多少选择,城市所在的邮政编码,然后还回显他们输入的邮政编码。

我的问题是我如何告诉它,如果该邮政编码有提供程序,则使用该 provider.php。示例:

92804 = provider1,然后使用provider1.php,并且仍然回显出与该邮政编码对应的城市和州。

index.php:

    <!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>search</title>
</head>

<body>
<form action="search.php" method="get">
    <input type="text" name="search" placeholder="zipcode..."/>
    <input type="submit" value=">>"/>

</form>
</body>
</html>

搜索.php:

 <?php

mysql_connect("localhost","root","root") or die("could not connect");
mysql_select_db("zipcodes") or die("could not find db");

//collect
if (isset($_GET['search'])) {
    $searchq = $_GET['search'];
    $searchq = preg_replace("#[^0-9a-z]#i","",$searchq);

    $query = mysql_query("SELECT * FROM `TABLE 1` WHERE `Zip Code` = '$searchq'") or die("could not search");
    $count = mysql_num_rows($query);
    if($count == 0) {
        $output = 'There was no search results!!';
    }else {
        while($row = mysql_fetch_array($query)) {
            $city = $row['City'];
            $state = $row['State'];
            $provider = $row['Provider Name'];

            $output = '<div> '.$provider.' '.$city.' '.$state.' </div>';
        }
    }

}

switch ($provider) {
    case "provider1":
        //put code here that tells it to use provider1.php
        break;
    case "provider2":
        //put code here that tells it to use provider2.php
        break;
    case "provider3":
        //put code here that tells it to use provider3.php
        break;
    case "provider4":
        //put code here that tells it to use provider4.php
        break;
    default:
        echo "No provider, try again";
}



?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title><?php echo $provider ?> in <?php echo $city ?>, <?php echo $state ?></title>
</head>

<body>
    This is just a results page for testing. This page needs to know what zip to match to a provider, then go to that page.
    <p>You have <?php echo $count ?> choices</p>
    <p>Your provider is <?php echo $provider ?></p>
    <p>You are located in <?php echo $city ?>, <?php echo $state ?> </p>
    <p>The zip code you searched was <?php echo $searchq ?></p>
</body>
</html>

provider1.php:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title><?php echo $provider ?> in <?php echo $city ?>, <?php echo $state ?></title>
</head>

<body>
This would be a template for provider1
<p>You have <?php echo $count ?> choices</p>
<p>You are located in <?php echo $city ?>, <?php echo $state ?> </p>
<p>The zip code you searched was <?php echo $searchq ?></p>
</body>
</html>

这可能吗?还是我需要使用 laravel 之类的东西来启动它或某种类型的框架。

【问题讨论】:

    标签: php html mysql


    【解决方案1】:

    您正在处理哪些数据集?它只是设定范围之间的纯整数吗?

    如果是这样,您可以这样做:

    if($provider > 92804 && < 92806){
    include 'provider1.php';
    }elseif($provider > 92807 && < 92809){
    include 'provider2.php';
    }else{
    // No provider, try again
    }
    

    或者,您也可以使用 preg_match 函数之类的东西,这在处理大型数据集时可能是更好的可扩展解决方案。

    【讨论】:

    • 我不知道我可以只使用“include”,然后使用我需要的模板。这很简单并且可以解决问题。这可能是针对一个新问题,或者您可以指出我正确的方向,当它进行搜索时,网址是 /search-zip.php?search=92804。有没有办法清理它,我看了看,它看起来与 php 路由有关?任何帮助表示赞赏。谢谢。
    • 是的,您可以这样做,您可以将其更改为 /search-zip.php/92804 之类的内容。为此,您可以使用重写规则,对它们进行一些研究。根据您的意思清理 URL 的术语有时被称为“漂亮的 url”,在网络上搜索它也会返回一些与您的问题相关的结果。
    猜你喜欢
    • 2015-11-04
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 2023-03-30
    • 2012-06-25
    • 1970-01-01
    相关资源
    最近更新 更多