Autor Zpráva
xaverista
Profil
Zdravím,

potřebuji pomocí cyklu for vypsat něco např. z intervalu od 3 do 7, $i tedy nesmí být menší než 3 a zároveň větší než 7.

Zkoušel jsem to takhle:

$_GET['page'] se třeba rovná 5

for($i=1;($_GET['page'] - 2)< $i && $i<= ($_GET['page'] + 2);$i++)
Str4wberry
Profil
A myslíte, že 5 bez 2 je menší než 1?

($_GET['page'] - 2)< $i
xaverista
Profil
Omlouvám se, $i se bude rovnat $_GET['page']
Joker
Profil
xaverista:
Pokud se na začátku $i nastaví na $_GET["page"], je podmínka ($_GET['page'] - 2) < $i zbytečná, protože v cyklu: for ($i = $_GET['page']; … ; $i++) nemůže $i nikdy být menší než $_GET["page"], natož menší, než $_GET["page"] - 2.

Jinak konstrukce cyklu od nějaké minimální hodnoty do maximální je snad docela intuitivní:
for (čítač = minimum; čítač < maximum; čítač++) (případně <= pokud to má být včetně maxima)
Taps
Profil
xaverista:
přikládám rovněž jedno z možných řešení (za pomocí foreach)
<?
$_GET['page'] = 5;
$max = $_GET['page'] + 2;

  foreach(range($_GET['page']-2,$max) as $cisla){
    echo $cisla.'<br>';
  }
?>
xaverista
Profil
Zdravím, možná jsem to popsal špatně, tak to zkusím jinak. Mám stránku novinek, ze které vytahuji určitý počet novinek na stránku. Vlastně dělám stránkování novinek.
Když uživatel najede na nějakou stránku např.: neco.cz/index.php?page=5, tak se mu zobrazí 5. stránka novinek a v menu stránkování chci, aby se mu zobrazily odkazy na stránky 3,4,5,6 a 7. Takže 2 před, 2 stránky za a aktuální stránka uprostřed menu
Taps
Profil
xaverista:
do toho cyklu musíš přidat ještě podmínku if. Zkus sem vložit kód, který ti záznamy stránkuje. Praktická ukázka řešení http://rjwebdesign.cz/blog/PHP/20091228-Strankovani-Dynamicky-Stred-Aneb-Ustupujici-Cisilka
mimochodec
Profil
xaverista:
Ještě jednou Jokerův výklad:
for (čítač = minimum; čítač < maximum; čítač++)

Takže jde o to vzít $_GET['page'] a pokud to je číslo, spočítat z něj dvě hodnoty.
xaverista
Profil
Moc díky :-) Problém vyřešen

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0