Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrównywanie liczby w górę do najbliższej liczby podzielnej przez 'x'
Forum PHP.pl > Forum > PHP
zlw
Witam.

Zrobiłem sobie bardzo proste stronicowanie na zasadzie przycisków Poprzednia | Następna.

  1. <?php
  2. if($_GET[od] == "" OR $_GET[od] < 0)
  3.  {
  4.  $od = 0;
  5.  }
  6. else
  7.  {
  8.  $od = $_GET[od];
  9.  }
  10. $ile_na_stronie = 4;
  11.  
  12. //Obliczanie ilości wszystkkich news'ów 
  13. $n  = "SELECT news_id
  14. FROM ".$tb_prfx."_news
  15. WHERE news_isaccept = '1'";
  16. $n  = mysql_query($n);
  17. $n_num = mysql_num_rows($n);
  18.  
  19. //Pobranie news'ów
  20. $sql = "SELECT pola
  21. FROM tablice
  22. WHERE warunki
  23. LIMIT $od, $ile_na_stronie";
  24. $sql = mysql_query($sql);
  25.  
  26. while($news = mysql_fetch_array($sql))
  27.  {
  28. //wyświetlenie news'a
  29. }
  30.  
  31.  
  32. if($_GET[od] == "" OR $_GET[od] == 0 OR $_GET[od] < 0)
  33.  {
  34. if($n_num > $ile_na_stronie)
  35.  {
  36.  
  37. $od = $_GET['od'] + $ile_na_stronie;
  38.  
  39. echo "<a href=\"".$_SERVER['PHP_SELF']."?od=".$od."\">Następna</a>"; 
  40.  }
  41. else
  42.  {
  43.  }
  44.  }
  45. elseif($_GET[od] !== "" AND $_GET[od] > 0)
  46.  {
  47. $por = $_GET[od] + $ile_na_stronie;
  48. if($por > $n_num)
  49.  {
  50.  $od = $_GET[od] - $ile_na_stronie;
  51.  echo "<a href=\"".$_SERVER['PHP_SELF']."?od=".$od."\">Poprzednia</a>";
  52.  }
  53. else
  54.  {
  55.  $od_p = $_GET[od] - $ile_na_stronie;
  56.  $od_n = $_GET[od] + $ile_na_stronie;
  57.  echo "<a href=\"".$_SERVER['PHP_SELF']."?od=".$od_p."\">Poprzednia</a> | <a href=\"".$_SERVER['PHP_SELF']."?od=".$od_n."\">Następna</a>";
  58.  }
  59.  }
  60. echo "<br><br>";
  61. ?>


Działa to na zasadzie zmiennej $od przekazywanej w adresie strony.
Wszystko byłoby fajnie, ale niestety "wredny" użytkownik może zmienić jej wartość na np. 5.
Wtedy wychodzą pewne krzaczki np. po wciśnięciu przycisku "Poprzednia" (5 - 4 = 1 -> 1 - 4 = -3 haha.gif ).
I tu rodzi się pytanie - jak zawyżyć zmienną $od w górę do "najbliższej" liczby podzielnej przez $ile_na_stronie (w podanym przykładzie 4)
defrag
ceil
zlw
No chyba nie do końca.
Cytat
Zwraca nabliższą liczbę całkowitą, większą lub równą podanemu argumentowi.


Czyli np. dla argumentu 5 zwróci mi 5, a chciałbym, żeby to funkcja (która istnieje/napiszę ją) zwróciła mi w tym momencie 8 (najbliższa podzielna bez reszty [nie ułamek] dla 4).
Cienki1980
To napisz funkcję której będziesz podawał liczbę i w pętli sprawdzaj coś takiego ( pisane schematycznie ):
  1. <?php
  2. function funkcja($liczba)
  3. {
  4.  do
  5.  {
  6.  $liczba++;
  7.  }while($liczba%4!=0)
  8.  return $liczba;
  9. }
  10. ?>

albo jakoś tak podobnie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.