Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Trying to get property of non-object
Forum PHP.pl > Forum > Przedszkole
shpaque
Dzień dobry, fiksuję już chyba bo tego zupełnie nie rozumiem.

dlaczego w kodzie:

  1. if (isset($_GET['fr']))
  2. {
  3. $getFolderRow = $_GET['fr'];
  4.  
  5. echo $customer -> catalogs -> catalog[TUTAJ] -> title;
  6. }


przy adresie get: http://www.bleble.vx/costam.php?fr=1

kiedy dam na sztywno [1] wszystko jest ok, ale kiedy dam [$getFolderRow], wywala

Trying to get property of non-object
Pyton_000
var_dump($customer->catalogs->catalog);
shpaque
patrzylem i na printr i na var dump - chodzi o to ze zwraca jedna tablice z pierwszym "katalogiem"
jest ich 3, jak dam na sztywno - odczytuje, jak nie, zwraca blad...

dlatego mnie to dziwi, dlaczego dziala na sztywno [1], dlaczgeo dziala tak jak ponizej:

  1. for ($i = 0; $i < $countCats; $i++)
  2. {
  3. if ($i == $getFolderRow)
  4. {
  5. echo $customer -> catalogs -> catalog[$i] -> title;
  6. }
  7. }


a dlaczego nei dziala tak:

  1. echo $customer -> catalogs -> catalog[$getFolderRow] -> title;
nospor
$getFolderRow = (int)$_GET['fr'];

A jak i to nie zadziala to pokaz co zwraca
var_dump($_GET['fr']);
shpaque
string(1) "1"

to dziwne bo w innych przypadkach dziala to bezblednie, a tu nie i musze bezcelowo dodwac kolejna petle zeby zadzialalo:

  1. $findCatTitle = '';
  2. for ($i = 0; $i < $countCats; $i++)
  3. {
  4. if ($i == $getFolderRow)
  5. {
  6. $findCatTitle = $customer -> catalogs -> catalog[$i] -> title;
  7. }
  8. }
  9. var_dump($_GET['fr']);
  10.  
  11. if ($findCatTitle == $getFolderTitle)...
nospor
No ale zrobiles $getFolderRow = (int)$_GET['fr']; jak prosilem? Pokaz caly kod po zmianach. Caly.

I pokaz co dokladnie zwraca
var_dump($customer -> catalogs -> catalog);
shpaque
nie zrobilem bo mowiles ze i tak nie zadziala - ale zadziałało!!! Tylko dlaczego tutaj musialo a gdzie indziej idzie normalnie?

