Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][MySQL][PHP]Kod z książki nie działa
Forum PHP.pl > Forum > Przedszkole
filip3712
Witam, kilka dni temu zakupiłem książkę *takie cudo* zacząłem robić krok po kroku tak jak jest w książce napisane, przepisywałem kod linijka po linijce niestety strona nie działa
"Ta strona nie działa
HTTP ERROR 500"

Pobrałem nawet kod ze strony(była podana w książce) nadal nie działa...

Strona z której ściągałem: *ciach*
Dodam, że gdy odpalam cały kod przy pomocy "WebServ"(localhost) to wywala takie błędy:
CODE
Strict Standards: Non-static method Page::getInstanceBySpecial() should not be called statically in C:\WebServ\httpd\index.php on line 17

Fatal error: Call to a member function fetch() on a non-object in C:\WebServ\httpd\ww.incs\basics.php on line 23


Znowu jak użyję Xampp`a albo mojego prywatnego serwera VPS to jest biała strona i 0 błędów (lub błąd 500):/

Pozdrawiam.
markuz
Przeczytaj: Temat: Jak poprawnie zadac pytanie oraz przygotowac srodowisko pracy (Przygotuj właściwie swoje środowisko pracy)
filip3712
Dodałem do index.php
  1. ini_set('display_errors','1');


I nadal biała strona :/
viking
Zależy od konfiguracji serwera. Ustaw w php.ini. same komunikaty błędów chyba były bardzo czytelne.
Tomplus
Cytat(filip3712 @ 30.11.2017, 17:10:41 ) *
Znowu jak użyję Xampp`a albo mojego prywatnego serwera VPS to jest biała strona i 0 błędów (lub błąd 500):/


To oznacza że jest taki sam błąd jak powyżej. Pokaż kod.

Swoją drogą:
Data wydania książki to 11/2011, więc upewnij się jaką wersję PHP używasz, a jaką wersję zalecali w książce.
filip3712
Cytat(Tomplus @ 1.12.2017, 09:28:43 ) *
więc upewnij się jaką wersję PHP używasz, a jaką wersję zalecali w książce.


Użyłem PHP 5.2 wersje taką jaka jest napisana w książce i również nie działa( ohno-smiley.gif )

Błędy:
CODE

Notice: Undefined variable: instancesBySpecial in C:\xampp\htdocs\ww.php_classes\Page.php on line 51
Warning: array_key_exists() expects parameter 2 to be array, null given in C:\xampp\htdocs\ww.php_classes\Page.php on line 51

(Ten {codebox} coś szwankuje sam dodaje spacje)

Page.php:

  1. <?php
  2. ini_set('display_errors','1');
  3. class Page{
  4. static $instances = array();
  5. static $instancesByName = array();
  6. static $instancesBySpecial = array();
  7. function __construct($v,$byField=0,$fromRow=0,$pvq=0){
  8. # byField: 0=ID; 1=Name; 3=special
  9. if (!$byField && is_numeric($v)){ // wg identyfikatora
  10. $r=$fromRow?$fromRow:($v?dbRow("select * from pages where id=$v limit 1"):array());
  11. }
  12. else if ($byField == 1){ // wg nazwy
  13. $name=strtolower(str_replace('-','_',$v));
  14. $fname='page_by_name_'.md5($name);
  15. $r=dbRow("select * from pages where name like '".addslashes($name)."' limit 1");
  16. }
  17. else if ($byField == 3 && is_numeric($v)){ // wg pola special
  18. $fname='page_by_special_'.$v;
  19. $r=dbRow("select * from pages where special&$v limit 1");
  20. }
  21. else return false;
  22. if(!count($r || !is_array($r)))return false;
  23. if(!isset($r['id']))$r['id']=0;
  24. if(!isset($r['type']))$r['type']=0;
  25. if(!isset($r['special']))$r['special']=0;
  26. if(!isset($r['name']))$r['name']='NO NAME SUPPLIED';
  27. foreach ($r as $k=>$v) $this->{$k}=$v;
  28. $this->urlname=$r['name'];
  29. $this->dbVals=$r;
  30. self::$instances[$this->id] =& $this;
  31. self::$instancesByName[preg_replace('/[^a-z0-9]/','-',strtolower($this->urlname))] =& $this;
  32. self::$instancesBySpecial[$this->special] =& $this;
  33. if(!$this->vars)$this->vars='{}';
  34. $this->vars=json_decode($this->vars);
  35. }
  36. public static function getInstance($id=0,$fromRow=false,$pvq=false){
  37. if (!is_numeric($id)) return false;
  38. if (!array_key_exists($id,self::$instances)) self::$instances[$id]=new Page($id,0,$fromRow,$pvq);
  39. return self::$instances[$id];
  40. }
  41. public static function getInstanceByName($name=''){
  42. $name=strtolower($name);
  43. $nameIndex=preg_replace('#[^a-z0-9/]#','-',$name);
  44. if(array_key_exists($nameIndex,self::$instancesByName))return self::$instancesByName[$nameIndex];
  45. self::$instancesByName[$nameIndex]=new Page($name,1);
  46. return self::$instancesByName[$nameIndex];
  47. }
  48. public static function getInstanceBySpecial($sp=0){
  49. if (!is_numeric($sp)) return false;
  50. if (!array_key_exists($sp,$instancesBySpecial)) $instancesBySpecial[$sp]=new Page($sp,3);
  51. return $instancesBySpecial[$sp];
  52. }
  53. }



viking
Definicja tego w pobranym kodzie
  1. function getInstanceBySpecial($sp=0){
  2. if (!is_numeric($sp)) return false;
  3. if (!@array_key_exists($sp,$instancesBySpecial))
  4. $instancesBySpecial[$sp]=new Page($sp,3);
  5. return $instancesBySpecial[$sp];
  6. }

Ja tu nie widzę nigdzie static. Ten kod to jedno wielkie nieporozumienie. Jeśli chcesz się nauczyć nowoczesnego programowania to zapomnij o tym. A pracowanie na php 5.2 w momencie gdy wydane zostało 7.2 powinno tez ci coś pokazać.
Tomplus
Suma summarum... schowaj książkę do archiwum i kup taką o PHP która uczy używać PHP 7.
filip3712
W takim razie temat można zamknąć.

Dzięki za wszelaką pomoc smile.gif

Pozdrawiam.
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.