XML 和 PHP - 如果节点存在,则覆盖数据,如果不存在,则创建一个新数据
XML and PHP - If node exists, overwrite the data, if not, create a new one
我正在使用HTML5画布,PHP和XML的混合构建器来构建某种签名生成器。我需要的是,当在该输入中键入的"名字"已经存在于XML文件中时,它会检测它是否已经存在于XML文件中,并通过确认javascript窗口询问我是否要替换该部分,或取消。如果输入的"名字"是新的,并且它还没有在xml文件中,它将自动创建一个包含输入数据的新部分。
这是我的HTML代码(仅限表单部分)
<form name="signature">
First name:<input type="text" name="firstname">
Last name:<input type="text" name="lastname">
<button type="submit">Save</button>
</form>
我的PHP代码:
<?php
$xml = simplexml_load_file('test2.xml');
$fname = $_POST['firstname'];
$lname = $_POST['lastname'];
$xml->signature = "";
$xml->signature->fname = $fname;
$xml->signature->lname = $lname;
if(isset($xml->signature->fname = $fname)) {
echo "<script type='text/javascript'>return confirm('This first name already exists, overwrite it?');</script>";
} else {
echo "<script type='text/javascript'>alert($fname + ' saved as a new signature');</script>";
}
$doc->save('test2.xml');
?>
还有我的XML结构代码:
<?xml version="1.0" encoding="UTF-8"?>
<signatures>
<signature>
<fname>John</fname>
<lname>Doe</lname>
</signature>
<signature>
<fname>Bob</fname>
<lname>Funny</lname>
</signature>
</signatures>
例如,如果我在表单中输入"John Testing",它需要检测到XML文件中已经有一个"John",所以它会问我是否要用John Testing替换当前保存的John Doe。例如,如果我输入"Denis Tester",由于没有Denis,XML文件将变为:
<?xml version="1.0" encoding="UTF-8"?>
<signatures>
<signature>
<fname>John</fname>
<lname>Doe</lname>
</signature>
<signature>
<fname>Bob</fname>
<lname>Funny</lname>
</signature>
<signature>
<fname>Denis</fname>
<lname>Tester</lname>
</signature>
</signatures>
我做了一些研究,我很漂亮,我需要使用 isset 函数来扫描 XML 文件。但我无法让它工作。多谢!
$fname = "John";
$lname = "Testing";
// find with xpath point to signature which fname is equal what we want
$signs = $xml->xpath('//signature[fname = "'.$fname.'"]');
// if (count($signs) > 1) // What to do if some Johns found ?
if (count($signs) == 1) $signs[0]->lname = $lname; // Found one element
else { // Not found - add
$sign = $xml->addChild('signature'); // Add signature child to root element
$sign->addChild('fname', $fname); // Add names as cildren of signature
$sign->addChild('lname', $lname);
}
相关文章:
- 在php中提交数据时,如果某些值为null,而某些值为非null,如何进行查询
- 如果返回的数据是javascript,$.ajax会自动执行脚本吗
- 如何检查Json文件更新,如果更新了,则用更新的数据刷新我的页面
- 如果数据为空,Ajax加载不会停止
- 如果填写了特定值,则通过电子邮件发送电子表格中的数据
- 如果两个跨度有数据,则添加字符
- 如果我在页面之间移动,Jquery 数据表行事件会卡住
- JavaScript / jquery:如果选择了单选按钮并且数据属性符合条件,则添加类
- 如果上一个
为空,则向上移动表数据 d - 如果 jqxgrid 中的“单列”中没有数据,则突出显示整行
- 如果数据的格式略有损坏,是否仍然可以确定其文件类型
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- 如果发现任何数据,如何停止每7秒运行一次的函数
- jQuery $.post 数据如果大于 0,则分配给可用
- 我想显示数据库中的数据.如果我们新添加一个表单数据,我想附加显示的新帖子而不使用代码点火器刷新
- 填写表单文本框,其中包含数据库表中的数据(如果用户存在)
- JavaScript 从 XML 中提取数据(如果 else 语句不起作用)
- 如何从变量中清除以前的数据如果我不'不知道变量的类型(可以是数组、对象或基元)
- 如何在javascript中获取json数据如果json数据有'/'数据键名
- if循环获取数据(如果表中存在)如果不存在,则在表中插入值并使用javascript获取写入配置文件id的数据