2011-04-24 2 views
0

'item_detail'(data.html) 필드에 15자를 입력했지만 xml 파일 (item.xml)의 'itemdetail'요소에 10 자만 저장하려고합니다. 어떻게해야합니까? 그? -------xml 파일에 html 양식 값 저장

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

data.php 파일

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 -----------

$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"); 

      } 
+0

첫 번째 * 10 자 또는 * 마지막 * 열을 저장 하시겠습니까? 당신은 5 문자를 입력보다 덜 저장하고 싶습니까? 달성하고자하는 것을 예제로 제시 할 수 있습니까? BTW, POST 요청을 사용하여 문자열을'encodeURIComponent'로 인코딩 한 후'% 20'을'+'로 대체해야합니다. –

답변

1

당신은 PHP를 사용할 수 substr

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

참고로 이전에 $ _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> 
+0

xml 파일의 'itemdetail'요소에 'item_detail'의 처음 10자를 입력하고 싶습니다. – ayman

+0

@thomas, ur 코드로 시도했지만 'parse error : syntax error, unexpected'= 'data.php on line 2 – ayman

+0

내 원래 대답이 업데이트되었습니다. 이렇게하면 문제가 해결됩니다. –