2017-02-25 2 views
-2

ウェブサイトでライブ検索を作成する必要があります。私はPHPを使用する必要がありますが、私はそれを学んだことがなく、プログラミングの初心者です。このPHPコードを修正するにはどうすればよいですか?

私はデータベースとしてXMLファイルを持っています。目的は、ノード値を取得して、ユーザーが何かを入力する際の提案として表示することです。このコードの問題は、すべてのノード値をWebページに吐き出すことです。ここで

は、PHPのコードです:ここで

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

$q = $_GET["q"]; 

if (strlen($q) > 0) { 
$hint = ""; 

foreach ($books as $book) { 
    $name = $book->getElementsByTagName("name")->item(0)->nodeValue; 

    echo "$name <br/>"; 
} 

} 

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> 

誰かが私は私のプロジェクトの作業を続けることができるように私はこの問題を解決する助けてください。あなたの時間と助けを前にありがとう!それは多くのAprreciate!

+0

は、$ q' 'に' $ name'の比較しますか?実際のデータベースはずっと簡単です。 – chris85

+0

XMLファイルの関連するスニペットを投稿に追加します。 – nvisser

+0

質問にもxmlファイルのコードを記入してください –

答えて

1

問題はここにある:あなたがここに "foreachループ" を持っている

$hint = ""; 

foreach ($books as $book) { 
    $name = $book->getElementsByTagName("name")->item(0)->nodeValue; 

    echo "$name <br/>"; 
} 

注意してください。 "$ name = $ book ...."行は、その特定のXMLノードの値を読み込み、それを$ name変数に代入します。次に、echo $ nameを呼び出すことになります。本質的にここでやっているのは、XMLノードの価値を読んでそれを印刷することだけです。コードのどの部分も$ nameと検索クエリ($ q)を比較しません。 は、$ qと何らかの形で一致する書籍をプリントアウトするだけで、が表示されます。

これを行うには、$ qに一致する値だけを出力するためにforeachループにいくつかのロジックを適用する必要があります。ここで

は提案です:

$hint = ""; 

foreach ($books as $book) { 
    $name = $book->getElementsByTagName("name")->item(0)->nodeValue; 

    // Let's only show this book if $q appears somewhere in $name. 
    if (strpos($name, $q) !== false && strpos($name, $q) >= 0) 
    { 
     echo $name . "<br />"; 
    } 
} 
+0

ご協力いただきありがとうございます。 Unfotunatelyそれはまだ動作しません:( – JavaApprentice

関連する問題