Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zmienna globalna
Forum PHP.pl > Forum > Przedszkole
jarek0203
Witam. Mam funkcje która nic nie zwraca, jedynie wysyła dane do bazy danych:
Chce zrobić coś takiego:

  1. function zmien($nr, ...){
  2. .
  3. .
  4. .
  5.  
  6. $liczba=$nr;
  7.  
  8. }
  9.  
  10.  
  11. $zmienna=$liczba;
  12. echo $zmienna;


Co zrobić aby zmienna $liczba była widoczna globalnie? próbowałem z global, GLOBALS[] i static. Nic nie działa.
Turson
  1. function zmien($nr){
  2. return $nr;
  3. }
  4.  
  5.  
  6. $zmienna=zmien(1);
  7. echo $zmienna;
jarek0203
Jest jakaś inna opcja? W moim przypadku wszystko się sypie bo pomijam resztę zmiennych w funkcji

  1. function zmien($id_m,$id_f,$nr,$kontrahent,$ilosc,$material,$data,$cena)


i wywala mi błędy Warning: Missing argument 2 for faktura::zmien(), called in C:\xampp\htdocs\index.php on line 223 and defined in C:\xampp\htdocs\faktura.php on line 12
dla każdego argumentu.
Turson
Jak chcesz resztę pomijać to po co ona jest? Ewentualnie ustaw ją jako $id_f=null,$nr=null itd.
jarek0203
Nie chce pomijać reszty. Po prostu w moim przypadku return nie zdaje egzaminu. Potrzebuję tylko wartości zmiennej $nr po za funkcją.
adeptofvoltron
istnieją 2 nieładne rozwiązania:

  1. $liczba;
  2.  
  3. function zmie($nr){
  4. global $liczba;
  5. $liczba=$nr;
  6. }
  7.  
  8. zmie(1);
  9. echo $liczba;


a drugie:
  1. $GLOBALS['x']=5; .
  2. function zmien($nr){
  3. $liczba=&$GLOBALS['x'];
  4. $liczba=$nr;
  5. }
  6.  
  7. zmien('ala ma kota');
  8.  
  9. echo $GLOBALS['x'];


Tylko jeszcze raz, takie rozwiązania sa niebezpieczne. mogą ci łatwo wpłynąć na zmianne w innej cześci programu jeśli będzie kolizja nazw. I nawet tego nie zauważysz+zajmuje ci odrobinę miejsca w pamięci(co jest raczej mało ważne)

Edyta:
Chociaż konto mam tu od dawna, to działam na tym forum od niedawna. Tak więc pytanie do modów. W przypadku jak chce dopisac coś nowego lepiej widziana jest edycja ostatniego postu. Czy zakładac nowy post(na róznych forach różnie z tym bywa)

A teraz właściwie rozwiązanie o którym nie napisałem wczesniej..a w sumie będzie najładniejsze. Wrzuć tę funkcję w jakiś obiekt + pole w tym obiekcie.
  1. class foo{
  2. public $liczba;
  3.  
  4. function zmien($nr){
  5. $this->liczna=$nr;
  6. }
  7. }
  8.  
  9. $x = new foo();
  10. $x->zmien(5);
  11. echo $x->liczba;
jarek0203
Mam funkcje w klasie

  1. class faktura{
  2. function zmien{
  3.  
  4. }
  5. }


Nie działa:
Notice: Undefined property: faktura::$liczba in C:\xampp\htdocs\index.php on line 224

Funkcja zmien przyjmuje wiecej parametrów:
  1. function zmien($id_m,$id_f,$nr,$kontrahent,$ilosc,$material,$data,$cena)


Tak wrzucam dane do funkcji
  1. case 'zmien':
  2. $fk->zmien(
  3. $_POST['id_m'],
  4. $_POST['id_f'],
  5. $_POST['nr'],
  6. $_POST['kontrahent'],
  7. $_POST['ilosc'],
  8. $_POST['material'],
  9. $_POST['data'],
  10. $_POST['cena']);
  11. break;


Może to coś pomoże.
adeptofvoltron
liczba jest statyczna?

twój kod nie wiele wnosi do tematu. bo to co zrozumiałem że chcesz osiągnąć już wskazałem.

ale mogę doradzić byś wpierw zwalidował dane skoro przechodzą postem
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.