MYSQL Posta Kodu aranıyor

1 Cevap php

Ben daha önce bir sorun değildi zor bir zaman zip göre arama, yaşıyorum ve büyük olasılıkla bir MySQL / PHP programcı için kolay bir sorun olacaktır.

Ben çeşitli alanlara göre arama yapmak gerekir ev listelerinin tam bir veritabanı var. Ben posta koduna göre arama dek, hiçbir sorun Şehirle var (ki ben çalışmak için kullanılan dediğim gibi).

Birisi hızlı bir bakış almak ve sorunu görmek mümkün olacağını umuyoruz gibi neyse burada ben çalışıyorum kod kısmı.


$sql = "SELECT DISTINCT

mls_listings.c1, mls_listings_images.c1, mls_listings.c2, mls_listings.c3, mls_listings_images.c3 as image, mls_listings_images.c5, mls_listings.c4, mls_listings.c5, mls_listings.c6, mls_listings.c7, mls_listings.c8, mls_listings.c9 FROM mls_listings, mls_listings_images WHERE (mls_listings.c1=mls_listings_images.c1) AND (mls_listings_images.c5 = '1') AND (mls_listings_images.c1 LIKE '%{$_GET['uniqueid']}%') AND (mls_listings.c3 IN('{$_GET['redondobeach']}','{$_GET['santamonica']}','{$_GET['specificcity']}', '{$_GET['hermosabeach']}','{$_GET['elsegundo']}','{$_GET['manhattanbeach']}', '{$_GET['marinadelrey']}','{$_GET['palosverdes']}','{$_GET['playadelrey']}', '{$_GET['playavista']}','{$_GET['torrance']}','{$_GET['venice']}', '{$_GET['westchester']}'))

VE (mls_listings.c7 LIKE '% {$ _GET [' zipwestla ']}%')

VE (mls_listings.c5 LIKE '% {$ _GET [' yatak ']}%')

VE (mls_listings.c6 LIKE '% {$ _GET [' hamam ']}%')

VE (mls_listings.c4> = '{$ _GET [' MinPrice ']}'

AND mls_listings.c4 <= '{$_GET['maxprice']}') ORDER BY mls_listings.c4";


*** Üzgünüm, ön / kod kodunun son yarısında çalışmak için alamadım.

Ayrıca -

mls_listings.c7 zip kodları tutar

mls_listings.c3 şehir eserlerle şehir adları (yani Ventura) ** Arama tutar

Burada şehir ve zip ile arama form içinde checkboxe'larin bir örnektir:


<input type='checkbox' value='Torrance' name='torrance' class="results1">
Torrance<br>
<input type='checkbox' value='Venice' name='venice' class="results1">
Venice<br>
<input type='checkbox' value='90403' name='zipwestla' class="results1">
West LA<br>
<input type='checkbox' value='West Chester' name='westchester' class="results1">
Westchester<br>

Gerçekten bazı yardım / tavsiye veya bana doğru yönde rehberlik hatta bazı bağlantılar seviniriz.

Daha fazla bilgi gerekiyorsa lütfen bana bildirin. benden de.

Teşekkür ederim.

1 Cevap

Before I begin: You should NEVER be putting user received values straight into your SQL.

Bana biraz daha net şeyler yaparak yardımcı olalım:

$sql = "
SELECT DISTINCT 
    mls_listings.c1, 
    mls_listings_images.c1, 
    mls_listings.c2, 
    mls_listings.c3, 
    mls_listings_images.c3 as image, 
    mls_listings_images.c5, 
    mls_listings.c4, 
    mls_listings.c5, 
    mls_listings.c6, 
    mls_listings.c7, 
    mls_listings.c8, 
    mls_listings.c9 
FROM 
    mls_listings, 
    mls_listings_images 
