最新のWeb開発のチュートリアル
×

PHP チュートリアル

PHP HOME PHP イントロ PHP インストール PHP 構文 PHP 変数 PHP エコー/印刷 PHP データの種類 PHP ストリング PHP 定数 PHP 演算子 PHP If...Else...Elseif PHP Switch PHP whileループ PHP Forループ PHP 機能 PHP 配列 PHP 配列のソート PHP スーパーグローバル

PHP 取り扱い

PHP フォーム 取り扱い PHP フォーム 検証 PHP フォーム 必須 PHP フォーム URL/E-mail PHP フォーム コンプリート

PHP 高度な

PHP 多次元配列 PHP 日時 PHP 含めます PHP ファイル 取り扱い PHP ファイル オープン/読みます PHP ファイル 作成/書きます PHP ファイル アップロード PHP Cookies PHP Sessions PHP フィルター PHP Filters 高度な PHP エラー 取り扱い PHP 例外

MySQL Database

MySQL データベース MySQL 接続 MySQL Create DB MySQL Create 表 MySQL Insert Data MySQL 最後のIDを取得します MySQL 複数の挿入 MySQL Prepared MySQL Select Data MySQL Delete Data MySQL Update Data MySQL Limit Data

PHP - XML

PHP XML パーサー PHP SimpleXML Parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX イントロ AJAX PHP AJAX データベース AJAX XML AJAX ライブ検索 AJAX RSSリーダー AJAX 世論調査

PHP Examples

PHP 例 PHP クイズ PHP 証明書

PHP 参照

PHP アレイ PHP カレンダー PHP 日付 PHP ディレクトリ PHP エラー PHP ファイルシステム PHP フィルタ PHP FTP PHP HTTP PHP Libxml PHP 郵便物 PHP 数学 PHP その他 PHP MySQLiを PHP SimpleXML PHP 文字列 PHP XML PHP Zip PHP 時間帯

 

PHP例 - AJAXのLive Search


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


AJAXのLive Search

次の例では、入力中に検索結果を取得し、ライブサーチを、デモンストレーションを行います。

ライブサーチは、伝統的な検索に比べて多くの利点があります。

  • あなたが入力すると、結果が表示されます
  • あなたが入力し続けて結果を絞り込みます
  • 結果が狭すぎるとなった場合は、より広範な結果を見て文字を削除

下の入力フィールドにw3iiのページを検索します。

上記の例の結果を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;
  }
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else {  // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById("livesearch").innerHTML=xmlhttp.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)関数は、ライブサーチプレースホルダの内容をクリアし、関数を終了します。

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

  • XMLHttpRequestオブジェクトを作成します。
  • サーバーの応答が準備ができたときに実行する関数を作成します
  • サーバー上のファイルへの要求をオフに送ります
  • パラメータことに注意してください(q) (入力フィールドのコンテンツに)URLに付加されます

PHPファイル

上記のJavaScriptによって呼び出されたサーバー上のページと呼ばれるPHPファイルである"livesearch.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 DOMオブジェクトにXMLファイルをロードします
  • すべての<title>要素をループし、JavaScriptから送信されたテキストから一致するものを検索します
  • 正しいURLとタイトルを設定し"$response"変数を。 複数の一致が見つかった場合は、すべての一致を変数に追加されます
  • 一致が見つからない場合は、$応答変数がに設定されている"no suggestion"