Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z funkcją children() (simplexml)
Forum PHP.pl > Forum > PHP
bubekson
Cześć.

Jestem w trakcie pisania skryptu do odczytu i modyfikacji pliczku xml.
Całość oparłem o pętlę foreach- pierwszy skrypt odczytuje i wyświetla oddzielne formularze do modyfikacji każdej komórki.
Treść pierwszego:

  1. <?
  2. $xml = simplexml_load_file("test.xml");
  3.  
  4. foreach($xml->children() as $child)
  5. {
  6. echo "<form name=Edycja2 action=parser.php method=post><td><tr></tr><tr><td width=78><textarea rows=5 cols=30 name=" . $child->getName() . ">" . $child . "</textarea></td><td width=78><input type=submit value=Potwierdzam ></td></tr></form>";
  7. }
  8. ?>


^ I tutaj żadnego problemu nie ma, wszystko działa jak powinno.
Drugi skrypt otrzymuje zmienną i modyfikuje komórkę.

  1. <?php
  2. $xml = simplexml_load_file("test.xml");
  3.  
  4. foreach($xml->children() as $child){
  5. if (!empty($_POST[$child->getName()])){
  6. $child = $_POST[$child->getName()];
  7. $xml->children() = $child;
  8.  
  9.  
  10. foreach($xml->children() as $child) //Sprawdzam czy dokonał zmian.
  11. {
  12. echo $child->getName() . ": " . $child . "<br />";
  13. }
  14. }}
  15. ?>


^w tym skrypcie mam problem. Wszystko działa jak powinno jeśli chodzi o odbiór zmiennej ( bo gdy usunę "()" w linijce
"$xml->children() = $child;", to wtedy przesłany wynik pokazuje się w nowej komórce (o nazwie children)), ale gdy chcę przypisać $child do children() to skrypt wywala błąd :


Fatal error: Can't use method return value in write context in D:\blablablabla\parser.php on line 7


Co robię źle??




Czy ktokolwiek jest w stanie udzielić jakiejkolwiek odpowiedzi? Nie wiem, może to bug php albo coś. Może źle się do tego zabieram. Szukałem wszędzie ale nigdzie nie ma rozwiązania.

CuteOne
A zajrzał ty chociaż do manuala?? http://www.php.net/manual/en/simplexmlelement.children.php

ps.
Cytat
Nie wiem, może to bug php albo coś

Boga w to nie mieszaj...
bubekson
Nie rozumiem - czyli nie mogę odwołać się do children() w bezpośredni sposób?
Zyx
Ale czy rozumiesz w ogóle ten zapis?

  1. $xml->children() = $child;


Przecież nie da się nigdzie w PHP przypisać wartości wyrażenia do metody. Za przeproszeniem, to są absolutne podstawy PHP smile.gif. Nawet za bardzo sam nie rozumiem, co Ty tam próbujesz wymodzić, poza próbą modyfikowania wczytanego dokumentu. SimpleXML został zaprojektowany do prostego odczytu dokumentów XML, natomiast jego funkcjonalność nie była nigdy specjalnie dostosowywana pod kątem zapisu. Jeśli chcesz modyfikować wczytany dokument, użyj modelu DOM.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.