Diskuze: Jak projít url pomocí cyklu proměnnou $_GET

PHP PHP Jak projít url pomocí cyklu proměnnou $_GET American English version English version

Avatar
no.good
Člen
Avatar
no.good:

Ahoj, chtěl bych se zeptat, snažím se projít dotaz pomocí proměnné $_GET jako například tento:

?zna0=acer&zna1=ca­non&zna2=benq

Pokud ho procházím níže uvedeným kódem, tak mi to vždy zacyklí ve WHILE cyklu. Předem díky za rady :-)

if (isset($_GET['zna0'])){
        $i = 0;
        $poleZnacek = array();  //pole pro ukládání znacek hodnot
        $znacky = 'zna' . $i;   //Zde by se měla vždy zvýšit proměnná $i a tím načíst další hodnotu z URL zna0, zna1, atd.
        $klic = false;
        if (isset($_GET[$znacky]))
            {
                 while (($klic = isset($_GET[$znacky])) == true )  //Tento cyklus by měl projít všechny hodnoty z URL
                 {
                      $poleZnacek[] =  $_GET[$znacky];
                     $i++;
                 }
            }
        var_dump($poleZnacek);
 }
 
Odpovědět 31.1.2014 13:55
Avatar
Odpovídá na no.good
Martin Konečný (pavelco1998):
if (isset($_GET["zna0"])) {
    $poleZnacek = array();
    foreach ($_GET as $key => $value) {
        if (strpos($key, "zna") !== FALSE) {
            $poleZnacek[] = $value;
        }
    }

    var_dump($poleZnacek);
}
Editováno 31.1.2014 14:19
 
Nahoru Odpovědět 31.1.2014 14:16
Avatar
no.good
Člen
Avatar
no.good:

Super díky moc, jsem nevěděl, že se dá se s tím dá takhle pracovat :)

 
Nahoru Odpovědět 31.1.2014 14:26
Avatar
reddi
Člen
Avatar
reddi:

Jde o to, ze mas spatne postavenou podminku ve while cyklu, ta je po prvnim pruchodu nastavena na TRUE (isset($_GET['z­na0'])) == true), to je vyhodnoceno jako TRUE uz v prvni podmince IF a tim padem z toho cyklu nevyskocis.
$i++; ve whilu ti je tam k nicemu, jelikoz promennou $znacky = 'zna' . $i; menis mimo cyklus, ktery ti bezi do nekonecna.

to pavelco1998: predbehl jsi me v reseni :)

Editováno 31.1.2014 14:31
 
Nahoru Odpovědět  +1 31.1.2014 14:30
Avatar
Odpovídá na no.good
Martin Konečný (pavelco1998):

$_GET, $_POST, $_SESSION atp. jsou normální pole, která můžeš procházet i přes foreach.
Pokud bys chtěl ještě o trochu důkladnější kontrolu, mohl bys místo strpos() použít:

if (preg_match("#^zna[0-9]+$#", $key))

což by mělo brát pouze "zna" a za tím číslo.

Jinak nevím, jak dostáváš ty parametry do URL, ale nebylo by vhodnější uložit do URL přímo pole? Pak bys nemusel procházet celý $_GET, ale třeba jen $_GET["znacky"].

\---

 
Nahoru Odpovědět  +1 31.1.2014 14:35
Avatar
no.good
Člen
Avatar
no.good:

Co se týká toho jak dostávám ty proměnné do url, tak mám udělaných několik filtrů(pomocí checkboxů), což procházím pomocí javascriptu v případě, že je checkbox zaškrtlý, tak vytvářím tuhle cestu s parametrama a sem to posílám pomocí ajaxu, tady se ještě dotážu do databáze a pak se mi vrátí výsledek :-) jak se dá vložit pole do url, tak to jsem zatím neviděl

 
Nahoru Odpovědět 31.1.2014 14:58
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.