Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]z funkcji do define - jak to ugryźć?
Forum PHP.pl > Forum > Przedszkole
casperii
Panowie poprzez select option wstawiam sobie wartość do funkcji:
  1. function SelectedAccount($SelectedAccount){
  2. $pdo = new db_connect();
  3. $sql = $pdo->prepare('SELECT * FROM `users` WHERE `short` = "'.$SelectedAccount.'" ');
  4. $sql->execute();
  5. $row = $sql->fetch();
  6. echo $row['user_login'];
  7. echo $row['user_password'];
  8. }


i chciałbym teraz wstawić user-login i user-password do define:

  1. define('LOGIN', 'wstawiam');
  2. define('HASLO', 'wstawiam');


niestety nie mogę define wstawić do środka funkcji tylko musi być na zewnątrz.


Rysh
Użyj return do zwrócenia tych danych i użyj jak chcesz. Tak poza tym, co to za pomysł żeby pobierać hasło i wstawiać je do define.
casperii
Kilka kont allegro i w zależności od wyboru z selecta ładuje dane do define a z nich wczytuje dalej do funkcji doLogin etc.
Z tym returnem coś nie idzie:
  1. return $row['user_login'];
  2.  
  3. echo SelectedAccount();

Pyton_000
my wiemy jak się robi return. Ty chyba nie... Pokaż cały kod a nie 2 wybrane linijki.
Poza tym wypadałoby się w końcu wziąć za podstawy programowania skoro masz problemy z takimi prostymi zadaniami.
nospor
Pomijajac cale te return itp to DEFINE nie sluzy do tworzenia stalych z bazy danych. Totalnie zle do tego podchodzisz.
casperii
w pierwszym poście podałem całą funkcje:

  1. function SelectedAccount($SelectedAccount){
  2. $pdo = new db_connect();
  3. $sql = $pdo->prepare('SELECT * FROM `users` WHERE `short` = "'.$SelectedAccount.'" ');
  4. $sql->execute();
  5. $row = $sql->fetch();
  6. return $row['user_login'];
  7. //echo $row['user_password'];
  8. }


w kolejnym poście nie dawałem ponownie kodu, tylko pokazałem , że echo zamieniłem na return

do funkcji przekazuje wartość którą w zależności od wartości przeszukuje bazę.
Pytaniem nie jest jak użyć funkcji tylko jak wyświetlić z funkcji zwrócone wartości ?

@nospor define to jedyne co mi na chwilę obecną przychodzi do głowy by z w/w funkcji przekazać wartości do klassy:

  1. class AllegroWebAPI {
  2. protected $_instance;
  3. protected $_config;
  4. protected $_session;
  5. protected $_client;
  6. protected $_local_version;
  7. const COUNTRY_CODE = '1';
  8.  
  9. public function __construct() {
  10. $this->_config = array(
  11. 'allegro_id' => '1',
  12. 'allegro_key' => KLUCZ,
  13. 'allegro_login' => LOGIN,
  14. 'allegro_password' => (base64_encode(hash('sha256', HASLO, true)))
  15. );
  16. $this->_client = new SoapClient('https://webapi.allegro.pl/uploader.php?wsdl');
  17. }

phpion
Przekaż dane jako argumenty konstruktora. Od biedy możesz też skorzystać ze statycznych składowych klasy.
casperii
@phpion czy mógłbyś podać przykład jak to zrobić?
viking
  1. private $db;
  2.  
  3. public function __construct(PDO $db) {
  4. $this->db = $db;
  5. }
  6. public function SelectedAccount($SelectedAccount){
  7. $sql = $this->db->prepare('SELECT * FROM `users` WHERE `short` = ?');
  8. if ($sql->execute([$SelectedAccount])) {
  9. $row = $sql->fetch();
  10. return [
  11. 'login' => $row['user_login'],
  12. 'pass' => $row['user_password']
  13. ];
  14. // albo return $sql->fetch();
  15. }
  16.  
  17. $x = new twojaklasa;
  18. var_dump($x->SelectedAccount('test'));
casperii
@viking , nie rozumiem skąd Ty to wziąłeś:

  1. $x = new twojaklasa;


przecież to:
  1. public function SelectedAccount($SelectedAccount){


nie jest w klasie tylko poza nią.

Przecież mamy kod:
  1. function SelectedAccount($SelectedAccount){
  2. $pdo = new db_connect();
  3. $sql = $pdo->prepare('SELECT * FROM `users` WHERE `short` = "'.$SelectedAccount.'" ');
  4. $sql->execute();
  5. $row = $sql->fetch();
  6. return $row['user_login'];
  7. //echo $row['user_password'];
  8. //echo $row['api-key'];
  9. }
  10.  
  11.  
  12. class AllegroWebAPI {
  13.  
  14. public function __construct() {
  15. $this->_config = array(
  16. 'allegro_id' => '1',
  17. 'allegro_key' =>SelectedAccount(tu przekazanie wartości pola klucz) //KLUCZ,
  18. 'allegro_login' => SelectedAccount(tu przekazanie wartości pola login)//LOGIN,
  19. 'allegro_password' => (base64_encode(hash('sha256', SelectedAccount(tu przekazanie wartości pola hasło, true)))
  20. );
  21. $this->_client = new SoapClient('https://webapi.allegro.pl/uploader.php?wsdl');
  22. }
  23.  
  24. }
viking
A skąd mogę wiedzieć? Myślałem że to fragment klasy. Zasada działania dokładnie ta sama. Przypisz wynik działania do zmiennej i podstaw dane.
casperii
Czyli rozumiem, że to powinno być coś w ten deseń:

  1. function .. {
  2. ..
  3. $row = $sql->fetch();
  4. $costam = $row['user_login'];
  5. }


a potem:

  1. allegro_key' =>SelectedAccount($costam),
viking
Przecież ci dokładnie napisałem jak to ma być. Wywołanie jest tylko inne bo to funkcja a nie metoda.
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.