Porcjowanie w PHP - co jest nie tak?


(Radmistrz2) #1

Napisałem taki prymitywny kod. Niestety nie działa.

if($_GET['page']<6)

{

 for($i=1; $i<11; $i++)

 {

 echo ' '.$i.''.$i.'';

 }

}

else

{

$strona[1]=($_GET['page']-4);

$strona[2]=($_GET['page']-3);

$strona[3]=($_GET['page']-2);

$strona[4]=($_GET['page']-1);

$strona[5]=$_GET['page'];

$strona[6]=($_GET['page']+1);

$strona[7]=($_GET['page']+2);

$strona[8]=($_GET['page']+3);

$strona[9]=($_GET['page']+4);

for($i=1; $i<10; $i++)

{

echo ' '.$i.''.$strona[$i].'';

}

}[/code]




1. Jeśli page jest większe niż 5 to wywala mi błędy w

[code]$strona[1]=($_GET['page']-4); $strona[2]=($_GET['page']-3); $strona[3]=($_GET['page']-2); $strona[4]=($_GET['page']-1); $strona[5]=$_GET['page']; $strona[6]=($_GET['page']+1); $strona[7]=($_GET['page']+2); $strona[8]=($_GET['page']+3); $strona[9]=($_GET['page']+4);

  1. Za każdym razem wyświetla mi numerki od 1 do 9.

(adpawl) #2

Dziwne to porcjowanie ...ale twoja sprawa.

<?php

if($_GET['page']<6)

{

for($i=1; $i<11; $i++)

{

echo ' '.$i.'';

}

}

else

{

$strona[1]=($_GET['page']-4);

$strona[2]=($_GET['page']-3);

$strona[3]=($_GET['page']-2);

$strona[4]=($_GET['page']-1);

$strona[5]=$_GET['page'];

$strona[6]=($_GET['page']+1);

$strona[7]=($_GET['page']+2);

$strona[8]=($_GET['page']+3);

$strona[9]=($_GET['page']+4);

for($i=1; $i<10; $i++)

{

echo ' '.$strona[$i].'';

}

}

?>[/code]

(Radmistrz2) #3

Jeśli skrypt stosuje poza kodem wszystko jest ok. Jeśli wkomponuję go w kod to już nie jest tak kolorowo w linijkach:

$strona[1]=integer(($_GET['page'])-4);

$strona[2]=integer(($_GET['page'])-3);

$strona[3]=integer(($_GET['page'])-2);

$strona[4]=integer(($_GET['page'])-1);

$strona[5]=integer($_GET['page']);

$strona[6]=integer(($_GET['page'])+1);

$strona[7]=integer(($_GET['page'])+2);

$strona[8]=integer(($_GET['page'])+3);

$strona[9]=integer(($_GET['page'])+4);

pokazuje się błąd: Cannot use a scalar value as an array in ...

PS. heh faktycznie dziwne, ale tylko na taki pomysł wpadłem ;d A może ktoś podesłać mi jakieś inne rozwiązanie??


(adpawl) #4

A co to ma być?

jak chcesz zwalidować zmienną, to od tego są wyrażenia regularne np. preg_match

...a rzutowanie typu wygląda np. tak

$strona[1]=(int)($_GET['page']-4);

czyli nie integer(xxx) a (int)x

Poza tym piszesz że po implementacji tego kodu sypie błędami, ale nie podałeś kodu całej strony - więc o powód nie pytaj.

Poza tym nic nie piszesz do czego to ma być porcjowanie ...co chcesz porcjować? tekst, tablice, zapytanie mysql?

....aaa, dodam jeszcze, że na początku wypadało by dać: $strona=array();