ユーザーが値を入力または選択するフォームがあります。フォームは次のとおりです
<form id="search_photos" action="photo_result.php" method="get">
<select name="Photographer_id" id="Photographer_id" style="height:23px; border:1px solid Silver;">
<option selected="selected" value="x">Any Photographer_id</option>
<option value="John">John</option>
<option value="Fred">Fred</option>
<option value="Joseph">Joseph</option>
</select>
<select name="Photographer_id" id="Photographer_id" style="height:23px; border:1px solid Silver;">
<option selected="selected" value="x">Any Photographer_id</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="images" id="images" style="height:23px; border:1px solid Silver;">
<option selected="selected" value="x">All Images</option>
<option value="0">None</option>
<option value="a">Image a</option>
<option value="b">Image b </option>
<option value="c">Image c </option>
</select>
<select name="images_id" id="images_id" style="height:23px; border:1px solid Silver;">
<option selected="selected" value="x">All Images</option>
<option value="0">None</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input name="Submit" value="Search Now >" id="Submit" class="Adv1_Filter_Button" type="submit">
次に、search_photo.php
フォームの結果をキャッチし、ユーザーが入力した値を次のようにフィルター処理するスクリプト
$xml = simplexml_load_file("photo.xml");
for ($i = 0; $i < count($xml); $i++) {
if (isset($_GET["LocationName"])) {
$photographer_id = $_GET["LocationName"];
}
$result = $xml->xpath('/root/area[photographer_id="' . $photographer_id . '"] ');
}
if(isset($_GET["Photographer"])) {
$photographer = $_GET["Photographer"];
}
$result = $xml->xpath('/root/area[photographer_id="' . $photographer_id . '"] ');
if(isset($_GET["images"])) {
$image = $_GET["images"];
}
echo $photographer_id;
echo $photographer;
echo $image;
var_dump ($result);
$result
設定されているすべてが 'photographer_id' である場合、最初の XPATH パスからは正しいです。次に試して$result = $xml->xpath('/root/area[photographer_id="' . $photographer_id . '"] | /root/area[photographer="' . $photographer . '"]');
選択する1
とfred
、4 つすべての配列の結果が得られますが、空の配列である必要がある場合、このエラーを修正する方法をアドバイスできます。申し訳ありませんが、ここにXMLファイルがあります
<?xml version="1.0" encoding="UTF-8"?>
<root>
<area>
<photographer_id>1</photographer_id>
<photographer>John</photographer>
<image>a</image>
<image_id>1</image_id>
</area>
<area>
<photographer_id>1</photographer_id>
<photographer>John</photographer>
<image>b</image>
<image_id>2</image_id>
</area>
<area>
<photographer_id>1</photographer_id>
<photographer>John</photographer>
<image>c</image>
<image_id>3</image_id>
</area>
<area>
<photographer_id>2</photographer_id>
<photographer>Fred</photographer>
<image>a</image>
<image_id>4</image_id>
</area>
<area>
<photographer_id>3</photographer_id>
<photographer>Joseph</photographer>
<image>a</image>
<image_id>5</image_id>
</area>
</root>
これは役に立ちますが、最終的な XML ファイルはこれよりも大きくなります。