Autor | Zpráva | ||
---|---|---|---|
anonym_ Profil * |
#1 · Zasláno: 28. 8. 2011, 10:50:32
Ahoj, potřebuji poradit, jak udělat proměnnou, kterou bych mohl definovat ve funkci č.1 tak, abych ji mohl zavolat ve funkci č.2 a vypsala správnou hodnotu, kterou jsem ji předal v prvni funkci. Zkoušel jsem global $hodnota; $hodnota =5;, ve druhe funkci jsem ji zavolal pomoci $GLOBALS['hodnota'] a vždy mi vypsala nulu. Nevíte někdo jak na to? Byl bych vám moc vděčný. Díky.
|
||
panther Profil |
#2 · Zasláno: 28. 8. 2011, 11:00:48
anonym:
předávej proměnnou jako parametr funkce. |
||
Tori Profil |
#3 · Zasláno: 28. 8. 2011, 11:01:47 · Upravil/a: Tori
Globálním proměnným bych se radši vyhnula - funkce by měla být nezávislá na okolní kódu. Buď použijte návratové hodnoty
$var = funkce1(); funkce2($var); function funkce1(&$promenna) { $promenna = 5; } $var = 0; funkce1($var); // předání odkazem - $var má teď hodnotu 5 funkce2($var); // předání hodnotou - funkce2 dostane jen obsah proměnné, $var se nezmění |
||
anonym_ Profil * |
#4 · Zasláno: 28. 8. 2011, 12:28:55
No, nakonec jsem to vyřešil přes $_SESSION, jelikož mě předávání proměnné nefungovalo. Druhou funkci jsem ořezal, tak stačilo předat parametry té první. Měl jsem podmínku, pokud se $promenna==1, tak $i=5; $promenna==2, tak $i=4;
pak jsem to předal funkci function vypocti($x){ $pocet=$x*5; echo $pocet; } vypocti($i); bohužel mi to vypsalo nulu. Nevím, kde jsem udělal chybu, sice už mi to jede přes session, ale i tak bych se rád poučil. Děkuji všem za odpovědi. |
||
Tori Profil |
#5 · Zasláno: 28. 8. 2011, 12:34:02
anonym:
Můžete ukázat, jak nastavujete tu $i? Zřejmě je chyba tam, takže funkce vypocti dostane parametrem nulu. |
||
anonym_ Profil * |
#6 · Zasláno: 28. 8. 2011, 12:47:58
if(isset($_GET["misto"])) { $promenna=$_GET["misto"]; if($promenna=="les") { les(); $i=3; } elseif($promenna=="louka") { louka(); $i=4; } elseif($promenna=="mocal") { mocal(); $i=5; } elseif($promenna=="hory") { hory(); $i=4; } } if(isset($_POST["jak_dlouho"])) { $cas=$_POST["jak_dlouho"]; if($cas>0 AND $cas<10){ zacni($i); } } function zacni($x) { $pocet=$x*$_POST["jak_dlouho"]; $SQL=mysql_query("INSERT INTO akce SET id=' ',vyprava=1,jmeno=xxx,pocet=$pocet"); } proměnna POST obsahuje data, které jsem zadával ve formuláři, takže tam chyba nebude (zkoušel jsem echo $_POST["jak_dlouho"]) ps:je to trochu ořezané, takže tam nejsou všechny funkce ve skriptu, tohle by mělo stačit, jinde proměnnou $i nepouzivam) |
||
Tori Profil |
#7 · Zasláno: 28. 8. 2011, 12:55:22
Nikde nevidím, na jakou hodnotu se má $i nastavit, pokud neexistuje klíč $_GET[misto].
Jinak i ten čas bych předávala parametrem: if(isset($_POST["jak_dlouho"])) { $cas = intval($_POST["jak_dlouho"]); // když se to má použít jako číslo if($cas>0 AND $cas<10){ zacni($i, $cas); } } function zacni($x, $cas) { $pocet=$x*$cas; $SQL=mysql_query("INSERT INTO akce SET id=' ',vyprava=1,jmeno=xxx,pocet=$pocet"); } |
||
anonym_ Profil * |
#8 · Zasláno: 28. 8. 2011, 13:04:44
klíč $_GET bude fungovat pokaždé, jinak script nevypíše jednu z funkcí louka, hory atd... (funkce obsahují echo text, takže by se mi nic nevypsalo). takže nevím, kde je chyba... no neva, $i jsem předal pomosí session, ted to funguje, s tím časem máte pravdu, je to tak lepší. Díky, že jste si našla čas na můj problém.
|
||
peta Profil |
#9 · Zasláno: 30. 8. 2011, 07:40:04 · Upravil/a: peta
Tori:
function funkce1(&$promenna) To je sice fajn, ale kdyz tech parametru mas 6 a pokazde to psat 6x, to radeji 1x napisi do funkce global $a,$b,$c,$d,$e,$f. anonym: Nacpat vsechno do session tez neni prilis trhak. Session se posilaji jako cookies uzivateli, pokud to ma povolene. 10 hodnot nic neni, ale nejvetsi machri tam davaji 50k soubory :) |
||
Tori Profil |
#10 · Zasláno: 30. 8. 2011, 08:00:04 · Upravil/a: Tori
peta:
<mimo-téma> „ale kdyz tech parametru mas 6 a pokazde to psat 6x“ To je subjektivní, když to anonymovi nebude vyhovovat, tak si to přepíše jinak. Z mého pohledu zase používání glob.proměnných ve funkci ruší její nezávislost a znovupoužitelnost jinde, a parametry mi napovídá IDE. Takhle bych si musela pamatovat, že nesmím používat některé názvy proměnných, bo je jakási funkce potřebuje, a na to su lenivá. </mimo-téma> „Session se posilaji jako cookies uzivateli“ Cože?? Odkdy? Snad se posílá jen SID, pokud vím? ↓ Joker: tu reakci můžu zas smazat, když nebude na co reagovat. :) (anebo vyhoďte #9 i #10) |
||
Joker Profil |
#11 · Zasláno: 30. 8. 2011, 08:04:38 · Upravil/a: Joker
peta:
„kdyz tech parametru mas 6 a pokazde to psat 6x, to radeji 1x napisi do funkce global $a,$b,$c,$d,$e,$f.“ Pak je ohromně bezva takový kód ladit a hledat, proč ta proměnná nemá hodnotu jakou má mít. edit: To s tou session je už vůbec pitomost. Nebýt reakce Tori, šlo to do kontejneru. Ještě jednou žádám, když nevíš jak to je, tak to nekomentuj, nebo si tu odpověď alespoň nejdřív ověř! Žádný jiný odpovídající tu neposílá takové množství nesprávných anebo zavádějících rad. |
||
Časová prodleva: 13 let
|
0