/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Globalt variabel?
Fra : Stig Sørensen


Dato : 03-02-08 07:25

Hej gruppe.

Det er sikkert et banalt problem, men jeg kan ikke komme videre og har
brug for hjælp.

Jeg skal have fundet ud af, om en bruger ($bruger_id) har adgang til
en 'garage' ($garage_id).

Jeg ved ikke om det er optimalt, men har gjort følgende:

// Få fat i garage_id
if(!empty($_GET['garage_id'])) {
$garage_id_temp = $_GET['garage_id'];

// Hiv alt ud af database, hvor bruger og garage ID passer sammen.
$query_garage_ok = mysql_query("SELECT * from phpbb_garage,
punbb_users WHERE phpbb_garage.member_id = punbb_users.id AND
punbb_users.id = '$bruger_id' and phpbb_garage.id =
'$garage_id_temp'");
$test_garage = mysql_fetch_assoc($query_garage_ok);

// Hvis der er 1 eller flere rows, er det sikkert brugerens garage
if ($row >= 1) {

// Så kan vi godt bruge $garage_id da det er brugerens.
$garage_id = $garage_id_temp;
}
}


Alt ovenstående virker fint, omend det sikkert kan optimeres (jeg er
meget ny i det).
Men jeg kan jo kun bruge $garage_id inden for { } (tuborg-klemmerne).
Men jeg skal bruge $garage_id hernede:

   $limit_sizef = $limit_size*1024; // convert Kilobytes to bytes
   $file_prefix = $pun_user['id']."_".$garage_id."_";

// ^- Dette er kun et udsnit af resten af koden.

Hvordan gør jeg dette? Eller skal jeg lade { } omfatte resten af
koden? Det giver desværre bare en blank side, har allerede prøvet
nemlig.

Nogen der kan hjælpe mig videre?

Har lavet kommentarer så folk forhåbentligt forstår meningen med min
kode ;)

God søndag

 
 
Birger (03-02-2008)
Kommentar
Fra : Birger


Dato : 03-02-08 15:47

"Stig Sørensen" <stig.sorensen@gmail.com> skrev i en meddelelse
news:285ccb62-5413-478f-a1e2-c5473f0a64df@j78g2000hsd.googlegroups.com...
Hej gruppe.
8X
Hvordan gør jeg dette? Eller skal jeg lade { } omfatte resten af
koden? Det giver desværre bare en blank side, har allerede prøvet
nemlig.



Det er ikke lige overskueligt, hvor meget af din kode, der er fra
funktioner, og hvor meget der bliver brugt direkte.
Normalt skal globale variable der anvendes inde i en funktion deklareres
global $garage_id;
inde i funktionen - ellers er det en lokal variabel, og altså ikke den samme
som den globale.

Måske kan
http://dk2.php.net/manual/en/language.variables.scope.php
være en hjælp.

Jeg har selv lidt bøvl med scope for variable.
Iht. manualen, er alle variable der anvendes udenfor funktioner globale.
også i include filer - men jeg er stadig nødt til at deklarere dem som
global $varnavn;
i begyndelse af include filer, for at det faktisk virker.

Birger
-----
http://bbsorensen.dk
http://varmeretter.dk - hverdagsmad. Sundt, nemt hurtigt og billigt. Daglig
opdatering.



Bertel Lund Hansen (03-02-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 03-02-08 19:42

Birger skrev:

> Jeg har selv lidt bøvl med scope for variable.
> Iht. manualen, er alle variable der anvendes udenfor funktioner globale.
> også i include filer - men jeg er stadig nødt til at deklarere dem som
> global $varnavn;
> i begyndelse af include filer, for at det faktisk virker.

Det lyder mystisk. Jeg lægger ofte definitioner og
initialiseringer ud i en særlig fil. Definitioner er globale og
kendt inden i en funktion. Initialiseringen behandler almindelige
variable, og de er globale, men ukendte inden i funktioner.

Jeg erklærer dem ikke igen på nogen måde når jeg bruger dem i en
kaldende fil.

Skelner du ikke mellem inden for og uden for en funktion?

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Birger (04-02-2008)
Kommentar
Fra : Birger


Dato : 04-02-08 11:46

"Bertel Lund Hansen" <unospamo@lundhansen.dk> skrev i en meddelelse
news:8j2cq3pc0fojtullk11ov7bseccnj56a84@4ax.com...
> Birger skrev:
>
>> Jeg har selv lidt bøvl med scope for variable.
>> Iht. manualen, er alle variable der anvendes udenfor funktioner globale.
>> også i include filer - men jeg er stadig nødt til at deklarere dem som
>> global $varnavn;
>> i begyndelse af include filer, for at det faktisk virker.
>
> Det lyder mystisk. Jeg lægger ofte definitioner og
> initialiseringer ud i en særlig fil. Definitioner er globale og
> kendt inden i en funktion. Initialiseringen behandler almindelige
> variable, og de er globale, men ukendte inden i funktioner.
>
> Jeg erklærer dem ikke igen på nogen måde når jeg bruger dem i en
> kaldende fil.
>
> Skelner du ikke mellem inden for og uden for en funktion?
>


Jo, det gør jeg.
F.eks.:

<?php
session_start();
include 'db-func.php';
/*
db_func.php indeholder funktioner, der behandler da til/fra database. Alle
funktioner i db_func.php bruger samme $link variabel, og alle har den
deklareret i begyndelsen, som
global $link.
*/
....
if ( $link = DbConnect()) {
if ( $res = SomeDbFunc()) {
...
}
else {
echo 'Database fejl : '.mysql_error()."<br>\n";
}
}
else {
echo 'Fejl : '.mysql_error()."<br>\n";
}


Jeg får en fejl, der siger at $link ikke er en gyldig forbindelse til
databasen.
Ikke når $link tildeles en værdi, men når den forsøges anvendt i
SomeDbFunc().
Hvis jeg i toppen af bd_func.php indsætter linien
global $link;
virker tingene som de skal (forventet).

Det virker lidt som variablen skal have en værdi (være anvendt eller tildelt
en værdi), inden den kan anvendes i en include.
(gobal $link; i en funktion, er ikke den samme $link som i "hovedprogrammet"
hvis $link ikke allerede eksisterer, som deklaration eller har tildelt en
værdi).

Jeg har også set eksempler på, at globale variable anvendt første gang i
includerede filer, ikke kendes i det script der includerer dem. Her er jeg
så nødt til at enten initialisere dem, eller deklarere en global variabel,
inden filen includeres. Det skulle heller ikke være nødvendigt, som jeg
forstår dokumentationen.

Tror måske det er et one.com fænomen.
(
PHP Version 5.2.5
http://varmeretter.dk/phpver.php
)

Birger
-----
http://bbsorensen.dk
http://varmeretter.dk - hverdagsmad. Sundt, nemt hurtigt og billigt. Daglig
opdatering.



Birger (04-02-2008)
Kommentar
Fra : Birger


Dato : 04-02-08 15:12

Har lige leget en smule...
Det ser ud somom problemet optræder, når der includes i en switch() :

F.eks.:
switch( $a_var) {
...
case 'vis' : include 'en_fil.php'; break; // i en_fil.php genkendes
globale variable ikke
...
}

alternativt :
if ( $a_var!= '') { include 'en_fil.php'; } // her genkendes globale
variable i en_fil.php


Birger
-----
http://bbsorensen.dk
http://varmeretter.dk - hverdagsmad. Sundt, nemt hurtigt og billigt. Daglig
opdatering.



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste