Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z zasięgiem (?) zmiennej
Dominator
post 26.07.2017, 23:12:17
Post #1





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

Ostrzeżenie: (20%)
X----


Cześć, na stronie pojawia mi się dynamiczny formularz (modal) w którym wybieram pozycję z listy i wybieram liczę. Oczywiście bez problemu przekazuję te wartości do PHP. Z tym problemu nie ma. Problem objawia się przy "zwrocie" danych z bazy danych. Na górze strony sprawdzam sobie czy formularz został przesłany, jeśli został to sprawdzam który formularz konkretnie został przesłany (są 4). Po identyfikacji wykonuje się funkcja PHP. Problem jest taki, że nie mogę sobie wypisać danych na stronie w odpowiedzi z serwera... no nie wiem czemu, ktoś mnie olśni?

  1. if($_POST == true)
  2. {
  3. if(AdminManager::hasPermission("op") == true || AdminManager::hasPermission("admin") == true)
  4. {
  5. if(isset($_POST["voucher_wygeneruj"]) == true)
  6. {
  7. $_voucherManager->addVoucher($_POST["voucher_service"], $_POST["ilosc"]);
  8. $vouchers = $_voucherManager->getVouchers();
  9. $info = 'Vouchery zostały wygenerowane';
  10. AdminManager::Log($nick," Dodał voucher <b>".$_POST["voucher_service"]."</b>");
  11. }
  12. }
  13. else
  14. {
  15. echo '<div class="alert alert-danger">Brak uprawnień</div>';
  16. }
  17. }




Interesuje mnie możliwość dostępu do zmiennej $vouchers, niestety nie mam sad.gif
Tak wygląda kod od strony silnika:

  1. class VoucherManager extends DatabaseConnector
  2. {
  3. public $vouchers = array();
  4.  
  5. public function addVoucher($service, $ilosc)
  6. {
  7. for($i=0;$i<$ilosc;$i++)
  8. {
  9. $voucherid = md5(uniqid(rand(), true));
  10. $stmt = $this->pdo -> prepare("INSERT INTO `itemshop_vouchers_2` (`voucher_service`, `voucher_code`) VALUES('".$service."', '".$voucherid."')");
  11. $stmt -> execute();
  12.  
  13. $this->vouchers[$i] = $voucherid;
  14. }
  15. }
  16.  
  17. public function getVouchers()
  18. {
  19. return $this->vouchers;
  20. }
  21. }




Gdziekolwiek nie napiszę print_r($vouchers) to nic nie wypisze, dlaczego?

Ten post edytował Dominator 26.07.2017, 23:16:05
Go to the top of the page
+Quote Post
mmmmmmm
post 26.07.2017, 23:30:30
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


A masz:
$_voucherManager = new VoucherManager();
Go to the top of the page
+Quote Post
Dominator
post 26.07.2017, 23:34:13
Post #3





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

Ostrzeżenie: (20%)
X----


Tak
Go to the top of the page
+Quote Post
Tomplus
post 27.07.2017, 05:32:50
Post #4





Grupa: Zarejestrowani
Postów: 1 875
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


jak masz zmienną $vouchers, to czy w ogóle masz dostęp do tej części kodu?

echo $info; ?

Go to the top of the page
+Quote Post
viking
post 27.07.2017, 06:12:30
Post #5





Grupa: Zarejestrowani
Postów: 6 379
Pomógł: 1116
Dołączył: 30.08.2006

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


Poza tym if($_POST == true). POST jest tablicą, dlaczego to porównujesz do true? Zwróci false.


--------------------
Go to the top of the page
+Quote Post
mstraczkowski
post 27.07.2017, 12:58:31
Post #6





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

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


@up
Nie zwróci false, bo dojdzie do konwersji typów (bo zastosowany został operator porównania, a nie identyczności), a tablica, która nie jest pusta zrzutowana na boolean to true

  1. var_dump((boolean)array('1', '2')) // true
  2. var_dump((boolean)array()); // false
  3. var_dump(array('1', '2') == true); // true


Ten post edytował mstraczkowski 27.07.2017, 13:03:14


--------------------
Jeżeli moja wypowiedź Ci pomogła użyj przycisku
Go to the top of the page
+Quote Post
Pyton_000
post 27.07.2017, 13:12:08
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Jak już się tak czepiamy wink.gif
  1. php > var_dump($_POST == true);
  2. php shell code:1:
  3. bool(false)
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: 31.07.2025 - 06:21