【问题标题】:PHP Search Form display incorrectly? [closed]PHP 搜索表单显示不正确? [关闭]
【发布时间】:2014-05-14 13:05:34
【问题描述】:

这里我有一个搜索表单和 PHP 搜索代码,但我似乎无法解决问题。那么我遇到的问题是我有一个待售页面和一个待租页面,当我使用搜索表单时,它会显示属性,但它会显示待售页面和待租页面中的所有属性。 如果我选择了待售选项,那么它需要显示所有待售属性,对于出租也是如此。

                    <div class="col-lg-4 col-md-4 col-sm-12">
                        <div class="searchmodule clearfix" data-effect="slide-right">
                        <form id="advanced_search" action="search.php" class="clearfix" name="advanced_search" method="post">

                            <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
                                <label for="type"><b>Type</b></label>
<select name="type">
<option value=""></option>
  <option value="House">House</option>
  <option value="Apartment">Apartment</option>
  <option value="Flat">Flat</option>
  <option value="Townhouse">Townhouse</option>
  <option value="Plot">Plot</option>
  <option value="Farm">Farm</option>
</select>

                            </div>

                            <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
                                <label for="status"><b>Status</b></label>

<select name="status">
<option value=""></option>
  <option value="For Sale">For Sale</option>
  <option value="For Rent">For Rent</option>
</select>

                            </div>


                            <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
                                <label for="bedrooms"><b>Bedrooms</b></label>
<select name="bedrooms">
<option value=""></option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
  <option value="6">6</option>
  <option value="7">7</option>
  <option value="8">8</option>
  <option value="9">9</option>
  <option value="10">10</option>
</select>

                            </div>
                            <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
                                <label for="baths"><b>Bathrooms</b></label>
<select name="baths">
<option value=""></option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
  <option value="6">6</option>
  <option value="7">7</option>
  <option value="8">8</option>
  <option value="9">9</option>
  <option value="10">10</option>
</select>


                            </div>
                            <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
                                <label for="min_price"><b>Min Price</b></label>

<select name="min_price">
<option value=""></option>
  <option value="1000">1000</option>
  <option value="2000">2000</option>
  <option value="3000">3000</option>
  <option value="4000">4000</option>
  <option value="5000">5000</option>
  <option value="6000">6000</option>
  <option value="7000">7000</option>
  <option value="8000">8000</option>
  <option value="9000">9000</option>
  <option value="10000">10000</option>
</select>

                            </div>
                            <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
                                <label for="max_price"><b>Max Price</b></label>
<select name="max_price">
<option value=""></option>
  <option value="100000">100000</option>
  <option value="200000">200000</option>
  <option value="300000">300000</option>
  <option value="400000">400000</option>
  <option value="500000">500000</option>
  <option value="600000">600000</option>
  <option value="700000">700000</option>
  <option value="800000">800000</option>
  <option value="900000">900000</option>
  <option value="1000000">1000000</option>
</select>

                            </div>

                            <div class="clearfix"></div>
                            <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
                                <button name="search" type="submit" class="btn btn-success">SEARCH PROPERTY</button>

我对整个 PHP 和 MySQL 还是个新手,所以请帮帮我。

