Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z warunkami
new_user
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 20.02.2007

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


Mam problem ze sprawdzeniem czy zmienna istnieje. Mam takie kody xml. Jeden plik:
  1. <stuff transactionId="10885-1268826001843">
  2. <books>
  3. <book indeks="10122500117KS">
  4. <autorzy><![CDATA[3Capelle Guy]]></autorzy>
  5. <redakcja><![CDATA[]]></redakcja>
  6. <tytul><![CDATA[Frequence jeunes 2 Encyklopedia Poradnik dla nauczyciela]]></tytul>
  7. </book>
  8. </books>

drugi plik:
  1. <cats>
  2. <cat id="239" ind="10122500117KS"/>
  3. <cat id="769" ind="02122500117KS"/>
  4. <cat id="2047" ind="10122500117KS"/>
  5. </cats>


chodzi o to ze sa tu powiazania indeks z pierwszego pliku jest powiazany z ind z drugiego plikum Mam skrypt ktory mi przetwarza te pliki i powiazania ladnie wylapuje jednak problem pojawia sie wtedy gdy np jakiegos indeksu nie bedzie w drugim pliku wtedy wyskakuja takie bledy:
Notice: Undefined offset: 0 in /home/user/public_html/projekty/import.php on line 166
Fatal error: Call to a member function attributes() on a non-object in /home/user/public_html/projekty/import.php on line 166

probowalem warunkami if i tez mi nie pomagaly jak wykryc indeks pierwszego pliku ktorego nie znalazl w drugim pliku.
Sprawdzałem tak czyli pobieram indeks
10122500117KS do $ksiazka->attributes()->indeks i nastepnie pobieram z drugiego pliku przypisujac do $kategoria2indeks = $xml_kategoria2indeks->xpath("//cats/cat[@ind='".$ksiazka->attributes()->indeks."']"); nie ma problemu jak indeks natomiast w przypadku gdy indeksu nie ma chcialbym zeby wypluwal do pliku lub na ekran indeks nastepnie pomijal go i lecial dalej po pliku.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
cudny
post
Post #2





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Brak wyników.

  1. if($ksiazka) {
  2. $xml_kategoria2indeks->xpath("//cats/cat[@ind='".$ksiazka->attributes()->indeks."']");
  3. }


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
new_user
post
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 20.02.2007

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


Cytat(cudny @ 16.03.2011, 12:31:38 ) *
Brak wyników.

  1. if($ksiazka) {
  2. $xml_kategoria2indeks->xpath("//cats/cat[@ind='".$ksiazka->attributes()->indeks."']");
  3. }


Robilem tak
  1. if (!isset($kategoria2indeks[0]->attributes()->id)) {
  2. echo "Brak wyników";
  3. }
  4. echo $kategoria2indeks[0]->attributes()->id;

i tak
  1. if (!$kategoria2indeks[0]->attributes()->id) {
  2. echo "Brak wyników";
  3. }
  4. echo $kategoria2indeks[0]->attributes()->id;

a takze tak
  1. if ($kategoria2indeks[0]->attributes()->id == '') {
  2. echo "Brak wyników";
  3. }
  4. echo $kategoria2indeks[0]->attributes()->id;

  1. if ($kategoria2indeks[0]->attributes()->id == NULL) {
  2. echo "Brak wyników";
  3. }
  4. echo $kategoria2indeks[0]->attributes()->id;


zaden z tych sposobow mi nie dzialal poprawnie.
Go to the top of the page
+Quote Post
cudny
post
Post #4





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


No bo jak ci ma nie wywalić błędu jak dajesz echo tam gdzie czegoś nie ma ! Przecież ci pisałem o tym

Daj tak:

  1. if (!isset($kategoria2indeks[0]->attributes()->id)) echo "Brak wyników";
  2. else echo $kategoria2indeks[0]->attributes()->id;


A najlepiej tak:
  1. // tylko tutaj nie pamiętam czy xml zwraca ci pustego arraya czy zawsze daje [0]
  2. if (empty($kategoria2indeks)) echo "Brak wyników"; // tak
  3. if (empty($kategoria2indeks[0])) echo "Brak wyników"; // a jak tamto nie zadziała to tak
  4. if(!isset($kategoria2indeks[0])) echo "Brak wyników"; // a jak tamte dwa nie zadziałają to tak :)
  5.  
  6. else echo $kategoria2indeks[0]->attributes()->id;



Ten post edytował cudny 16.03.2011, 13:14:07


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
new_user
post
Post #5





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 20.02.2007

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


Co mam tu zle ze mi nie dziala jak nalezy?
  1. $dane = '';
  2. switch ($_GET['operacja']) {
  3. case 'pelny':
  4. $xml_pelny = simplexml_load_file('2.xml');
  5. foreach ($xml_pelny->books->book as $ksiazka) {
  6. if ($ksiazka->cenaHurt == '') {
  7. $ksiazka->cenaHurt = "Brak ceny hurtowej";
  8. }
  9. $tablicaTematyki = $xml_pelny->xpath("//tematyki/itemTematyka[@symbol='".$ksiazka->typ_pub."']");
  10. $ksiazka->autorzy = preg_replace("/(\r\n|\n|\r|\t)/", "a", $ksiazka->autorzy);
  11. $ksiazka->tytul = preg_replace("/(\r\n|\n|\r|\t)/", "", $ksiazka->tytul);
  12. $ksiazka->opis = preg_replace("/(\r\n|\n|\r|\t)/", "", $ksiazka->opis);
  13. $ksiazka->wydawca = preg_replace("/(\r\n|\n|\r|\t)/", "", $ksiazka->wydawca);
  14.  
  15. $xml_kategoria2indeks = simplexml_load_file('kat2ind.xml');
  16. $kategoria2indeks = $xml_kategoria2indeks->xpath("//cats/cat[@ind='".$ksiazka->attributes()->indeks."']");
  17. $dane .= "ID;1;".$ksiazka->tytul.";";
  18.  
  19. if(!isset($kategoria2indeks[0])) echo "Brak wyników";
  20. echo $kategoria2indeks[0]->attributes()->id."<br/>";
  21.  
  22. }
  23. file_put_contents("dane.csv", $dane);
  24. }


Nadal mam tego typu komunikaty
Notice: Undefined offset: 0 in /home/user/public_html/projekty/import.php on line 168
Fatal error: Call to a member function attributes() on a non-object in /home/user/public_html/projekty/import.php on line 168
Go to the top of the page
+Quote Post
cudny
post
Post #6





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


ehhh... czemu nie czytasz tego co ci piszę ;(

linia 168 to na 100% echo $kategoria2indeks[0]->attributes()->id."<br/>";

ILE RAZY PISAŁEM ŻE MA BYĆ TAM ELSE ?
  1. if(!isset($kategoria2indeks[0])) {
  2. echo "Brak wyników";
  3. } else { // TO ELSE MA BYĆ !!!!!!!!!!!
  4. echo echo $kategoria2indeks[0]->attributes()->id."<br/>";
  5. }




--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
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 Aktualny czas: 21.08.2025 - 16:53