Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Funkcja sama się wykonuje?!, W efekcie uruchamia się dwukrotnie
tomilipin
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 28.01.2004
Skąd: że znowu ლ(ಠ益ಠლ

Ostrzeżenie: (0%)
-----


Witam,
mam bardzo dziwny problem: parę lat temu napisałem sobie prosty pager, który wtedy działał bez zarzutu zawsze i wszędzie. Teraz działa tylko wtedy, gdy znajduje się sam w pliku. Taki samolubny się zrobił...
Konkretnie wygląda to tak:

pliczek 'stronicowanie.php'
  1. <?php
  2. // ilosc - ilosc wynikow
  3. // a - zaczynac od zera czy od jedynki
  4. // c - ile na strone
  5.  
  6. function pag($ilosc, $a, $c) {
  7.  if (isset($_GET['start']))
  8.  $start = $_GET['start'];
  9.  else
  10.  $start=1;
  11.  
  12.  while($ilosc>0) {
  13.  if (!isset($b)) $b=0;
  14.  $b=$b+1;
  15.  
  16.  if ((($b-1)*$c)+1==$start) 
  17.  echo "[$b] ";  
  18.  else 
  19.  print '<a href="?start='.$a.'">'.$b.'</a> ';
  20.  
  21.  $ilosc -= $c;
  22.  $a += $c;
  23.  }
  24.  print '<br />';
  25. }
  26.  
  27. print '<p align="center">';
  28. pag(56, 1, 6);
  29. print '</p>';
  30. ?>
Gdy uruchamiam ten kod, wszystko jest w porządku (jeśli skomentuję linijkę 28 to nic się nie wyświetli). Lecz gdy wkleję samą funkcję do innego pliku (lub includuję plik z samą funkcją), pojawiają się błędy:
Cytat
Warning: Missing argument 1 for pag() in index.php on line 6
Warning: Missing argument 2 for pag() in index.php on line 6
Warning: Missing argument 3 for pag() in index.php on line 6
A gdy uruchomię funkcję gdzieś dalej w pliku, podając argumenty: pag(36,1,10); to funkcja wykonuje się dwa razy... Raz w miejscu, gdzie jest zdeklarowana - i tu wyświetla ostrzeżenia, drugi raz w miejscu, gdzie rzeczywiście ją uruchamiam - tu wyświetla numer stron.
Nie mam pojęcia jak to możliwe, nie widzę żadnej reguły szczególnie jeśli funkcja działa normalnie w osobnym pliku...

Starając się pozbyć ostrzeżeń wstawiłem wartości do funkcji; linijka 6 wygląda wtedy tak: function pag($ilosc=0, $a=1, $c=10) { i również w tym przypadku funkcja sama się wykonuje (sprawdziłem to dodając print 'asd'; na końcu).

Co zrobić, aby funkcja wykonywała się tylko tam, gdzie ja tego chcę?

Ten post edytował tomilipin 25.02.2007, 21:31:34


--------------------
Kod
$kobieta = 'Kobieta zmienną jest...';
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 18:51