Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [xml] [php]Co t oza błąd ?
Forum PHP.pl > Forum > XML, AJAX > XML
motor
  1. <?php
  2. $doc = DOMDocument::load('plik.xml');
  3. $xpath = new DOMXPath($doc);
  4. $produkty = $xpath->query('produkt');
  5. foreach($produkty as $produkt) {
  6. $query = 'INSERT INTO produkty SET `id` = ' . $xpath->query('id/text()', $produkt)->item(0) . ;
  7. $sql->query($query);
  8. }
  9. ?>


mam taki skrypt ale wyskakuje mi błąd co robić ?

Parse error: syntax error, unexpected T_OBJECT_OPERATOR in pliki/mm.php on line 19

19 linia to ta $query = 'INSERT INTO produkty SET `id` = ' . $xpath->query('id/text()', $produkt)->item(0) . ;
mike
Błąd "T_OBJECT_OPERATOR" oznacza że został niespodziewanie użyty operator ->
Upewnij się, że $xpath->query('id/text()', $produkt) zwraca obiekt.

Ewentualnie napisz to tak:
  1. <?php
  2. $doc = DOMDocument::load('plik.xml');
  3. $xpath = new DOMXPath($doc);
  4. $produkty = $xpath->query('produkt');
  5. foreach($produkty as $produkt) {
  6. $queryResult = $xpath->query('id/text()', $produkt); // sprawdź jeszcze dokładnie czym będzie $queryResult
  7. $query = 'INSERT INTO produkty SET `id` = ' . $queryResult->item(0) . ; // a poza tym co robi ta kropka przed śrenikiem ? Nie powinno jej tu być.
  8. $sql->query($query);
  9. }
  10. ?>
motor
Faktycznie nie wiem czy dobrze odczytuje plik xml questionmark.gif?
  1. - <katalog>
  2. - <produkty>
  3.  <produkt id="opony" cena="238"  />
  4.  <produkt id="tarcze" cena="5"  />
nospor
Ten komunikat co tu mamy, oznacza, ze nie oczekiwano ->, a nie oczekiwano ->, gdyż wywolania funkcji nie mają ->.
Najpierw trzeba przypisac do zmiennej to co zwraca funkcja (czyli w tym przypadku zwraca obiekt), a dopiero potem walic ->, czyli tak:
  1. <?php
  2. $zm = funkcja();
  3. $zm->wlasciwosc;
  4. ?>


@mike_mech w zasadzie podales poprawne rozwiązanie winksmiley.jpg
mike
Cytat(nospor @ 5.10.2006, 08:37:17 ) *
Ten komunikat co tu mamy, oznacza, ze nie oczekiwano ->, a nie oczekiwano ->, gdyż wywolania funkcji nie mają ->.
Najpierw trzeba przypisac do zmiennej to co zwraca funkcja (czyli w tym przypadku zwraca obiekt), a dopiero potem walic ->, czyli tak:
  1. <?php
  2. $zm = funkcja();
  3. $zm->wlasciwosc;
  4. ?>

Mylisz się:

  1. <?php
  2.  
  3. class KlasaA {
  4.  
  5. public function __construct() {
  6. }
  7.  
  8. public function getB() {
  9. return new KlasaB( 'example' );
  10. }
  11. }
  12.  
  13. class KlasaB {
  14.  
  15. private $str = null;
  16.  
  17. public function __construct( $str ) {
  18. $this->str = $str;
  19. }
  20.  
  21. public function getStr() {
  22. return $this->str;
  23. }
  24. }
  25.  
  26. $obiektA = new KlasaA();
  27.  
  28. echo $obiektA->getB()->getStr();
  29.  
  30. ?>

Kwestia jest jeszcze tego którą wersję php posiada autor?
nospor
ok, ja testowalem to na php4 i tam sie to wlasnie chrzani. sprawdzilem teraz na php5 i tam to skolei dziala smile.gif
motor
mam 5 smile.gif
O rany tyle postów a ja nadal nie wiem

kropkę zlikwidowałem błędy już nie wyskakują ale do bazy też nic się nie dodaje jak mam wyświetlić wynik na stronie żeby zobaczyć czy jest co dodawać ?
próbuję tak

  1. <?php
  2. echo $queryResult->item(0);
  3. ?>


ale nic
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.