私はCompでグループと働いています。 PHP、mySQL、HTMLを使ったこのWebサイトプロジェクトのSciクラスです。検索機能に問題があります。ここで MySQL/PHP検索機能?
は完全なコードです:<html>
<head>
<title>US Cities Database</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<link rel="stylesheet" href="index.css" type="text/css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<script>
function doWhenReady() {
$('a').click(showMap);
};
function showMap(event) {
var element = $(event.currentTarget);
var lat = element.attr('lat');
var long = element.attr('long');
var url = "https://maps.google.com/maps?q="+lat+","+long+"&h1=es&z=12&t=m&output=embed";
$('iframe').attr('src', url);
}
$(document).ready(doWhenReady);
</script>
<body class="container">
<h4>US Cities Zip Code and Latitude/Longitude Locator</h4>
<p><strong>Make sure to enter the smaller Zip Code in the first box, and the larger Zip Code in the second box.</strong></p>
<form action="index.php" method="POST" class="form-inline">
<div class="form-group">
<label for="city">City</label>
<input type="text" class="form-control" name="city" />
</div>
<div class="form-group">
<label for="state">State</label>
<input type="text" class="form-control" name="state" />
</div>
<div class="form-group">
<label for="zipFrom">Zipcode from:</label>
<input type="text" class="form-control" name="zipFrom" />
</div>
<div class="form-group">
<label for="zipTo">to:</label>
<input type="text" class="form-control" name="zipTo" />
</div>
<button type="submit" class="btn btn-default btn-primary">Search</button>
</form>
<hr>
<div class="row">
<div class="col-md-5 scrollable">
<div class="search-results">
<h4>Search results:</h4>
<?php
$host = 'localhost';
$username = 'caleyhalpern';
$password = '';
$dbName = 'project224';
$db = mysqli_connect ($host, $username, $password, $dbName);
if (!$db) {
die("Failed to connect to MySQL: (" . mysqli_connect_errno() . ") " . $mysqli->connect_error);
}
$searchCity = $_POST['city'];
$searchState = $_POST['state'];
$searchZipCode = $_POST['zipcode'];
if ((isset($searchCity) || isset($searchState)) && (($searchCity != '') || ($searchState != '')))
$query = 'SELECT * FROM zips WHERE city LIKE "%'.$searchCity.'%" AND state LIKE "%'.$searchState.'%"';
$results = mysqli_query($db, $query);
$resultArray = mysqli_fetch_all($results, MYSQLI_ASSOC);
?>
<table class="table table-striped table-condensed small">
<thead>
<tr>
<th>Show</th>
<th>Zip</th>
<th>State</th>
<th>City</th>
<th>Lat</th>
<th>Long</th>
</tr>
</thead>
<tbody>
<?php
foreach($resultArray as $city) {
echo "<tr>";
echo '<td><a href="#" lat="'.$city['lat'].'" long="'.$city['lng'].'">Show</a></td>';
echo "<td>".$city['zip']."</td>";
echo "<td>".$city['state']."</td>";
echo "<td>".$city['city']."</td>";
echo "<td>".$city['lat']."</td>";
echo "<td>".$city['lng']."</td>";
echo "</tr>";
}
?>
</tbody>
</table>
<?php
}
?>
</div>
</div>
<div class="col-md-7">
<div class="map">
<h4>Map:</h4>
<iframe src=""></iframe>
</div>
</div>
</div>
</body>
</html>
申し訳ありませんが、それは一種の長いのですが、あなたは、PHPのセクションまでスクロールした場合、あなたは「...(IF((ISSET」を参照してくださいよ、とそれは私たちが問題を抱えているところです。都市や州の検索機能がありますが、郵便番号検索機能に問題があります。ユーザーが2つの郵便番号を入力するようにしようとしています。最初の検索ボックスに入り、大きい郵便番号が2番目の検索ボックスに表示されます(例:82190、2番目:92120)。ユーザーが入力した2つの郵便番号の間にあるすべての郵便番号を検索します私は検索機能が都市/州のものと似ていることを理解しています。 PHPとMySQLの新機能で、少し苦労しています。
データベースであなたの 'zipcode'列のデータ型は何ですか? –
**警告**:mysqliを使用する場合は、パラメータ化されたクエリと['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してユーザを追加する必要がありますデータを照会に追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成するため、これを達成するために文字列補間または連結を使用しないでください。 **決して '$ _POST'データを直接クエリに入れないでください。これらのことに注意しようとすると、忘れてしまうと深刻な問題になることがあります。パラメータ化されたクエリを使用すると、簡単な間違いでコードが破損する可能性が低くなります。 – tadman
あなたはあなたの質問に 'AND'ではなく' ... OR state LIKE ... 'をしたくないと確信していますか? – Qirel