名前、地域、年齢、言語を入力できるフォームを設計しました。また、入力したデータを取得するPHPスクリプトを作成しましたが、ユーザーがフィールドを空のままにしたり、名前を書き出してデータベースを削除した場合、データベースのすべてのレコードと一致するため、データベースはすべてのフィールドを返します。空のフィールドを取り除く方法はありますか?誰かが名前と地域をやることができたら、残りの部分を把握できるはずです。私はjQueryとAJAXをセットアップしているので、キー入力がフォームのいずれかで行われると、このsearchFunctionが実行されます。私は、私がやっているよりも効率的なMySQLのやり方があるのだろうかと思っています。最初の答えを見て、それを実装しようとすると、20 + else if文を実行しない限り、変数が設定されていないとMySQLを更新する方法がわかりません。jQuery/AJAXを使用したMySQLのマルチ検索
AJAX:
$(function() {
$("#searchform").bind('submit',function() {
var name = $('#name').val();
var region =$('#region').val();
$.get('scripts/searchFunction.php',{name:name, region:region}, function(data){
$("#show").html(data);
});
return false;
});
$("#searchform").keyup(function() {
var name = $('#name').val();
var region =$('#region').val();
$.get('scripts/searchFunction.php',{name:name, region:region}, function(data){
$("#show").html(data);
});
return false;
});
});
searchFunction.php
<?php
include 'connection.php';
session_start();
$name = "%" . $_GET['name'] . "%";
$region = "%" . $_GET['region'] . "%";
$dbuname;
$dbfname;
$dblname;
$dbage;
$dbregion;
$dblanguage;
$stmt = $conn->prepare('SELECT Username, First_Name, Last_Name, Age, Region, Language FROM '. $table .' WHERE First_Name LIKE ? OR Region LIKE ?;');
$stmt->bind_param('ss',$name, $region);
$stmt->execute();
$stmt->bind_result($dbuname, $dbfname, $dblname, $dbage, $dbregion, $dblanguage);
while($stmt->fetch()){
echo '<div class="row">';
echo '<div class="col-md-4">';
if(file_exists("../img/accounts/" .$dbuname . "/Profile.jpg")){
echo '<img src="img/accounts/'. $dbuname .'/Profile.jpg" class="img-fixed"/>';
}else if(file_exists('../img/accounts/' .$dbuname . '/Profile.png"')){
echo '<img src="img/accounts/'. $dbuname .'/Profile.png"/>';
}else{
echo '<img src="img/default-img/default.png" class="img-fixed"/>';
}
echo '</div>';
echo '<div class="col-md-7 col-sm-3 col-sm-offset-1">';
echo '<p>First Name: ' . $dbfname . '</p>';
echo '<p>Last Name: ' . $dblname . '</p>';
if(isset($_SESSION['Loggedin'])){
if($_SESSION['Loggedin'] == 1){
echo '<p>Age: ' . $dbage . '</p>';
echo '<p>Region: ' . $dbregion . '</p>';
echo '<p>Language: ' . $dblanguage . '</p>';
}
}
echo '</div>';
echo '</div>';
echo '<hr class="section-spacer"/>';
echo '<br>';
}
?>
を上記の例で働くことができますか?私は2つの関数を持っているので、1つはサブミット用、もう1つはキーアップ用です – Chromatic
はい、この例で示したような 'if'条件内で' get'関数呼び出しをラップする必要があります。 –
$ .getを使用するか、スイッチを切り替えて$ .ajaxの配列を使用し、data:dataを使用する方が効率的でしょうか? – Chromatic