2016-12-05 22 views
0

ユーザーは、ログインしている間にページ上のユーザー名を変更できます。ログインしているときは$ _SESSION ['userSession']彼のuser_id値(1、2、3、...)に設定されています。phpでXML要素をループし、一致する要素を見つけて子要素を変更するinnerHTML

別にデータベース格納からいくつかのユーザーの情報がtoo.Whenは、ユーザーが自分のユーザー名を変更し、XMLファイルに格納されている、私は一致XMLELEMENTに (要素」を識別するために、問題

  • を持っていますuser_idは」子供の 'アカウントは、' [userSession '])

  • および変更するには、その特定のXMLelements他のチャイルズ値 (innerHTMLプロパティを変更するのinnerHTML == $ _SESSIONが含まれています'今私のコードは、最初のユーザーのために働くのinnerHTML == $ _SESSION [「userSession」]です別の子供のuser_id ')

を持つ要素「アカウント」の子「ユーザ名」の、どの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

おかげで、完璧にthatsの作品! – Maxischl

関連する問題