根据提取的 XML 数据中的下拉选择创建变量
Creating variables based on a dropdown selection from extracted XML data
我正在使用 DOMDocument
和 foreach
循环从 XML 文档中提取数据。对于我想要的数据点之一 style
,我创建了一个关联数组,其中包含 样式名称 和 样式 ID 。然后我将 样式名称 导出到 <select>
下拉列表中。我想弄清楚的是如何创建一个具有 样式 ID 的变量,基于该变量在下拉列表中选择了 样式名称 。这是我目前所拥有的:
两个样式名称是5dr Avant Wgn Man
和5dr Avant Wgn Auto
。这些被导出到下拉列表。它们各自的样式 ID 是 292015
和 292016
。因此,关联数组看起来像这样 5dr Avant Wgn Man => 292015
和 5dr Avant Wgn Auto => 292016
。
我想要实现的是当从下拉列表中选择 5dr Avant Wgn Man
时,292015
设置为等于 $variable
。因此,echo $variable;
将显示 292015
。反之亦然。
这是我的PHP:
<html>
<body>
<?php
$xml = file_get_contents('data.xml');
$dom = new DOMDocument();
$dom->loadXML($xml);
?>
<select>
<option selected="selected">Choose style</option>
<?php
foreach ( $dom->getElementsByTagName('style') as $styletwo ) {
$styleid = $styletwo->getAttribute("name");
$styleData [$styleid]= $styletwo->getAttribute("id");;
}
foreach ($styleData as $k=>$v){
?>
<option><?php echo $k;?> </option>
<?php
}
?>
</select>
</body>
</html>
这是我从中提取的 XML 文档:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<VehicleDescription country="US" language="en" modelYear="2008" bestMakeName="Audi" bestModelName="S4" bestStyleName="5dr Avant Wgn" xmlns="urn:description7b.services.chrome.com">
<responseStatus responseCode="Successful" description="Successful"/>
<style id="292015" modelYear="2008" name="5dr Avant Wgn Man" nameWoTrim="5dr Avant Wgn Man" mfrModelCode="8ED549" fleetOnly="false" modelFleet="false" passDoors="4" altBodyType="Station Wagon" drivetrain="All Wheel Drive">
<division id="4">Audi</division>
<subdivision id="5020">Audi</subdivision>
<model id="17308">S4</model>
<basePrice unknown="false" invoice="46137.0" msrp="49610.0" destination="775.0"/>
<bodyType primary="true" id="7">Station Wagon</bodyType>
<marketClass id="53">Small Wagon</marketClass>
<acode>USB80AUC085A0</acode>
</style>
<style id="292016" modelYear="2008" name="5dr Avant Wgn Auto" nameWoTrim="5dr Avant Wgn Auto" mfrModelCode="8ED54L" fleetOnly="false" modelFleet="false" passDoors="4" altBodyType="Station Wagon" drivetrain="All Wheel Drive">
<division id="4">Audi</division>
<subdivision id="5020">Audi</subdivision>
<model id="17308">S4</model>
<basePrice unknown="false" invoice="47162.0" msrp="50710.0" destination="775.0"/>
<bodyType primary="true" id="7">Station Wagon</bodyType>
<marketClass id="53">Small Wagon</marketClass>
<acode>USB80AUC085A1</acode>
</style>
</VehicleDescription>
</S:Body>
</S:Envelope>
我认为某种带有 $k
和 $v
的 if statement
可能会起作用,但我一直无法弄清楚。任何帮助将不胜感激。
按如下方式更改您的代码
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>
<select name='my_select'>
<option value='<?php echo $v;?>'>
<?php echo $k;?>
</option>
</select>
</form>
关注 HTML
<select name='my_select'>
<option selected="selected">Choose style</option>
<option value='292015'>
5dr Avant Wgn Man
</option>
<option value='292016'>
5dr Avant Wgn Auto
</option>
</select>
这是你想要的吗?
我正在使用 DOMDocument
和 foreach
循环从 XML 文档中提取数据。对于我想要的数据点之一 style
,我创建了一个关联数组,其中包含 样式名称 和 样式 ID 。然后我将 样式名称 导出到 <select>
下拉列表中。我想弄清楚的是如何创建一个具有 样式 ID 的变量,基于该变量在下拉列表中选择了 样式名称 。这是我目前所拥有的:
两个样式名称是5dr Avant Wgn Man
和5dr Avant Wgn Auto
。这些被导出到下拉列表。它们各自的样式 ID 是 292015
和 292016
。因此,关联数组看起来像这样 5dr Avant Wgn Man => 292015
和 5dr Avant Wgn Auto => 292016
。
我想要实现的是当从下拉列表中选择 5dr Avant Wgn Man
时,292015
设置为等于 $variable
。因此,echo $variable;
将显示 292015
。反之亦然。
这是我的PHP:
<html>
<body>
<?php
$xml = file_get_contents('data.xml');
$dom = new DOMDocument();
$dom->loadXML($xml);
?>
<select>
<option selected="selected">Choose style</option>
<?php
foreach ( $dom->getElementsByTagName('style') as $styletwo ) {
$styleid = $styletwo->getAttribute("name");
$styleData [$styleid]= $styletwo->getAttribute("id");;
}
foreach ($styleData as $k=>$v){
?>
<option><?php echo $k;?> </option>
<?php
}
?>
</select>
</body>
</html>
这是我从中提取的 XML 文档:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<VehicleDescription country="US" language="en" modelYear="2008" bestMakeName="Audi" bestModelName="S4" bestStyleName="5dr Avant Wgn" xmlns="urn:description7b.services.chrome.com">
<responseStatus responseCode="Successful" description="Successful"/>
<style id="292015" modelYear="2008" name="5dr Avant Wgn Man" nameWoTrim="5dr Avant Wgn Man" mfrModelCode="8ED549" fleetOnly="false" modelFleet="false" passDoors="4" altBodyType="Station Wagon" drivetrain="All Wheel Drive">
<division id="4">Audi</division>
<subdivision id="5020">Audi</subdivision>
<model id="17308">S4</model>
<basePrice unknown="false" invoice="46137.0" msrp="49610.0" destination="775.0"/>
<bodyType primary="true" id="7">Station Wagon</bodyType>
<marketClass id="53">Small Wagon</marketClass>
<acode>USB80AUC085A0</acode>
</style>
<style id="292016" modelYear="2008" name="5dr Avant Wgn Auto" nameWoTrim="5dr Avant Wgn Auto" mfrModelCode="8ED54L" fleetOnly="false" modelFleet="false" passDoors="4" altBodyType="Station Wagon" drivetrain="All Wheel Drive">
<division id="4">Audi</division>
<subdivision id="5020">Audi</subdivision>
<model id="17308">S4</model>
<basePrice unknown="false" invoice="47162.0" msrp="50710.0" destination="775.0"/>
<bodyType primary="true" id="7">Station Wagon</bodyType>
<marketClass id="53">Small Wagon</marketClass>
<acode>USB80AUC085A1</acode>
</style>
</VehicleDescription>
</S:Body>
</S:Envelope>
我认为某种带有 $k
和 $v
的 if statement
可能会起作用,但我一直无法弄清楚。任何帮助将不胜感激。
按如下方式更改您的代码
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>
<select name='my_select'>
<option value='<?php echo $v;?>'>
<?php echo $k;?>
</option>
</select>
</form>
关注 HTML
<select name='my_select'>
<option selected="selected">Choose style</option>
<option value='292015'>
5dr Avant Wgn Man
</option>
<option value='292016'>
5dr Avant Wgn Auto
</option>
</select>
这是你想要的吗?