Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [xml] [php]Co t oza błąd ?
motor
post 4.10.2006, 22:33:23
Post #1





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 15.12.2005

Ostrzeżenie: (0%)
-----


  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) . ;
Go to the top of the page
+Quote Post
mike
post 4.10.2006, 22:44:39
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
motor
post 5.10.2006, 07:35:56
Post #3





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 15.12.2005

Ostrzeżenie: (0%)
-----


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"  />
Go to the top of the page
+Quote Post
nospor
post 5.10.2006, 07:37:17
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mike
post 5.10.2006, 07:46:03
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
nospor
post 5.10.2006, 07:48:27
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ok, ja testowalem to na php4 i tam sie to wlasnie chrzani. sprawdzilem teraz na php5 i tam to skolei dziala smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
motor
post 5.10.2006, 08:24:18
Post #7





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 15.12.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 20:24