WHERE 
    (mls_listings.c1 = mls_listings_images.c1) AND 
    (mls_listings_images.c5 = '1') AND 
    (mls_listings_images.c1 LIKE '%{$_GET['uniqueid']}%') AND 
    (mls_listings.c3 IN (
        '{$_GET['redondobeach']}',
        '{$_GET['santamonica']}',
        '{$_GET['specificcity']}',
        '{$_GET['hermosabeach']}',
        '{$_GET['elsegundo']}',
        '{$_GET['manhattanbeach']}',
        '{$_GET['marinadelrey']}',
        '{$_GET['palosverdes']}',
        '{$_GET['playadelrey']}',
        '{$_GET['playavista']}',
        '{$_GET['torrance']}',
        '{$_GET['venice']}',
        '{$_GET['westchester']}')
    ) AND 
    (mls_listings.c7 LIKE '%{$_GET['zipwestla']}%') AND 
    (mls_listings.c5 LIKE '%{$_GET['beds']}%') AND 
    (mls_listings.c6 LIKE '%{$_GET['baths']}%') AND 
    (
        mls_listings.c4 >= '{$_GET['minprice']}' AND 
        mls_listings.c4 <= '{$_GET['maxprice']}'
    ) 
ORDER BY mls_listings.c4";

Unticked herhangi bir onay kutusu, PHP için hiçbir şey dönecektir. Eğer hataları size açtıysanız bütün bu unticked kutuları için tanımlanmamış değerler hakkında bir uyarı aldı edeceğiz. Bunları kullanmaya çalıştığınızda PHP yorumlayıcı boş bir dize verecektir.

(ml_listings.c3 IN (....)) durumu bir eşleşme bulmak olacak ve (mls_listings.c7 LIKE '%%') devolves çünkü (mls_listings.c7 LIKE '%{$_GET['zipwestla']}%') durum her şeyi maçlar çünkü şehirler kullanırken artık bu işleri.

Sadece ile arıyorsan zipwestla işaretli (ve ben bu çalıştığınız ne olduğunu tahmin ediyorum) sonra (ml_listings.c3 IN (....)) durumu hiçbir maçlar, o (ml_listings.c3 IN ('','','', '','','', '','','', '','','', '')) böylece devolves bir girişin sürece ml_listings.c3 hiçbir karşılaşmalar olacak boş bir dizedir.

Sen gerçekten geri dönmek ve bu yeniden işleme gerek, ama sen burada soruyorsun beri benim önerim var:

SELECT DISTINCT 
    mls_listings.c1, 
    mls_listings_images.c1, 
    mls_listings.c2, 
    mls_listings.c3, 
    mls_listings_images.c3 as image, 
    mls_listings_images.c5, 
    mls_listings.c4, 
    mls_listings.c5, 
    mls_listings.c6, 
    mls_listings.c7, 
    mls_listings.c8, 
    mls_listings.c9 
FROM 
    mls_listings, 
    mls_listings_images 
WHERE 
    (mls_listings.c1 = mls_listings_images.c1) AND 
    (mls_listings_images.c5 = '1') AND 
    (mls_listings_images.c1 LIKE '%{$_GET['uniqueid']}%') AND 
    ((mls_listings.c3 IN (
        '{$_GET['redondobeach']}',
        '{$_GET['santamonica']}',
        '{$_GET['specificcity']}',
        '{$_GET['hermosabeach']}',
        '{$_GET['elsegundo']}',
        '{$_GET['manhattanbeach']}',
        '{$_GET['marinadelrey']}',
        '{$_GET['palosverdes']}',
        '{$_GET['playadelrey']}',
        '{$_GET['playavista']}',
        '{$_GET['torrance']}',
        '{$_GET['venice']}',
        '{$_GET['westchester']}')
    ) OR 
    (mls_listings.c7 LIKE '%{$_GET['zipwestla']}%')) AND 
    (mls_listings.c5 LIKE '%{$_GET['beds']}%') AND 
    (mls_listings.c6 LIKE '%{$_GET['baths']}%') AND 
    (
        mls_listings.c4 >= '{$_GET['minprice']}' AND 
        mls_listings.c4 <= '{$_GET['maxprice']}'
) 
ORDER BY mls_listings.c4

Unutmayın ki hiçbir şey o mutlulukla tüm satırları maç olacak beri veritabanında her şeyi iade edeceğini işaretli ise mls_listings.c7. Hatta yararlı davranış olabilir dong konum gibi görünüyor ne için.

Ama, güzel, çok güzel üstüne bir kiraz ile lütfen, lütfen, lütfen, kılavuzda bağlı değişkenleri bakmak gidin.