Pozivanje parametara kroz URL

Imam funkciju:

[php]function ispisi($prvi = ‘’, $drugi = ‘’)
{
return $prvi . ’ '. $drugi;
}[/php]

I sad samo jednostavno vratim:
[php]echo ispisi($_GET[‘p1’], $_GET[‘p2’]);[/php]

Je li moguće pozivati parametre ako se ne zna koliko funkcija ima parametara. Naprimjer kroz url pozovem:

localhost/?funkcija=ispisi&p1=prvi_parametar&p2=drugi_parametar

Ali, recimo da korisnik ne zna koliko se parametara koristi, i za taj broj parametara koji postoje u funkciji, automatski se generira $_GET[‘p_brojparametra’];

Nešto kao što controlleri u frameworcima koriste podstranice.

localhost/controller/funkcija/parametar1/parametar2/parametar3

[php]class Blog // implements Controller; extends Controller (svejedno)
{
function postovi($koliko = ‘svi’, $broj_postova = ‘30’)
{
// …
}
}[/php]

U ovom slučaju ide:

localhost/blog/postovi/svi/30

To bi kroz $_GET bilo:

localhost/?controller=Blog&method=postovi&p1=svi&p2=30

Tu se automatski generiralo p1 i p2 jer se zna točno da ima 2 parametra. Ali što da ima 1, 3, 4? Kako se to uradi?

I hope you understand :wink:

Evo ovo sam pokupio sa PHP foreach dokumentacije:

http://php.net/manual/en/control-structures.foreach.php

http://www.php.net/manual/en/functions.arguments.php#functions.variable-arg-list

Mozes onako kako ti je gorc napisao, mozda je bolje u funkciju prenjeti polje (u tvom slucaju GET) i onda sa foreach petljom iterirati kroz sve elemente polja (koje je parametar funkcije, nego GET-a). Tako ces funkciju moci upotrebljavati i za druge argumente, onako samo za GET.

Aha, hvala. Je li na taj način ostali frameworci kontroliraju parametre?

“Evo ti pa slusaj” :smiley:

http://dev.horde.org/routes/

Rješio sam :slight_smile: Analizirao sam neke kodove i koristio call_user_func_array(), u nju upisujem objekt i metodu u arrayu, te drugi parametar (array) su parametri moje funkcije. :slight_smile: Tnx

Ta funkcija je “spora”, a i ljepse rjesenje je ovo koje ti je ponudjeno. :wink:

func_ get_ arg
func_ get_ args
func_ num_ args

ja bi si pogledao ove tri funkcije, i nadam se da ne koristiš stvarno to na način na koji si to napisao u primjeru ( funkcija($_GET[‘parametar’]) ) nego da prvo malo provejriš taj $_GET i da ga ‘počistiš’.

[quote=“CreatifCode”]func_ get_ arg
func_ get_ args
func_ num_ args

ja bi si pogledao ove tri funkcije, i nadam se da ne koristiš stvarno to na način na koji si to napisao u primjeru ( funkcija($_GET[‘parametar’]) ) nego da prvo malo provejriš taj $_GET i da ga ‘počistiš’.[/quote]

Ja mogu raščlaniti $_GET koliko god, ali kako da pozivam p1, p2, p3 ako u funkciji ima 3 parametra, etc…

Da ne otvaram novu temu… nije baš isto pitanje, al je povezano uz sve već navedeno…
Kako php-om dobiti naziv skripte i parametre (ako ih ima)?
Znači zelio bih u varijabli dobiti: “skripta.php?clanak=1”

[quote=“jojo”]Imam funkciju:

[php]function ispisi($prvi = ‘’, $drugi = ‘’)
{
return $prvi . ’ '. $drugi;
}[/php]

I sad samo jednostavno vratim:
[php]echo ispisi($_GET[‘p1’], $_GET[‘p2’]);[/php]

Je li moguće pozivati parametre ako se ne zna koliko funkcija ima parametara. Naprimjer kroz url pozovem:

localhost/?funkcija=ispisi&p1=prvi_parametar&p2=drugi_parametar

Ali, recimo da korisnik ne zna koliko se parametara koristi, i za taj broj parametara koji postoje u funkciji, automatski se generira $_GET[‘p_brojparametra’];

Nešto kao što controlleri u frameworcima koriste podstranice.

localhost/controller/funkcija/parametar1/parametar2/parametar3

[php]class Blog // implements Controller; extends Controller (svejedno)
{
function postovi($koliko = ‘svi’, $broj_postova = ‘30’)
{
// …
}
}[/php]

U ovom slučaju ide:

localhost/blog/postovi/svi/30

To bi kroz $_GET bilo:

localhost/?controller=Blog&method=postovi&p1=svi&p2=30

Tu se automatski generiralo p1 i p2 jer se zna točno da ima 2 parametra. Ali što da ima 1, 3, 4? Kako se to uradi?

I hope you understand ;)[/quote]

Riješio prije dosta dugo vremena, pa evo ako nekom treba:

[php]public function callParams()
{
if (! empty($_SERVER[‘QUERY_STRING’]))
{
$new = array();

    $query = str_replace('?', '', $_SERVER['QUERY_STRING']);

    $query = explode('&', $query);

    foreach ($query as $key)
    {
        $array[] = explode('=', $key);
    }

    for ($n = 1; $n <= count($query); $n++)
    {
        $param = 'p' . $n;

        foreach ($array as $key => $val)
        {
            if ($val[0] == $param)
            {
                $new[$val[0]] = $_GET[$val[0]];
            }
        }
    }

    return $new;
}

}
[/php]

[quote=“trokut”]Da ne otvaram novu temu… nije baš isto pitanje, al je povezano uz sve već navedeno…
Kako php-om dobiti naziv skripte i parametre (ako ih ima)?
Znači zelio bih u varijabli dobiti: “skripta.php?clanak=1”[/quote]

[php]

<?php echo basename($_SERVER['REQUEST_URI']); ?>

[/php]


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja