-1

私はPHPを初めて使用します、それは学習プロセスです。今、私はこの問題を修正するのに疲れています。いくつかの行が存在するmysqlデータベースがあります。好き :

1) pro_no_sleep  2) pro_country 3) pro_state 4) pro_city etc..

このデータベースコンテンツを取得するためにクエリを実行すると、重複する値のコンテンツが表示されません。例えば。私のpro_no_sleep行2の値は同じです:1のように

pro_no_sleep
1
1
2
3

したがって、phpを使用して次のクエリを実行すると、重複値のコンテンツが表示されません。ユニークな価値のあるコンテンツのみを表示します。2と3のように。

$search = mysql_query("SELECT * FROM property_step1 WHERE pro_no_sleep = '$people' OR 
pro_country = '$country' OR pro_state = '$region' OR pro_city = '$destination'");

htmlフォームテーブルにselectタグからの修正値があるため、クエリで signを使用しませんでした。

PHPコード:

<?php
if (isset($_GET['Submit']) && $_GET['Submit'] == "Search") {
    require_once("func.php");
    $people      = mysql_real_escape_string(htmlspecialchars(trim($_GET['people'])));
    $country     = mysql_real_escape_string(htmlspecialchars(trim($_GET['country'])));
    $region      = mysql_real_escape_string(htmlspecialchars(trim($_GET['region-depart'])));
    $destination = mysql_real_escape_string(htmlspecialchars(trim($_GET['destination'])));
    $from        = mysql_real_escape_string(htmlspecialchars(trim($_GET['from'])));
    $to          = mysql_real_escape_string(htmlspecialchars(trim($_GET['to'])));
    $upload      = "user/content/uploaded";


    $search = mysql_query("SELECT * FROM property_step1 WHERE pro_no_sleep = '$people' OR pro_country = '$country' OR pro_state = '$region' OR pro_city = '$destination'");

    $num = mysql_num_rows($search);

    if ($num == 1) {
        echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" . $num . " result found.";
        while ($result = mysql_fetch_array($search)) {
            echo "<div id='rightsearch'>";
            $propertyid     = (int) $result['propertyid'];
            $getimg         = mysql_query("SELECT * FROM property_step3 WHERE propertyid = 
            '$propertyid' ORDER BY imgname LIMIT 1");
            $protitle_d     = $result['pro_title'];
            $country_d      = $result['pro_country'];
            $region_d       = $result['pro_state'];
            $destination_d  = $result['pro_city'];
            $pro_des_d      = $result['pro_des'];
            $pro_type_d     = $result['pro_type'];
            $pro_no_bed_d   = $result['pro_no_bed'];
            $pro_no_bath_d  = $result['pro_no_bath'];
            $pro_no_sleep_d = $result['pro_no_sleep'];
            $getreview      = mysql_query("SELECT rating FROM property_review WHERE p_id = '$propertyid'");
            $num_review     = mysql_num_rows($getreview);


            while ($reimg = mysql_fetch_array($getimg)) {
                $img = $reimg['imgname'];
                echo "<a href='details.php?propertyid=$propertyid'>";
                echo '<img src="' . $upload . '/' . $img . '" width="' . 100 . '" height=" ' . 100 . '"  />';
                echo "</a>";
            }

            echo "<h2>$protitle_d</h2>";
            echo "<p>$country_d, $region_d, $destination_d</p>";
            //echo myTruncate($pro_des_d, 100) . "<br/>";                       
            echo $pro_des_d . "<br/>";
            echo "<h5>$pro_type_d, $pro_no_bed_d bedroom";
            if ($pro_no_bed_d > 1) {
                echo $plural = "s";
            }
            echo ",";
            echo " $pro_no_bath_d bath";
            if ($pro_no_bath_d > 1) {
                echo $plural2 = "s";
            }
            echo ",";
            echo " $pro_no_sleep_d sleep";
            if ($pro_no_sleep_d > 1) {
                echo $plural3 = "s";
            }
            echo "</h5>";
            echo "$num_review review";
            echo "</div>";
        } // first while statement
    } // second if statment
    else {
        echo "<div id='rightsearch'>";
        echo "No result found";
        echo "</div>";
    }

}
?>
4

1 に答える 1

0

これがあなたの問題です:

$num = mysql_num_rows($search);

    if ($num == 1) {
        echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" . $num . " result found.";
        while ($result = mysql_fetch_array($search)) {
...

mysql_num_rows結果の行数を返します。したがって、結果に1つの行しか含まれていないかどうかを確認し、すべての行を繰り返し処理して(1つしかないことを忘れないでください)、何かを実行します。

結果に少なくとも1つの行が含まれているかどうかを確認する必要があります。

if ($num >= 1) {
于 2012-12-08T04:45:53.070 に答える