2016-12-05 15 views
0

用戶可以在登錄時更改其頁面上的用戶名。當他登錄時,有$ _SESSION ['userSession']設置爲他的user_id值(1,2,3,...)。使用php循環遍歷XML元素,找到匹配並更改子元素innerHTML

除了數據庫存儲一些用戶信息保存在一個XML文件,too.When用戶改變自己的用戶名,我有問題

  • 識別匹配XMLELEMENT (元素「帳戶」誰的孩子 'USER_ID' 包含的innerHTML == $ _SESSION [ 'userSession'])

  • 和更改特定XMLelements其他孩子的價值 (改變的innerHTML其中有一個孩子「user_ID的」誰的innerHTML == $ _SESSION [「userSession」])元素「賬戶」的孩子「用戶名」的

現在我的代碼僅適用於第一個用戶,這有user_id'1' - 所以我想通過所有帳戶元素做一些循環。這就是我陷入困境的地方。 我當前的PHP代碼是:

 include '../php/dbconnect.php'; 
     $DBcon->query("UPDATE tbl_users SET username = '$newuname' WHERE user_id=".$_SESSION['userSession']); 
     $DBcon->close(); 

     $xml = simplexml_load_file('../xml/accounts.xml'); 
     $account = $xml->account; 
      if($account->user_id == $_SESSION['userSession']) { 
       $account->username = $newuname; 
      } else { 
      } 
     file_put_contents('../xml/accounts.xml', $xml->asXML()); 

XML的文件樣子:

<data> 

    <account> 
     <username>KingKarl</username> 
     <user_id>1</user_id> 
     <blogname>YummyYummy</blogname> 
    </account> 

    <account> 
     <username>MacMarty</username> 
     <user_id>2</user_id> 
     <blogname>FreaksOnTour</blogname> 
    </account> 

    <account> 
     <companyname>BungeeTours</companyname> 
     <user_id>3</user_id> 
     <blogname>FreeFalling</blogname> 
    </account> 


</data> 

能有人向我解釋,我怎麼能遍歷所有帳戶的元素找請匹配並更改其他孩子的內部html,請參閱?

在此先感謝!

回答

0

這裏有一個正確的代碼:

$xml = simplexml_load_file('../xml/accounts.xml'); 
// iterate over each `$xml` node which is `account` 
foreach ($xml as $account) { 
    // if current account user_id is found - change value 
    if($account->user_id == $_SESSION['userSession']) { 
     $account->username = $newuname; 

     // use break so as not to check other nodes 
     break; 
    } 
    // empty `else` part is useless, omit it 
} 
file_put_contents('../xml/accounts.xml', $xml->asXML()); 
+0

感謝,這就是完美的作品! – Maxischl