2015-11-04 109 views
0

我仍在學習和任何幫助,將不勝感激。 HTML是相當簡陋的骨骼。沒有樣式或類似的東西,所有在本地主機上進行測試。所以我沒有一個活的例子。php搜索,顯示基於搜索返回的php模板

我只使用PHP和phpmyadmin中的表。我有的文件是index.php(表單在這裏),search.php(搜索代碼存儲在這裏),provider1.php,provider2.php,provider3.php,provider4.php。

到目前爲止,我有一個與這些列存儲的表:提供者,州全名,城市,州,郵政編碼。我有一個搜索表單,用戶輸入一個郵政編碼,如果郵政編碼匹配表中的一行,它會查看提供者,檢查它是哪一個(provider1,provider2,provider3,provider4)。在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> 

的search.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的東西來啓動它或某種類型的框架。

回答

0

你正在處理的是什麼數據集?它只是整個範圍之間的純粹整數?

如果是這樣,你可能只是做這樣的事情:

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

或者您可以使用的東西,如函數的preg_match大型數據集時,這將可能是更好的可擴展解決方案。

+0

我不知道我可以只使用「包含」,然後是我需要的模板。這很簡單,並做到這一點。這可能是一個新問題,或者你可以指向正確的方向,當它搜索時,url是/search-zip.php?search=92804。有沒有辦法清理這個,我看,它看起來像做什麼與PHP路線?任何幫助讚賞。謝謝。 – bootstrap714

+0

是的,您可以做到這一點,您可以將其更改爲/search-zip.php/92804。要做到這一點,你可以使用重寫規則,對它們進行一些研究。根據您的意思清理URL的術語有時稱爲「漂亮的URL」,在網絡上搜索這些內容也會返回一些與您的問題相關的結果。 – Pepzter9