» »

php variable scope problem

php variable scope problem

krho ::

----php----
if (count($_GET)== 0) {
$_GET['page']= 0;
}

if ($_GET['page'] == 1) { //dodaj novega
pageAddNew();
exit();
} elseif ($_GET['page'] == 2) { //popravi podatke
pageChange();
exit();
} else {
exit();
}

function pageAddNew(){
global $PHP_SELF;
$odgovor=""; //tukajle notri je obvestilo uporabniku, ki ga vrne narejena komanda.

if (count($_POST) != 0) { //glede na cmd nastavimo spremenljivke

if ($_POST['cmd'] == "add") {//tole se zgodi v drugem ciklu dodajanja
} else {
$link = mySQLConnect();

$query = "SELECT MAX(clanskaStevilka) FROM clani;";
$result = mysql_query($query,$link)
or die("Query failed - $PHP_SELF");

$rowcnt = mysql_num_rows($result);

if ($rowcnt != 0){
$GLOBALS['zadnjaClanskaSt'] = mysql_result($result,0,0);
$GLOBALS['zadnjaClanskaSt']++;
}
}
}

include_once("./include/pageHeader.htinc.php");
echo("".$odgovor."");
include_once("./include/claniDodaj_1.htinc.php");
include_once("./include/pageFooter.htinc.php");

}

function pageChange(){

}


---- konec php----


--------------------------------------------------------------
in se "./include/claniDodaj_1.htinc.php"


html koda
----php----
echo($GLOBALS['zadnjaClanskaSt']);
---konec php----

html koda

--------------------------------------------------------
kako naj definiram spremenljivko $zadnjaClanskaSt., da jo bom lahko uporabil v 6-ti vrstici "./include/claniDodaj_1.htinc.php" takole ne deluje, ce jo definiram kot static tudi ne. ali se boljse vprasanje kako prenesti spremenljivke tukajle. pa ne mi z RTFM prosim. ker tole pa nisem nasel pod variable scope
--------------------------------------------------------
html koda


---- php----
$link = mySQLConnect();
$query = "SELECT * FROM zzz;";
$result = mysql_query($query,$link)
or die("Query failed - $PHP_SELF");

$rowcnt = mysql_num_rows($result);

if ($rowcnt != 0) {
while (($row = mysql_fetch_array($result,MYSQL_ASSOC))){
}
}
---- konec php----


html koda


---- php----
sedaj pa ne bi rad se enkrat delal querija pa bi uporabil, kar prejsnji result
---- konec php----

.......
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net
  • spremenil: krho ()

rasta ::

Če $zadnjaClanskaSt definiraš v funkciji pageAddNew(), jo poskusi dati pod globals na začetku.

darh ::

hm.. zakaj ne vražaš vrednosti iz funkcije? Vse kar rabiš iz funkcije pageAddNew() je $GLOBALS['zadnjaClanskaSt']++... namesto tega uporabi samo $zadnjaClanskaSt in to vrednost vrni - return $zadnjaClanskaSt. Ko kličeš funkcijo, pa shraniš to vredost ki jo vrne...

Še nekaj... ko delaš global $PHP_SELF - nepotrebno... vrednost je enaka v $_SERVER['PHP_SELF'], ki ga ni treba posebej "globalizirat" v funkcijah :) - nič življensko pomembnega, samo, ko boš izklopil register_globals, ti zadeva ne bo delala več.

sedaj pa ne bi rad se enkrat delal querija pa bi uporabil, kar prejsnji result
??
$result = mysql_query('...');
$result_bkp = $result;

... = mysql_fetch_row($result);

....

... = mysql_fetch_row($result_bkp);


Excuses are useless! Results are priceless!

krho ::

sedaj pa ne bi rad se enkrat delal querija pa bi uporabil, kar prejsnji result
??


imam html kodo, ki jo 2x prekinem z <?php ?>

v prvem in drugem rabim enak rezultat poizvedbe, vendar php pozabi vrednosti spremenljivk v prvem <?php ?>
ce imas v bazi veliko vrstic je izgubljanje casa 2x delat se query. htmlja je pa prevec, da bi ga ven metal z echo.


primer v funkicijei je podoben.

v funkciji zgeneriram podatke oz. nastavim vrednosti spremenljivk, le te pa rabim v fajlu, ki ga vkljucim (v funkciji). v tem primeru rabim $zadnjaClanskaSt v "./include/claniDodaj_1.htinc.php"

Samo kaj ko php "pozabi" vrednosti spremenljivk, takoj ko naleti na naslednji <?php ?>
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

krho ::

gre se mi zato, da imam čim manj mešanja html-ja in php-ja

zato imam v .php fajlih samo cisti php v htinc.php pa html, ki ga prekinem z <?php ?>
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

krho ::

rasta:

če definiram tole na začetku
$GLOBALS['zadnjaClanskaSt']= 99;


ter spremenim v funkciji vrednost spremenljivke:
$GLOBALS['zadnjaClanskaSt'] = mysql_result($result,0,0);
$GLOBALS['zadnjaClanskaSt']++;

le ta v "./include/claniDodaj_1.htinc.php"
kjer jo potrebujem to lle ta vrednost 99


grr.
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

krho ::

v funkciji je manjsa napaka.

spremenljivko bi moral postaviti v zunanjem if stavku ne v notranjem.

Sam sem pa nucal, da sem tole pogruntal.

Hvala za pomoč obema. :)
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

krho ::

xbite:

$result = mysql_query('...');
$result_bkp = $result;

... = mysql_fetch_row($result);

....

... = mysql_fetch_row($result_bkp);

tvoja koda ne deluje

ko enkrat prides do konca z mysql_fetch_xxx moraš uporabiti mysql_data_seek($result,0);, da te vrže spet na začetek arraya.

tako da sedaj mi vse deluje.
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

darh ::

zabluzil.. sorry :)
Excuses are useless! Results are priceless!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[mySQL(+php)] Kako dobiti največji ID (številka) iz stolpca

Oddelek: Izdelava spletišč
91123 (1002) preem
»

[c++] osnovna težava z mysql api

Oddelek: Programiranje
222057 (1696) SasoS
»

sort

Oddelek: Izdelava spletišč
51269 (1190) darh
»

Kaj je narobe tu...(php)

Oddelek: Programiranje
51193 (1091) teac
»

Zakaj? (php & mySQL)

Oddelek: Programiranje
51219 (1146) darh

Več podobnih tem