这里我有用于搜索的 PHP 编码,问题出在某个地方,我只是不知道是什么:

     <?php
                   include 'database.php';
                   $pdo = Database::connect();
                     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                   $sql = "SELECT  * FROM properties INNER JOIN images ON images.propertyid = properties.propertyid WHERE Status ='For Sale' OR Status = 'For Rent' GROUP BY images.propertyid";



                   foreach ($pdo->query($sql) as $row) {

             $propertyid =   $row['PropertyId'];
                 $pdo = Database::connect();
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql1 = "SELECT * FROM images where PropertyId = ?";
        $q1 = $pdo->prepare($sql1);
        $q1->execute(array($propertyid));
        $data = $q1->fetch(PDO::FETCH_ASSOC);


$type = $_POST['type'];
$status = $_POST['status'];
$minprice = $_POST['min_price'];
$maxprice = $_POST['max_price'];
$bedrooms = $_POST['bedrooms'];
$baths = $_POST['baths'];


if ($status != ''){
 $qStatus = " AND status = '$status' ";
 $sql = $sql . $qStatus;
}
if ($type != ''){
$qType = " AND type = '$type' ";
$sql = $sql . $qType;
}
if ($baths != ''){
$qBaths = " AND baths = '$baths' ";
$sql = $sql . $qBaths;
}
if ($bedrooms != ''){
$qBedrooms = " AND bedrooms = '$bedrooms' ";
$sql = $sql . $qBedrooms;
}
if ($minprice != ''){
$qMinprice = " AND min_price = '$minprice' ";
$sql = $sql . $qMinprice;
}
if ($maxprice != ''){
$qMaxprice = " AND max_price = '$maxprice' ";
$sql = $sql . $qMaxprice;
}
$sql = $sql." GROUP BY PropertyId";


if ($status == 'For Sale'){


           echo '<li class="col-md-4">';

                            echo '<div class="proj_block">';
                            echo '<img alt="" style="opacity: 1" src="'. $row['ImageUrl'].'"></div>';
                            echo '<div class="proj_descr"><h2>'. $row['Title'] . '</h2>';
                            echo '<div class="proj_descr_txt">'.'<b>Location: </b> '. $row['Location'] . '</div>';
                            echo '<div class="proj_descr_txt">'.'<b>Bed: </b> '. $row['Bedrooms'] . '</div>';
                            echo '<div class="proj_descr_txt">'.'<b>Bath: </b> '. $row['Bathrooms'] . '</div>';
                            echo '<div class="proj_descr_txt">'.'<b>Parking: </b> '. $row['Parking'] . '</div>';
                            echo '<div class="proj_descr_txt">'.'<b>Price: </b>R'. $row['Price'] . '</div>';
                            echo '<a href="readmore.php?PropertyId='.$row['PropertyId'].'">Read More</a>';

                            echo '</li>';


}


else if ($status == 'For Rent'){


echo '<li class="col-md-4">';

                            echo '<div class="proj_block">';
                            echo '<img alt="" style="opacity: 1" src="'. $row['ImageUrl'].'"></div>';
                            echo '<div class="proj_descr"><h2>'. $row['Title'] . '</h2>';
                            echo '<div class="proj_descr_txt">'.'<b>Location: </b> '. $row['Location'] . '</div>';
                            echo '<div class="proj_descr_txt">'.'<b>Bed: </b> '. $row['Bedrooms'] . '</div>';
                            echo '<div class="proj_descr_txt">'.'<b>Bath: </b> '. $row['Bathrooms'] . '</div>';
                            echo '<div class="proj_descr_txt">'.'<b>Parking: </b> '. $row['Parking'] . '</div>';
                            echo '<div class="proj_descr_txt">'.'<b>Price: </b>R'. $row['Price'] . '</div>';
                            echo '<a href="readmore.php?PropertyId='.$row['PropertyId'].'">Read More</a>';

                            echo '</li>';

        }
        }
                   Database::disconnect();
                  ?>

【问题讨论】:

  • 你需要什么样的加入?
  • $data['ImageUrl'] 替换为$row['ImageUrl']
  • 您的具体要求是什么?表有不同类型的连接吗?关于你的错误,你应该检查图像是否在你的数据库中可用?如果不是 den 显示默认的无图片图片,并且当图片可用时显示保存的 img,您可以使用 php 中的 isset 函数进行检查。
  • Daan 你看我说我对这个有点陌生所以我不知道哈哈哈
  • 我试过替换它不起作用

标签: php html mysql forms search


【解决方案1】:

您可以像这样使用 LEFT JOIN:

SELECT * FROM PROPERTIES as Prop
LEFT JOIN Images as Img
ON Img.PropertyId = Prop.PropertyId
WHERE **** Your condition ****
ORDER BY ** (DESC or ASC)

【讨论】:

  • 好吧,我试试看,谢谢你的回复:)
  • 我试过这个 LEFT JOIN 它可以工作,但它重复了很多次,我仍然得到这个错误:(!)注意:未定义的变量:C:\wamp\www\sa 中的数据第 66 行的属性 finder\search.php
  • 但是当我将 $data 更改为 $row 时,图像显示但也重复了很多?
  • 可以加图片吗?
  • 如果你想避免重复的行,你可以使用一个简单的 group by。