Cały kod

  1. $xmlPath = './db/customers.xml';
  2. $dataBase = simplexml_load_file($xmlPath) or die ('Błąd: Wystąpił problem z plikiem XML!');
  3.  
  4. $changeLogDB = $dataBase -> changeLog;
  5. $ip = $dataBase -> ip;
  6.  
  7. foreach ($dataBase -> customer as $customer)
  8. {
  9. if ( ($customer -> name == $getCustomerName) && ($customer -> settings -> id == $getID) )
  10. {
  11. $customerName = $customer -> name;
  12. $customerFolder = $customer -> folder;
  13. $settings[] = $customer -> settings;
  14. $catalogs[] = $customer -> catalogs;
  15.  
  16. $countCats = count($customer -> catalogs -> catalog);
  17.  
  18. // Sprawdzamy, czy nie trzeba dodać nowego katalogu klienta
  19. if ( (isset($_GET['f'])) && (isset($_GET['fn'])) )
  20. {
  21. $getFolder = $_GET['f'];
  22. $getFolderName = $_GET['fn'];
  23.  
  24. if (($getFolder == 'add') && ($getFolderName == 'new'))
  25. {
  26. // Dodajemy katalog i pierwszy main oraz link
  27. $dataBase -> changeLog = $nowDateTime;
  28. $dataBase -> ip = $yourIP;
  29. $i = $countCats + 1;
  30.  
  31. $dataBase -> customer -> settings -> changeLog = $nowDateTime;
  32. $newCatalog = $dataBase -> customer -> catalogs -> addChild('catalog');
  33. $newCatalog -> addChild('title', 'Tytuł nowego katalogu');
  34. $newCatalog -> addChild('file', '');
  35. $newMain = $newCatalog -> addChild('main');
  36. $newMain -> addChild('title', 'Tytuł nowego działu');
  37. $newMain -> addChild('page', '0');
  38. $newLink = $newMain -> addChild('link');
  39. $newLink -> addChild('title', 'Tytuł nowego linku');
  40. $newLink -> addChild('page', '0');
  41. $dataBase -> asXML($xmlPath);
  42.  
  43. // Zmieniamy strukturę pliku, upiększamy i zapisujemy go
  44. function formatXml($simpleXMLElement)
  45. {
  46. $xmlDocument = new DOMDocument('1.0', 'utf-8');
  47. $xmlDocument -> preserveWhiteSpace = false;
  48. $xmlDocument -> formatOutput = true;
  49. $xmlDocument -> loadXML($simpleXMLElement -> asXML());
  50.  
  51. return $xmlDocument -> saveXML();
  52. }
  53.  
  54. $beautifyXML = htmlspecialchars(formatXml($dataBase));
  55. $beautifyXML = html_entity_decode($beautifyXML);
  56.  
  57. $beautyFile = fopen($xmlPath, 'w');
  58. flock($beautyFile, LOCK_EX);
  59. fwrite($beautyFile, $beautifyXML);
  60. flock($beautyFile, LOCK_UN);
  61. fclose($beautyFile);
  62.  
  63. // Alertujemy co się wydarzyło
  64. $alertPath = './index.php?page=edit&id='.$getID.'&c='.$getCustomerName;
  65. $alertType = 'alert-success';
  66. $alertMessageStrong = 'Sukces!';
  67. $alertMessage = 'Nowy katalog został dodany.';
  68.  
  69. echo "<script>document.location.href = \"".$alertPath."&at=".$alertType."&ams=".$alertMessageStrong."&am=".$alertMessage."\";</script>";
  70. }
  71.  
  72. // Usuwanie katalogu z plikami i odnośnikami
  73. if ($getFolder == 'del')
  74. {
  75. if ( (isset($_GET['fr'])) && (isset($_GET['ft'])) )
  76. {
  77. $getFolderRow = (int)$_GET['fr'];
  78. $getFolderTitle = $_GET['ft'];
  79.  
  80. // Nadpisujemy czas zmiany pliku bazy danych
  81. $dataBase -> changeLog = $nowDateTime;
  82. $dataBase -> ip = $yourIP;
  83. $customer -> settings -> changeLog = $nowDateTime;
  84. $dataBase -> asXML($xmlPath);
  85.  
  86. $findCatTitle = $customer -> catalogs -> catalog[$getFolderRow] -> title;
  87. if ($findCatTitle == $getFolderTitle)
  88. {...
nospor
Cytat
nie zrobilem bo mowiles ze i tak nie zadziala
Koniec. Brak mi na ciebie juz sil. Omojam twoje tematu z daleka od dzisiaj. Ile razy mozna...za kazdym razem jest z toba uzeranie, prosze po kilkarazy o to samo... To mi/nam ma zalazec czy tobie? Wskaz mi prosze palcem gdzie ja ci napisalem ze to nie zadziala?!
shpaque
Cytat(nospor @ 15.06.2018, 11:54:47 ) *
$getFolderRow = (int)$_GET['fr'];

A jak i to nie zadziala to pokaz co zwraca
var_dump($_GET['fr']);

skoro napisałeś że nie zadziała - nie robiłem.
nospor
NIe! Nie napisalem ze nie zadziala. Ty sie nauczy ze zrozumieniem czytac. Tam jest napisane, ze JESLI NIE ZADZIALA to .....
shpaque
ok. Przepraszam. Za szybko czytam.
nospor
Wlasnie. I tak z kazdym tematem od jakiegos czasu. Czytasz po lebkach i trzeba kilkukrtonie to samo powtarzac a nawet jak sie palcem pokaze to dalej nie raczysz sie skupic. Ja juz odpadam bo mam dosc takiego twojego zachowania.
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-2024 Invision Power Services, Inc.