2016-12-05 38 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

相关问题