PHPチュートリアル

PHPホーム PHPイントロ PHPインストール PHP構文 PHPコメント PHP変数 PHPエコー/印刷 PHPデータ型 PHP文字列 PHP番号 PHP数学 PHP定数 PHP演算子 PHP If ... Else ... Elseif PHPスイッチ PHPループ PHP関数 PHP配列 PHPスーパーグローバル PHP正規表現

PHPフォーム

PHPフォーム処理 PHPフォームの検証 PHPフォームが必要 PHPフォームのURL / Eメール PHPフォームの完了

PHP Advanced

PHPの日付と時刻 PHPインクルード PHPファイルの処理 PHPファイルのオープン/読み取り PHPファイルの作成/書き込み PHPファイルのアップロード PHPクッキー PHPセッション PHPフィルター PHPフィルターアドバンスト PHPコールバック関数 PHP JSON PHPの例外

PHPOOP _

PHPOOPとは PHPクラス/オブジェクト PHPコンストラクター PHPデストラクタ PHPアクセス修飾子 PHPの継承 PHP定数 PHP抽象クラス PHPインターフェース PHPの特性 PHP静的メソッド PHPの静的プロパティ PHP名前空間 PHPIterables

MySQLデータベース

MySQLデータベース MySQLコネクト MySQL Create DB MySQLテーブルの作成 MySQLの挿入データ MySQLは最後のIDを取得します MySQL Insert Multiple MySQLを準備しました MySQL Select Data MySQL Where MySQL Order By MySQLデータの削除 MySQLアップデートデータ MySQL制限データ

PHP XML

PHPXMLパーサー PHPSimpleXMLパーサー PHPSimpleXML-取得 PHP XMLExpat PHP XML DOM

PHP -AJAX

AJAXイントロ AJAX PHP AJAXデータベース AJAX XML AJAXライブ検索 AJAXポール

PHPの

PHPの例 PHPコンパイラ PHPクイズ PHP演習 PHP証明書

PHPリファレンス

PHPの概要 PHP配列 PHPカレンダー PHPの日付 PHPディレクトリ PHPエラー PHP例外 PHPファイルシステム PHPフィルター PHP FTP PHP JSON PHPキーワード PHP Libxml PHPメール PHP数学 PHPその他 PHP MySQLi PHPネットワーク PHP出力制御 PHP正規表現 PHP SimpleXML PHPストリーム PHP文字列 PHP変数の処理 PHPXMLパーサー PHP Zip PHPタイムゾーン

PHPの例-AJAXライブ検索


AJAXを使用すると、よりユーザーフレンドリーでインタラクティブな検索を作成できます。


AJAXライブ検索

次の例は、入力中に検索結果を取得するライブ検索を示しています。

ライブ検索には、従来の検索と比較して多くの利点があります。

  • 入力すると結果が表示されます
  • 入力を続けると結果が狭くなります
  • 結果が狭くなりすぎる場合は、文字を削除してより広い結果を表示します

以下の入力フィールドでW3Schoolsページを検索します。

上記の例の結果は、XMLファイル(links.xml)にあります。この例を小さく単純にするために、6つの結果のみが利用可能です。


説明された例-HTMLページ

ユーザーが上記の入力フィールドに文字を入力すると、関数「showResult()」が実行されます。この関数は、「onkeyup」イベントによってトリガーされます。

<html>
<head>
<script>
function showResult(str) {
  if (str.length==0) {
    document.getElementById("livesearch").innerHTML="";
    document.getElementById("livesearch").style.border="0px";
    return;
  }
  var xmlhttp=new XMLHttpRequest();
  xmlhttp.onreadystatechange=function() {
    if (this.readyState==4 && this.status==200) {
      document.getElementById("livesearch").innerHTML=this.responseText;
      document.getElementById("livesearch").style.border="1px solid #A5ACB2";
    }
  }
  xmlhttp.open("GET","livesearch.php?q="+str,true);
  xmlhttp.send();
}
</script>
</head>
<body>

<form>
<input type="text" size="30" onkeyup="showResult(this.value)">
<div id="livesearch"></div>
</form>

</body>
</html>

ソースコードの説明:

入力フィールドが空の場合(str.length == 0)、関数はlivesearchプレースホルダーの内容をクリアして、関数を終了します。

入力フィールドが空でない場合、showResult()関数は以下を実行します。

  • XMLHttpRequestオブジェクトを作成します
  • サーバー応答の準備ができたときに実行される関数を作成します
  • サーバー上のファイルにリクエストを送信します
  • パラメータ(q)が(入力フィールドの内容とともに)URLに追加されていることに注意してください。


PHPファイル

上記のJavaScriptによって呼び出されるサーバー上のページは、「livesearch.php」と呼ばれるPHPファイルです。

「livesearch.php」のソースコードは、検索文字列に一致するタイトルをXMLファイルで検索し、結果を返します。

<?php
$xmlDoc=new DOMDocument();
$xmlDoc->load("links.xml");

$x=$xmlDoc->getElementsByTagName('link');

//get the q parameter from URL
$q=$_GET["q"];

//lookup all links from the xml file if length of q>0
if (strlen($q)>0) {
  $hint="";
  for($i=0; $i<($x->length); $i++) {
    $y=$x->item($i)->getElementsByTagName('title');
    $z=$x->item($i)->getElementsByTagName('url');
    if ($y->item(0)->nodeType==1) {
      //find a link matching the search text
      if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q)) {
        if ($hint=="") {
          $hint="<a href='" .
          $z->item(0)->childNodes->item(0)->nodeValue .
          "' target='_blank'>" .
          $y->item(0)->childNodes->item(0)->nodeValue . "</a>";
        } else {
          $hint=$hint . "<br /><a href='" .
          $z->item(0)->childNodes->item(0)->nodeValue .
          "' target='_blank'>" .
          $y->item(0)->childNodes->item(0)->nodeValue . "</a>";
        }
      }
    }
  }
}

// Set output to "no suggestion" if no hint was found
// or to the correct values
if ($hint=="") {
  $response="no suggestion";
} else {
  $response=$hint;
}

//output the response
echo $response;
?>

JavaScriptから送信されたテキストがある場合(strlen($ q)> 0)、次のようになります。

  • XMLファイルを新しいXMLDOMオブジェクトにロードします
  • すべての<title>要素をループして、JavaScriptから送信されたテキストから一致するものを見つけます
  • 「$ response」変数に正しいURLとタイトルを設定します。複数の一致が見つかった場合、すべての一致が変数に追加されます
  • 一致するものが見つからない場合、$ response変数は「提案なし」に設定されます