Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekazywanie zmiennych pomiedzy funkcjami
Forum PHP.pl > Forum > Gotowe rozwiązania
Kasia
Witam drodzy koledzy i kolezanki
Dostałam zadanie napisania bazy danych w php. Kupiłam wiec ksiązki i
zabrałam
sie do rzeczy. Baza oczywiscie ma byc dostepna w necie a uklad przyciskow
nawigacyjnych
ma zmieniac sie w zaleznosci od zalogowaniej osoby. Wymyslilam wiec sobie ze
w tabeli uzytkownicy dodam pole uprawnienia i to one bedzie zarzadzac
przyciskami
Stworzylam taki oto plik (w skrócie oczywiscie)

[php:1:22e33a1404]<?php

function tabela($uprawnienia)
tu rysuje sobie tabelke

tu tworze przyciski
if $uprawnienia =0 to
printf("n <a href="test.php3?form_logo=%s">Zaloguj się</a>n",
$uprawnienia);

if $uprawnienia =2 to
printf("n <a href="test.php3?form_2=%s">Opcja2</a>n", $uprawnienia);

itd;

function Zaloguj($user_name, $passsword)

tu zalogowanie do bazy
i sciagniecie z bazy danych na temat uprawnien
$uprawnienia = $row["uprawnienia"];

function przyciski($user_name,$uprawnienia)
tabela($uprawnienia)...

function form_2($uprawnienia) {
tworze nowy formularz i jeszcze raz rysuje tabele
print $uprawnienia;
tabela($uprawnienia);


i program główny
if(isset($form_logo)):
form_logo($form_logo); /funkcja wykonujaca formularz logowania
elseif(isset($form_2)):
form_2($uprawnienia);
elseif(isset($Zaloguj)):
Zaloguj($user_name,$password);
else:

tabela($uprawnienia);
endif;
?>[/php:1:22e33a1404]

I wszystko ładnie działa. Po zalogowaniu w zaleznosci od uprawnien
uzytkownicy maja
widza rozne przyciski ale jak juz nacisna na jakis wykona sie funkcja form_2
ale
zmienna $uprawnienia przybiera wartosc 0 i przyciski sa jak na poczatku
Jezeli znajdzie choc jedna osoba by pomoc badz co badz poczatkujacej
programistce (a wierze ze tak)
bede baaaaaardzo wdzieczna

Kasia


---------------
Używaj bbcode, tak jest ładniej... (DeyV)
DeyV
zacznij od przeczytania topicu przyklajonego na forum php, na temat przekazywania zmiennych.
spenalzo
Poza tym do porównania stosuje się operator == lub ===. Ten ostatni sprawdza czy dwie wartości sa tego samego typu.
Tutaj użyłaś operatora przypisania = który zwróci prawdę.
squid
No wlasnie droga Kasiu nie wiem czy to tak specjalni (pseudokod) czy nie ale...
Cytat
[php:1:42c8f9eb96]<?php


if $uprawnienia =0 to
printf("n <a href="test.php3?form_logo=%s">Zaloguj się</a>n",
$uprawnienia);

if $uprawnienia =2 to
printf("n <a href="test.php3?form_2=%s">Opcja2</a>n", $uprawnienia);
?>[/php:1:42c8f9eb96]

... jesli to jest kod php(czy jakisc inny jezyk programowania) do porownania dwoch wartosci sluzy operator == a w php dodatkowo === ; moze w tym jest blad smile.gif
Kasia
Operatora przypisania nie zrobiłam (tu tylko tak dla szybkiego pokazania) tylko zastosowałam odpowiednio przypisanie. Problem ze za pierwszym razem gdy sie loguje dobrze przyciski sa dobrze wyswietlane co oznacza ze zmienna uprawnienia jest dobrze porównywana. Gdy jednak probuje przekazac zmienna z funkcji tabela aby wywolac funkcje form_2 ktora wraca do funkcji tabeli robi sie problem. Probowalam zadeklarowac ta funkcje jako global i nic.

Kasia
uboottd
Dobrze, ladnie, tylko mam takie pytanie: skad sie w ogole bierze zmienna $uprawnienia ? Nie zapomisz moze jej ustawic ? Od razu mowie ze jej przekazywanie w urlu owszem i pomoze, ale bedzie to niebezpieczne. Polecam poczytanie o sesjach i zmiennych sesyjnych.
Kasia
Zmienną $uprawnienia ustawiam w funkcji zaloguj i przy pierwszym przekazaniu dziala. O sesjach przeczytam z pewnościa?

Kasia
uboottd
Czy funkcja zaloguj jest wywolywana za kazdym wejsciem do tego skryptu ?
Kasia
Funkcja Zaloguj jest wywolywana tylko wtedy kiedy nacisniety jest przycisk Zaloguj czyli $uprawnienia ==0 czyli po otwarciu skryptu

Kasia
uboottd
To przy tak ogolnym cytacie skryptu ciezko dalej mi gdybac. Sprobuj wyizolowac bledny kod sledzac caly czas jak ci sie zmienia link do nastepnej strony (widze ze nie masz przeladowan, wiec bedzie to proste), zwroc uwage czy zawsze dostajesz ta wartosc pod oczekiwana przez Ciebie nazwa, szczegolnie:

[php:1:3f9c6afd34]
elseif(isset($form_2)):
form_2($uprawnienia);
[/php:1:3f9c6afd34]

o ile cytat jest dokladny to przekazujesz sobie uprawnienia w zmiennej form_2 a funcji przekazujesz wartosc z uprawnienia, ktore w tym momencie sa puste (skoro funkja zaloguj tez nie byla wywolana w tym miejscu), wiec kod funkcji uprawnien juz nie dostaje.
Kasia
W tym miejscu chcialam wywolac funkcje form_2 z wartościa $prawnienia
elseif(isset($form_2)):

form_2($uprawnienia);
kiedy zostal nacisniety przycisk form_2(nazwa nie istotna) w funkcji tabela
a href...
Jezeli wartosc $uprawnienia jest tu pusta co zrobic by tak nie bylo.
Kasia
uboottd
Nie zupelnie mi o to chodzilo.

Jest tak:

rysujesz tabelke z kneflami. jeden z nich jest linkiem do <a href="test.php3?form_2=%s">Opcja2</a> z wartoscia uprawnien dajmy na to 2.

Przychodzi pan user i klika na tego linka.

Glowny program lapie sie na isset($form_2) i wywoluje funkcje form_2 z _pustym_ argumentem (bo jak napisalem nic nie wskazuje na istnienie zmiennej $uprawnienia,

Funkcja form_2 tworzy nowy formularz i rysuje tabelke z kneflami przekazujac jako parametr wartosc pusta - wiec tableka rysuje sie tak jak dla braku uprawnien.

PS. Moje GG 5211575 - bedzie szybciej, a potem sie podsumuje dla potomnych na forum.
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.