2016-05-13 10 views
0

まだコーディングするのが全く新しいです。しかし、私はStack Overflowと自分の基礎知識を使って、データベースから郵便番号を検索し、半径の結果を表示するスクリプトを作成しました。また、コードの一部で町を検索することもできます。しかし町は移動できない別のデータベースにあります。だから私はそれを複雑に見えるように簡素化したいの下にコード化されています。誰も助けることができますか?また、データベースを検索している間。それをやっている間に「検索」という言葉のようなものを追加したいと思います。スクリプトを簡略化する方法

<?php 

$postcode = str_replace('+', '%20', $postcode); 
$postcode = str_replace('!"£$^&*()?<>', '', $postcode); 

include ('config.php'); 

$sqlstring = "SELECT * FROM postcodelatlng WHERE postcode LIKE '".$postcode." %' OR postcode = '".$postcode."' "; 
$result = mysql_query($sqlstring); 

$row = mysql_fetch_assoc($result); 

$lng = $row["longitude"]/180 * M_PI; 
$lat = $row["latitude"]/180 * M_PI; 

mysql_free_result($result);  

$sqlstring2 = "SELECT DISTINCT 
    postcodelatlng.postcode, 
    (
    6367.41 * SQRT(
     2 * (
     1- COS(RADIANS(postcodelatlng.latitude)) * COS(".$lat.") * (
      SIN(RADIANS(postcodelatlng.longitude)) * SIN(".$lng.") + COS(RADIANS(postcodelatlng.longitude)) * COS(".$lng.") 
     ) - SIN(RADIANS(postcodelatlng.latitude)) * SIN(".$lat.") 
    ) 
    ) 
) AS Distance 
FROM 
    postcodelatlng AS postcodelatlng 
HAVING Distance <= '".$radius."' 
ORDER BY Distance "; 

$i = 1; 

$result1 = mysql_query($sqlstring2) or die('query failed: ' . mysql_error()); 
    while($row = mysql_fetch_array($result1)){ 
     $searchlets = "SELECT * FROM property_details WHERE postcode = '".$row['postcode']."' "; 
       $getresult = mysql_query($searchlets); 
        while($row2 = mysql_fetch_array($getresult)) { 

         echo ' <div class="container"> 
     <div class="row"> 
      <a href="viewprop.php?id='.$row2[0].'" target="_blank"> 
       <div class="col-md-12"> 
        <div class="col-md-12 col-md-offset-0 innerResults col-xs-12" align="justify"> 
         <div class="col-md-2 col-xs-12"> 
          <img src="images/rentals/1.jpg" width="80%" height="80%" /> 
         </div> 
         <div class="col-md-8 col-xs-12"> 
          <h3 class="rbgclr1" style="text-align:left;">'. $row2[13]. '</h3> 
          <hr> 
          <p class="rbgclr1" style="text-align:left;">'. $row2[9]. '</p> 
         </div> 
         <div class="col-md-2 col-xs-12"> 
          <h4 class="rbgclr2">£'. $row2[2]. ' Per Month</h3> 
          <h5 class="rbgclr1">£'. $row2[3]. ' Deposit</h4> 
          <br /> 
          <p class="rbgclr1">Bedrooms = '. $row2[4]. '</p> 
          <div class="fb-share-button" data-href="viewprop.php?id='.$row2[0].'" data-layout="button_count" data-mobile-iframe="true"></div> 
         </div> 
        </div> 
       </div> 
      </a> 
     </div> 
    </div> 
      <br />'; 
      if ($i != 0 && $i%2 == 0) 
    echo '<hr/>'; 
        } 


    } 


$searchlets2 = "SELECT * FROM property_details WHERE street = '".$postcode."' "; 
       $getresult2 = mysql_query($searchlets2); 
        while($row3 = mysql_fetch_array($getresult2)) { 
         echo ' <div class="container"> 
     <div class="row"> 
      <a href="viewprop.php?id='.$row3[0].'"> 
       <div class="col-md-12"> 
        <div class="col-md-12 col-md-offset-0 innerResults col-xs-12" align="justify"> 
         <div class="col-md-2 col-xs-12"> 
          <img src="images/rentals/1.jpg" width="80%" height="80%" /> 
         </div> 
         <div class="col-md-8 col-xs-12"> 
          <h3 class="rbgclr1" style="text-align:left;">'. $row3[13]. '</h3> 
          <hr> 
          <p class="rbgclr1" style="text-align:left;">'. $row3[9]. '</p> 
         </div> 
         <div class="col-md-2 col-xs-12"> 
          <h4 class="rbgclr2">£'. $row3[2]. ' Per Month</h3> 
          <h5 class="rbgclr1">£'. $row3[3]. ' Deposit</h4> 
          <br /> 
          <p class="rbgclr1">Bedrooms = '. $row3[4]. '</p> 
          <div class="fb-share-button" data-href="viewprop.php?id='.$row3[0].'" data-layout="button_count" data-mobile-iframe="true"></div> 
         </div> 
        </div> 
       </div> 
      </a> 
     </div> 
    </div> 
      <br />'; 
      if ($i != 0 && $i%2 == 0) 
    echo '<hr/>'; 
        } 

mysqli_close($con); 

?> 
+0

$ result1や$ result2のような名前は使用しないことをお勧めします。それは不明だ。また、mysqlは廃止され、コードをビューから分離しようとしています。 – Matheno

+0

さて、これを変更しました。 –

+0

私はいくつかのMVCフレームワーク(基本的にHTMLコードとPHPコードを分割)を使用し、JavaScriptとAJAXのいくつかを学ぼうとすることをお勧めします。さもなければ、ページに検索を書く方法と検索が完了したときに結果を表示する方法はありません。 – Richard

答えて

0
postcode LIKE '".$postcode." %' 
OR postcode = '".$postcode."' 

が簡素化(および高速化)することができますあなたが

INDEX(postcode) 

が必要になります単に

postcode LIKE '".$postcode." %' 

を実行して(私はHTMLのコードを苦労するつもりはありません;これはそのための間違ったフォーラムです。コードをほとんどSQLに単純化してください)

distance式は、テーブル全体をスキャンする必要があります。それが十分に速いかどうかは、そのテーブルの大きさに依存します。

あなたは構文で(同じセーバー上の)別のデータベースからデータを取り出すことができるよう

FROM db1.tableA JOIN db2.tableB ON ... 

使用JOIN代わりに別の、その後、1つのテーブルからフェッチします。

do mysql_*インターフェイスを使用します。これは廃止され、間もなく消滅します。 mysqli_*またはPDOに切り替えます。 はありませんそれらを混ぜてください! (私は最後にmysqli_closeを参照してください)

これらのものをクリーンアップしてから、質問を始めます。

関連する問題