XML elements editen met PHP

Status
Niet open voor verdere reacties.

bruglione

Gebruiker
Lid geworden
28 okt 2008
Berichten
79
Hoi Helpmij,

Ik ben bezig met het maken van een XML database die ik wil bewerken met PHP (toevoegen, verwijderen en editen).

Het toevoegen en verwijderen gaat al goed, maar nu wil ik meerdere elements kunnen bewerken (de developer nodes).

Mijn XML:
Code:
<games>
 <game id="1" name="Warcraft 1" genre="Strategy" year="1995">
  <developers>
   <developer>Blizzard</developer>
  </developers>
 </game>
 <game id="2" name="Assasins Creed" genre="RPG" year="2007">
  <developers>
   <developer>Activision</developer>
  </developers>
 </game>
 <game id="3" name="Gears of war" genre="Shooter" year="2007">
  <developers>
   <developer>Epic games</developer>
  </developers>
 </game>
 <game id="4" name="Red Alert 2" genre="Strategy" year="2000">
  <developers>
   <developer>Westwood</developer>
  </developers>
 </game>
 <game id="5" name="Dragon Age" genre="RPG" year="2009"> 
  <developers>
   <developer>EA Games</developer>
   <developer>Bioware</developer>
  </developers>
 </game>
</games>

PHP script om te editen:
PHP:
 <?php
 
$doc = new DOMDocument();
$doc->load( 'games.xml' );

$doc->formatOutput = true;

$id = $_GET['id'];

$xpath = new DOMXPath($doc);

$query = '//games/game[@id = "'.$id.'"]';

$entries = $xpath->query($query);
$e = $entries->item(0);

if(array_key_exists('name',$_POST)){
  $e->setAttribute("name", $_POST["name"]);
  $e->setAttribute("genre", $_POST["genre"]);
  $e->setAttribute("year", $_POST["year"]);
  

  
  
  
  $doc->save( 'games.xml' );
  header("Location: {$_SERVER['HTTP_REFERER']}");

} 
  
 ?>

Het editen van de attributes name, genre en year gaat al goed, maar nu moeten de developers nog want dat kunnen er meerdere zijn per game en deze staan in elements ipv attributes.

Iemand hier tips voor?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan