2

フォームを作成し、そのフォームを介して画像をアップロードしています.XMLファイルにノードを作成しました。そのファイルに画像の名前を保存したいのですが、すべてが機能していますが、新しい写真をアップロードするたびに古いファイル名、私がやりたいのは、もう1枚の写真をアップロードすると、もう1つのノードが自動的に作成され、古いものを置き換えることなくそこに画像名が動的に追加されるはずです。

私が使用したフォーム:

<div id="popup_box_slider_image" class="Add-Social-Media">
<!-- OUR PopupBox DIV-->
<a id="popupBoxClosesliderImage"  class="ClosePopup"></a>
<form id="addEditFormSelectTemplate" action="" method="post"  enctype="multipart/form-data" >
<p>Please upload a image to add to slider.</p>
<br />
<div style="width:100%; float:left;">
<br/>

画像をアップロード:

<input type="file" name="sliderImage" id="slider" value="" style="width:180px;" class="field-box"  />
<br />
<span id="sliderImageErr">&nbsp;</span>
<br/>
<br/>
<br/>
<div align="left">
<input type="submit" name="SelectsliderImage" onClick="return validatesliderImage();"  value="Update" style="background-color:#2D69A9 ; color:#FFFFFF ; padding-top:5px; padding-bottom:5px; padding-right:10px; padding-left:10px; border:none ; cursor:pointer ; border-radius:5px; " />
</div>
</div>
</form>
</div>

私が使用したPHPコード:

$sliderimagename=$_FILES['sliderImage']['name'];
$xmlpath=SITE_URL."xml/".$_SESSION['username']."/test.xml";
$document=simplexml_load_file($xmlpath);
$document->body->sliderimage = $sliderimagename;
$document->asXML($xmlpath);
$path=SITE_URL."/slider_images/";
move_uploaded_file($_FILES['sliderImage']['tmp_name'],$path.$sliderimagename);

XML ノード構造 :

<body>
    <title>changeBg</title>
    <imagename>B4.jpg</imagename>
    <sliderimage></sliderimage>
</body>
4

2 に答える 2

2

SimpleXMLElementのメソッドを使用して、addChild新しい子を追加します。現在のxml構造を使用すると、次のようになります。

//...
$document=simplexml_load_file($xmlpath);
$new_image = $document->body->addChild('sliderimage', $_FILES['sliderImage']['name']);

これにより、次のようなxml出力が生成されます。

<body>
    <title>changeBg</title>
    <imagename>B4.jpg</imagename>
    <sliderimage></sliderimage>
    <sliderimage></sliderimage> <!-- this is the newly created node -->
</body>

ただし、xmlファイルを次のように再構築して、ネストのレベルをもう1つ上げることができます。

<body>
    <file> <!--- new top level tag to group the individual images -->
        <title>changeBg</title>
        <imagename>B4.jpg</imagename>
        <sliderimage>old image</sliderimage>
    </file>
    <file>
        <!--- ... -->
        <sliderimage>new image</sliderimage>
    </file>
</body>

この場合、次addChildのように、返されたノードで複数回呼び出す必要があります。

$new_file = $document->body->addChild('file'); // adding a new <file> node
$new_file->addChild('title', 'some title'); // adding more nodes inside the new <file> node
$new_file->addChild('imagename', '...');
// ...
于 2013-02-25T08:21:16.647 に答える
1

http://www.php.net/manual/en/simplexmlelement.addchild.php

新しい子要素を追加します:$ document-> body-> addChild('sliderimage'、$ slideerimagename);

<body>
<title>changeBg</title>
<imagename>B4.jpg</imagename>
<sliderimage>First</sliderimage>
<sliderimage>Second</sliderimage>
</body>

ただし、利用可能なアイテムのセットがあることを示すために、おそらくxmlを変更する必要があります

<body>
<title>changeBg</title>
<imagename>B4.jpg</imagename>
<sliderimages>
    <image>First</image>
    <image>Second</image>
</sliderimages>
</body>
于 2013-02-25T08:21:56.567 に答える