php获得XML rootnode Content作为字符串-英雄云拓展知识分享
352
2024-01-21
我创建了一个数据库,其中保存有关利用程序的信息。这些利用程序可以链接到 垂直的。我设计了DB,以致于我有一个表格,以获得有关每一个利用程序的标准信息,其中包括一个自动插入ID的名称等。我有另外一个桌子列出了所有不同的行业/垂直行业。
除这2个表外,我还有第3个连接两张表,看起来像这样(我在PHP数组中显示了它,由于我认为它更容易浏览):
$verticals_joint = array(array('vertical_joint_id' => '1','vertical_id' => '11','demo_id' => '173'),

array('vertical_joint_id' => '2','vertical_id' => '12','demo_id' => '173'),
array('vertical_joint_id' => '3','vertical_id' => '13','demo_id' => '173'),
array('vertical_joint_id' => '4','vertical_id' => '2','demo_id' => '174'),
array('vertical_joint_id' => '5','vertical_id' => '4','demo_id' => '174'),
array('vertical_joint_id' => '6','vertical_id' => '3','demo_id' => '175'),
array('vertical_joint_id' => '7','vertical_id' => '4','demo_id' => '175'),
array('vertical_joint_id' => '8','vertical_id' => '8','demo_id' => '176'),
array('vertical_joint_id' => '9','vertical_id' => '9','demo_id' => '176'),
array('vertical_joint_id' => '10','vertical_id' => '1','demo_id' => '92'),
array('vertical_joint_id' => '11','vertical_id' => '3','demo_id' => '92'),
array('vertical_joint_id' => '12','vertical_id' => '12','demo_id' => '92'),
array('vertical_joint_id' => '13','vertical_id' => '1','demo_id' => '179'),
array('vertical_joint_id' => '14','vertical_id' => '3','demo_id' => '179'),
array('vertical_joint_id' => '15','vertical_id' => '4','demo_id' => '179'),
array('vertical_joint_id' => '16','vertical_id' => '2','demo_id' => '180'),
array('vertical_joint_id' => '17','vertical_id' => '4','demo_id' => '180')
);
Vertical_ID将行业/垂直与利用程序/演示联系起来。 emo_id援用利用程序(或我称之为演示)。
现在是我的问题。我在PHP中提出了一段时间的循环,然后在其中嵌套了一个If statement,因此我可以显示所有垂直行业,并标记为给定利用程序创建的垂直行业。例如。这就是我想要实现的:
<select id="Vertical[]" class="form-control verticalText" multiple="multiple"><option value="1">Education</option>
<option value="2">Manufacturing</option>
<option value="3">State, Local or Provincial Government</option>
<option value="4">Federal Government</option>
<option value="5">Other</option>
<option value="6">Transportation and Logistics</option>
<option value="7">Healthcare</option>
<option value="8">Petrochemical</option>
<option value="9">Utilities</option>
<option value="10">Public Safety</option>
<option value="11" selected>Hospitality</option>
<option value="12" selected>Wholesale Distribution</option>
<option value="13" selected>Human Services</option>
<option value="14">Retail</option>
这就是我要实现的目标,但是当我使用时循环时,它只会正确选择 热忱好客 并且不选择 批发区 或 人工服务.
我的whier-loop +嵌套如果陈说看起来像这样:
//Gathers the names of all existing verticals.$vertical_query = "SELECT * FROM demos.verticals";
$result_vertical = mysqli_query($con, $vertical_query);
//Gathers information about the particular application you are comparing with.
//It retrieves the verticals for a particular app/demo id.
//For this example I used id 173
$joint_query = "SELECT o.vertical_id, o.vertical_name FROM demos.alldemos alld
LEFT JOIN demos.verticals_joint j ON alld.id = j.demo_id
LEFT JOIN demos.verticals o ON o.vertical_id = j.vertical_id
WHERE alld.id = 173";
$result_joint = mysqli_query($con, $joint_query);
$compare = mysqli_fetch_array($result_joint);
$output = '';
// while there are Verticals to be listed.
while ($row_vertical = mysqli_fetch_array($result_vertical)) {
// If a vertical is already selected for this particular app id,
if ($compare['vertical_name'] == $row_vertical["vertical_name"]) {
//then add the word select to the option so it will be selected
$output .= '<option value="'.$row_vertical["vertical_id"].'" selected>'.$row_vertical['vertical_name'].'</option>';
} elseif ($compare['vertical_name'] != $row_vertical["vertical_name"]) {
//Otherwise just print out the normal option without 'selected'.
$output .= '<option value="'.$row_vertical["vertical_id"].'">'.$row_vertical["vertical_name"].'</option>';
}
}
echo $output;
您是不是知道为何它仅比较我的SQL中的第一项与我的其他选择查询中的垂直行业进行比较?您会建议做不同的事情吗?
为了检查两个查询之间的所有匹配条件,您需要在 $比较 和 $ row_vertical 数组。现在您只检查所有 $ row_vertical 行到第一行 $比较 (即招待)。并且由于值可以在嵌套循环中覆盖,包括 break 1
满足条件时:
while ($row_vertical = mysqli_fetch_array($result_vertical)) {while ($compare = mysqli_fetch_array($result_joint)) {
if ($compare['vertical_name'] == $row_vertical["vertical_name"]) {
$output = ...;
break 1;
...
}
}
但是,当您运行一个时,不需要嵌套环 LEFT JOIN
在同一表上,无与伦比的记录将返回 NULL
。因此,这种情况下,无需运行和获得冗余的第一个查询,而只需运行一个 $比较 查询,然后检查 NULL
.
while ($compare = mysqli_fetch_array($result_joint)) {// If a vertical is already selected for this particular app id,
if (is_null($compare['vertical_name']) == false) {
//then add the word select to the option so it will be selected
$output .= '<option value="'.$compare["vertical_id"].'" selected>'.$compare['vertical_name'].'</option>';
} elseif (is_null($compare['vertical_name']) == true) {
//Otherwise just print out the normal option without 'selected'.
$output .= '<option value="'.$compare["vertical_id"].'">'.$compare["vertical_name"].'</option>';
}
}
和 垂直的 如果您保存,值不应重复 WHERE
一个特定的条件 demo_id.
免责声明:
本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、图像、标志、音频、视频、软件和程序等的版权均属于原创作者。如果任何组织或个人认为网站内容可能侵犯其知识产权,或包含不准确之处,请即刻联系我们进行相应处理。