Autor Zpráva
excool
Profil *
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
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 *
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
Ještě je možné — pokud to neodporuje návrhu programu — vracet objekt, který bude obsahovat požadované informace.
DoubleThink
Profil *
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 *
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
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 *
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
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 *
co se Ti na tom nelibi? on pracuje spravne, jenom mi proste nejde to pole
excool
Profil *
on jako ten dotaz funguje spravne, normalne to uzivatele prihlasi, ale proste nevim jak mam vyresit ten vystpu z funkce :(
srigi
Profil
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
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;

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: