сохранение значений html-формы в XML-файле

#php #javascript #html #xml

#php #javascript #HTML #xml

Вопрос:

я ввел 15 символов в ‘item_detail’ (data.html ) поле, но я хочу сохранить всего 10 символов в элементе ‘itemdetail’ в xml-файле (item.xml ) как я могу это сделать?

data.html—-

  <form>
     <p>Id:<input type="text" name= "id" size="10" /> </p>
     <p>Item Detail:<textarea name="item_detail" rows="3" cols="50" ></textarea></p>
     <input name="submit" type = "button" onClick = "getData('data.php','info', id.value, ,item_detail.value)" value = "Add Item" />

</form>    

 <div id="info"> </div>
  

data.js——-

 var xhr = createRequest();
function getData(dataSource, divID, id,itemd) {
if(xhr) {
var obj = document.getElementById(divID);
var requestbody ="idd=" encodeURIComponent(id) "amp;itd=" encodeURIComponent(itemd);
xhr.open("POST", dataSource, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 amp;amp; xhr.status == 200) {
obj.innerHTML = xhr.responseText;
} // end if
} // end anonymous call-back function
xhr.send(requestbody);
} // end if
} // end function getData()
  

data.php файл————

 $id= $_POST["idd"];
$item_detail= $_POST["itd"];


            $xml = new DomDocument();
            $xml->load("item.xml");
            $xml->formatOutput = true;   
            $items = $xml->firstChild;     
            $item = $xml->createElement('item');   
            $items->appendChild($item); 
            $id = $xml->createElement('id');
            $itemdetail = $xml->createElement('itemdetail'); 
            $item->appendChild( $id );
            $id->nodeValue = $id;
            $item->appendChild( $itemdetail );
            $ItemDetail->nodeValue = $item_detail;


            $xml->save("item.xml");

           }
  

Комментарии:

1. Вы хотите сохранить первые десять символов или последние десять? Of вы хотите сохранить на пять символов меньше, чем входные данные? Можете ли вы привести примеры того, чего вы хотите достичь? Кстати, используя POST-запросы, вы должны заменить на после кодирования строки на encodeURIComponent .

Ответ №1:

Вы могли бы использовать php substr

 $item_detail= substr($_POST["itd"], 0,10);
  

В качестве дополнительного примечания вам следует изучить возможность очистки данных $ _POST ранее.

Редактировать

Я разобрался с именами ваших переменных, поскольку вы перезаписываете переменные post переменными xml

data.php

  <?php
$post_id= $_POST["idd"];
$post_item_detail = substr($_POST["itd"], 0,10);

$xml = new DomDocument();
$xml->load("item.xml");

$xml->formatOutput = true;   

$items = $xml->documentElement;
$itemsLength = $items->getElementsByTagName('item');
for ($i = 0; $i < $itemsLength->length; $i  ) {
$itm = $items->getElementsByTagName('item')->item($i);
$oldItem = $items->removeChild($itm);
}


$items = $xml->firstChild;     
$item = $xml->createElement('item');   
$items->appendChild($item); 
$id = $xml->createElement('id');
$itemdetail = $xml->createElement('itemdetail'); 
$item->appendChild( $id );
$id->nodeValue = $post_id;
$item->appendChild( $itemdetail );
$itemdetail->nodeValue = $post_item_detail;

$xml->save("item.xml");

?>
  

item.xml

 <?xml version="1.0" encoding="UTF-8"?>
<doc>

</doc>
  

Комментарии:

1. я хочу ввести первые 10 символов ‘item_detail’ в элемент ‘itemdetail’ xml-файла

2. @thomas, я пытался использовать ur-код, но он выдает ошибку ‘Ошибка синтаксического анализа, неожиданная ‘=’ в data.php в строке 2

3. да, это работает. спасибо за вашу помощь. можете ли вы также предоставить код для удаления всех элементов из ‘item.xml ‘ файл

4. Я добавил метод, который удаляет все узлы, помеченные item.

5. но я хочу удалить все элементы, включая корневой элемент, также из xml-файла