Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przekazywanie zminnych pomiędzy funkcjami
sztosz
post 7.06.2004, 09:37:02
Post #1





Grupa: Zarejestrowani
Postów: 866
Pomógł: 32
Dołączył: 2.06.2004
Skąd: Wrocław

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


Jak szybko przekazać zmienne?

Używam stworzonej przeze mnie klasy do wyswietlania stron, zmienia sie tylko zawartosc strony. nagłowek menu i stopka pozostaja bez zmian. Dane o nich sa zapisane w plikach *.req (używam takiego rozszerzenia od require). Klasa posiada funkcje do wyswietlania:

[php:1:0b9f477ce5]<?php

class strona
{
// atrybuty klasy

var $zawartosc = '0';

...

// operacje klasy

function ustaw_zawartosc ($nowa_zawartosc) // ustawienie zawartosci strony
{
$this->zawartosc = $nowa_zawartosc;
}
....


// funkacja sluzy do wyswietlania strony:

function wyswietl()
{
echo "<html><head>";
$this->wyswietl_meta();
$this->wyswietl_tytul($this->tytul);
$this->wyswietl_slowa_kluczowe($this->slowa_kluczowe);
$this->wyswietl_style();
echo "</head><body>";
$this->wyswietl_naglowek();
$this->wyswietl_menu();
$this->wyswietl_zawartosc($this->zawartosc);
$this->wyswietl_stopke();
echo "</body></html>";
}

// funkcje wykorzystywane przez wyswietl()

....

// aż do

function wyswietl_zawartosc($zawartosc)
{
if ($zawartosc != '0')
{
require "$zawartosc";
}
else
{
$zawartosc = require ('default/zawartosc.req');
echo $zawartosc;
} //end if
}


}

?>[/php:1:0b9f477ce5]

Strona z formularzem dodaj.php:
przesyła zawartosc do strony dodane.php
[/php]

[php:1:0b9f477ce5]<?php

require ('classes/strona.cls');

$dodaj = new strona();

$zawartosc_strony = 'pages/dodaj.req';

$dodaj -> ustaw_zawartosc ($zawartosc_strony);
$dodaj -> wyswietl();
?>[/php:1:0b9f477ce5]

przesyła zawartosc do strony dodane.php ktura wyglada podobnie.
Plik dodaj.req formularza konczy sie:
[xml:1:0b9f477ce5]
<INPUT TYPE="TEXT" NAME="ilosc_cd" MAXLENGHT="3"><BR>
</TD>
</TR>
<TR>
<TD>
<INPUT TYPE="SUBMIT" VALUE="DODAJ"><BR>
</TD>
</TR>
</TABLE>
</FORM>[/xml:1:0b9f477ce5]

na sronie dodane dodane.req nie działa
[php:1:0b9f477ce5]<?php
$nazwa = $HTTP_POST_VARS['nazwa'];
?>[/php:1:0b9f477ce5]

Ale na stronie dodane.php działa co jest grane?

Jeszcze raz dodam ze dodane.req jest wywoływane przez zagnierzdzone funkcje klasy w dodane.php.

Czy to chodzi o zasieg zmiennych? A jesli tak to czy [php:1:0b9f477ce5]$HTTP_POST_VARS[/php:1:0b9f477ce5]

nie jest zmienna superglobalna? Z góry dziekuje za wskazanie ewentualnych błedów lub rozwiązan.

PS. Znalazłem rozwiązanie poprzez zastosowanie pliku tymczasowego ale nie jest to rozwiazanie ani ładne ani wygodne. Plik jest tworzony przez skrypt w trakcie kilku pierwszych linijek a w polowie juz usuniety, wiec nim dojdzie do konca nie ma po tym tempi sladu. Czy jest to bezpieczne rozwiazanie?


--------------------
Go to the top of the page
+Quote Post
Ace
post 7.06.2004, 10:10:55
Post #2





Grupa: Zarejestrowani
Postów: 216
Pomógł: 0
Dołączył: 9.08.2003
Skąd: Warszawa

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


[php:1:d0bc6e4d85]<?php

class test
{
var
$zmienna; // tu deklarujemy zmienna

function setVar($var)
{
$this->zmienna = $var; // tutaj ja przypisujemy
}
function printVar()
{
echo $this->zmienna; // tutaj odnosimy sie do tej zmiennej
}
}

$test->new test;
$test->setVar("Oto nasz maly tescik");
$test->printVar();
?>[/php:1:d0bc6e4d85]
powinno wydrukowac napis "Oto nasz maly tescik"

w klasach wpierw przypisujesz zmienne $this->NAZWAZMIENNEJ
a pozniej w dowolnym momencie klasy odnosisz sie przez ten sam zwrot czyli $this->NAZWAZMIENNEJ
Go to the top of the page
+Quote Post
sztosz
post 7.06.2004, 10:17:44
Post #3





Grupa: Zarejestrowani
Postów: 866
Pomógł: 32
Dołączył: 2.06.2004
Skąd: Wrocław

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


czy dobrze rozumiem?

[php:1:af6e076ed6]<?php
function wyswietl_zawartosc($zawartosc)
{
if ($zawartosc != '0')
{
require "$zawartosc";
}
else
{
$zawartosc = require ('default/zawartosc.req');
echo $zawartosc;
} //end if
}


?>[/php:1:af6e076ed6]

Powinno wyglądac tak:

[php:1:af6e076ed6]<?php
function wyswietl_zawartosc()
{
if ($this->zawartosc != '0')
{
require "$this->zawartosc";
}
else
{
$zawartosc = require ('default/zawartosc.req');
echo $zawartosc;
} //end if
}

?>[/php:1:af6e076ed6]

I wtedy bedzie ok?

Sprawdze jak tylko wroce z pracy.


--------------------
Go to the top of the page
+Quote Post
sztosz
post 8.06.2004, 08:52:47
Post #4





Grupa: Zarejestrowani
Postów: 866
Pomógł: 32
Dołączył: 2.06.2004
Skąd: Wrocław

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


Spróbowałem tak jak mi radzono, ale nie dało to rezultatu, niestety, wszystko ładnie sie wyswietla jest ze sobą połączone ale nadal zmienne nie są przenoszone, niestety. Jedyny sposób jaki znam to albo pliki tymczasowe, albo wywoływanie zmiennych wraz z funkcjami czy jest jakikolwiek inny sposób?

|| Zrozumiałem, Przepraszam.
V


--------------------
Go to the top of the page
+Quote Post
kszychu
post 8.06.2004, 09:33:10
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Proszę edytować swoje posty i nie pisać jednego pod drugim.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
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: 14.07.2025 - 12:04