2017-02-21 7 views
1

私のウェブサイトにライブ検索ボックスを作成しようとしています。私はデータベース用のXMLファイルを持っています。私はJavaScriptの部分を完了しましたが、私はPHPの初心者で、w3schoolsで見つけたこのコードにいくつかの問題があります。私の質問は、私は "名前"タグの値を取得するように、次のコードを変更する方法です。xmlデータベースを使用したajax検索ボックス

PHPコード:

<?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 were found 
// or to the correct values 
if ($hint == "") 
{ 
$response="no suggestion"; 
} 
else 
{ 
$response=$hint; 
} 
//output the response 
echo $response; 
?> 

XML:

<books> 

    <book> 
    <name>Harry Potter</name> 
    <quantity> 50 </quantity> 
    <price>19.90</price> 
    </book> 


    <book> 
    <name>Casino Royale</name> 
    <quantity> 50 </quantity> 
    <price>12.99</price> 
    </book> 


    <book> 
    <name>The Great Gatsby</name> 
    <quantity> 40 </quantity> 
    <price>14.90</price> 
    </book> 

</books> 

は、あなたの答えを事前にありがとうございます!私は本当にあなたの助けに感謝します!ここで

+1

javascriptがここにタグ付けされている理由はわかりませんが、これは純粋にPHPとXMLの質問のようです。 –

答えて

1

は、あなたがそれを行うだろうかの例である:各書籍のxmlファイルから$name$price、および$quantityを出力します

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

//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 = ""; 

    foreach ($books as $book) { 
     $name = $book->getElementsByTagName("name")->item(0)->nodeValue; 
     $price = $book->getElementsByTagName("price")->item(0)->nodeValue; 
     $quantity = $book->getElementsByTagName("quantity")->item(0)->nodeValue; 
     echo "$name - $price - $quantity<br/>"; 
    } 

} 

+0

あなたのバージョンのコードを試しましたが、このコードはXMLファイルのすべてのデータをWebサイトに直接送ります。私は、ユーザーが検索ボックスの中で入力を開始したときにのみこれが起こるようにしたい。 – JavaApprentice

+0

@JavaApprenticeので、キーポイントはデータを取得するためのメソッド呼び出しです。それがあなたが探していたものです。この例では、xmlデータを取得する方法を示します。これで、検索ボックスを処理するコードにこれを追加する必要があります。私の例では、コードのforループをforeach呼び出しに置き換えることができます。次に、タイトル、価格、数量を取得するために私の例を使用するようにコードを更新することができます。 –

関連する問題