Autor | Zpráva | ||
---|---|---|---|
excool Profil * |
#1 · Zasláno: 4. 7. 2008, 14:17:12
Ahoj,
chtel bych se zeptat, jestli muzu z jedne funkce ziskat dva vystupy? mam funkci, pomoci ktere se pripojim k db, provedu vyber a do pole vlozim jednotliva data z databaze ( $sql_array["id"],$sql_array["jmeno"], ...) potreboval bych pouzit return nekolikrat nebo to nejak spojit, protoze ve funkci je jeste podminka, ktera kdyz se nesplni, tak je hodnota funkce false. Predem diky. |
||
nightfish Profil |
#2 · Zasláno: 4. 7. 2008, 14:19:32
potreboval bych pouzit return nekolikrat
to je samozřejmě možné ale aby to mohlo fungovat, musí být každý v separátní větvi kódu (bloku if-else) zkus ještě jednou napsat, co že to vlastně chceš, nejlépe i s konkrétním příkladem, takhle tomu není velmi rozumět |
||
DoubleThink Profil * |
#3 · Zasláno: 4. 7. 2008, 14:25:48
to je samozřejmě možné
excool patrně myslel několikrát po sobě v jedné funkci. To pochopitelně nejde, return ukončuje blok. Většinou se to dělá tak, že se vrací pole hodnot. |
||
Timy Profil |
#4 · Zasláno: 4. 7. 2008, 14:28:12
Ještě je možné — pokud to neodporuje návrhu programu — vracet objekt, který bude obsahovat požadované informace.
|
||
DoubleThink Profil * |
#5 · Zasláno: 4. 7. 2008, 14:50:32
Ještě je možné — pokud to neodporuje návrhu programu — vracet objekt, který bude obsahovat požadované informace.
Velmi šikovné u prototypových jazyků (JavaScript, ActionScript), u PHP mi to připadá hrozně kostrbaté. Udělat si nějakou univerzální třídu, vracet pak asi ukazatel na její instanci - nevím. |
||
excool Profil * |
#6 · Zasláno: 4. 7. 2008, 15:15:50
ukazu vam zdrojak jak to mam:
function iduzivatele ($prezdivka, $heslo, $link) { $vysledek=mysql_query("select id,nick from uzivatele where nick='".mysql_real_escape_string(StrToLower($prezdivka))."' and heslo='".mysql_real_escape_string(md5($heslo))."'and potvrz_reg='1'", $link); if (mysql_num_rows($vysledek)==0) // zjisti zda jestli existuje takovy radek v tabulce return false; else { $radek = mysql_fetch_array($vysledek); return $radek; // sice odesilam pole $radek, ale kdyz se mimo funkci na to odkazuji jako $radek['id']nebo$radek['nick'] } } potreboval bych po zvolani fce pouzit treba echo $radek['nick']; a vypsal by se podle selectu ve $vysledek. |
||
Alphard Profil |
#7 · Zasláno: 4. 7. 2008, 15:25:50
funkce je správně, jen ji asi špatně voláš, $radek není globální, takže ji použiješ takto
$radek = iduzivatele (yyy, xxx, zzz); |
||
excool Profil * |
#8 · Zasláno: 4. 7. 2008, 17:20:11
no, zvolani funkce delam takto:
if(isset($_POST['odesli_prihl'])){ $id = iduzivatele($GLOBALS["prezdivka_prihl"], $GLOBALS["heslo_prihl"], $link); if ($id<>0) $_SESSION["id"]=$id; } a tady kdyz chci dat echo $radek["nick"]; tak se mi nic nevypise, ani chyba :( |
||
srigi Profil |
#9 · Zasláno: 4. 7. 2008, 17:29:35
Myslim, ze chyba je v tomto kode
$vysledek=mysql_query("select id,nick from uzivatele where nick='".mysql_real_escape_string(StrToLower($prezdivka))."' and heslo='".mysql_real_escape_string(md5($heslo))."'and potvrz_reg='1'", $link); V oznacenej oblasti chyba medzera medzi apostrofom a AND. |
||
excool Profil * |
#10 · Zasláno: 4. 7. 2008, 17:43:55
co se Ti na tom nelibi? on pracuje spravne, jenom mi proste nejde to pole
|
||
excool Profil * |
#11 · Zasláno: 4. 7. 2008, 17:46:08
on jako ten dotaz funguje spravne, normalne to uzivatele prihlasi, ale proste nevim jak mam vyresit ten vystpu z funkce :(
|
||
srigi Profil |
#12 · Zasláno: 4. 7. 2008, 18:46:37
Ok chapem, tak debuguj premennu $radek esre vo funkcii
else { $radek = mysql_fetch_array($vysledek); echo "<pre>"; prinr_r($radek);die; // debug return $radek; // sice odesilam pole $radek, ale kdyz se mimo funkci na to odkazuji jako $radek['id']nebo$radek['nick'] } } |
||
Alphard Profil |
#13 · Zasláno: 4. 7. 2008, 19:30:49 · Upravil/a: Alphard
excool
$radek = iduzivatele($GLOBALS["prezdivka_prihl"], $GLOBALS["heslo_prihl"], $link); if ($radek) $_SESSION["id"]=$id; nebo function iduzivatele ($prezdivka, $heslo, $link) { global $radek; $vysledek=mysql_query("select id,nick from uzivatele where nick='".mysql_real_escape_string(StrToLower($prezdivka))."' and heslo='".mysql_real_escape_string(md5($heslo))."'and potvrz_reg='1'", $link); if (mysql_num_rows($vysledek)==0) // zjisti zda jestli existuje takovy radek v tabulce return false; |
||
Časová prodleva: 16 let
|
0