Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] nie tworzy mi się tablica
Forum PHP.pl > Forum > PHP
No_Name
Oto mój kod:
  1. <?php
  2. $rok = date(Y);
  3. $miesiac = date(m);
  4. $dzien = date(j);
  5. $dzisiejsza_data = "$rok-$miesiac-$dzien";
  6. function uzytkownicy_podsumowanie_godzin($tabela2,$data){
  7.  $i = "0";
  8.  while ($i<="23"){
  9.  $zap = "SELECT DISTINCT `adres ip` FROM `$tabela2` WHERE data_rozp='$data' AND czas_rozp>='$i:00:00' AND czas_rozp<='$i:59:59'";
  10.  $wyn = mysql_query($zap);
  11.  $ile = mysql_num_rows($wyn);
  12.  echo "$ile $zap<br>";
  13.  $uzytkownicy_podsumowanie_godzin[$i] =$ile;
  14.  $i++;
  15.  };
  16. };  
  17. uzytkownicy_podsumowanie_godzin($tabela,$dzisiejsza_data);
  18. if (!$uzytkownicy_podsumowanie_godzin[16]) {
  19.  echo "brak";
  20. };
  21. ?>

nie wiem czemu, ale wyświetla mi się napis "brak". Pomóżcie!
pyro
argumenty date() daj w apostrofy
JoShiMa
Nic dziwnego:

1. Zmienna $uzytkownicy_podsumowanie_godzin jest tworzona i wypełniana danymi wewnątrz funkcji i poza nią nie jest widoczna.

2. Funkcja nic nie zwraca a więc wywołanie uzytkownicy_podsumowanie_godzin($tabela,$dzisiejsza_data); powoduje utworzenie zmiennej $uzytkownicy_podsumowanie_godzin a następnie jej usunięcie, gdyż wraz z zakończeniem funkcji kończy się jej "życie".

3. Zmienna $uzytkownicy_podsumowanie_godzin wywołana w instrukcji warunkowej if (!$uzytkownicy_podsumowanie_godzin[16]) to nie jest ta sama zmienna która pod tą samą nazwą występuje w funkcji uzytkownicy_podsumowanie_godzin. Doucz się o zasięgu zmiennych.
No_Name
Cytat
Zmienna $uzytkownicy_podsumowanie_godzin jest tworzona i wypełniana danymi wewnątrz funkcji i poza nią nie jest widoczna.

A nie da się jaj jakoś uaktywnić?
JoShiMa
A słyszałeś o tym, że funkcje mogą zwracać zmienne?
Fixus
za pętlą na końcu funkcji dodaj
Kod
return $zmienna;
.radex
Cytat(No_Name @ 22.08.2008, 16:30:08 ) *
  1. <?php
  2. $rok = date(Y);
  3. $miesiac = date(m);
  4. $dzien = date(j);
  5. $dzisiejsza_data = "$rok-$miesiac-$dzien";
  6. function uzytkownicy_podsumowanie_godzin($tabela2,$data){
  7.  $i = "0";
  8.  while ($i<="23"){
  9.  $zap = "SELECT DISTINCT `adres ip` FROM `$tabela2` WHERE data_rozp='$data' AND czas_rozp>='$i:00:00' AND czas_rozp<='$i:59:59'";
  10.  $wyn = mysql_query($zap);
  11.  $ile = mysql_num_rows($wyn);
  12.  echo "$ile $zap<br>";
  13.  $uzytkownicy_podsumowanie_godzin[$i] =$ile;
  14.  $i++;
  15.  };
  16. };  
  17. uzytkownicy_podsumowanie_godzin($tabela,$dzisiejsza_data);
  18. if (!$uzytkownicy_podsumowanie_godzin[16]) {
  19.  echo "brak";
  20. };
  21. ?>


Kod
$rok = date(Y);
$miesiac = date(m);
$dzien = date(j);


Wstaw te Y, m i j w apostrofy/cudzysłowia. Niby tak też działa, ale to nie jest poprawne.

Kod
if (!$uzytkownicy_podsumowanie_godzin[16]) {
   echo "brak";
};



a struktury takie jak if, while, function nie trzeba zakańczać średnikiem (i raczej nikt tak nie robi)
JoShiMa
Kod
if (!$uzytkownicy_podsumowanie_godzin[16]) {
   echo "brak";
};

a struktury takie jak if, while, function nie trzeba zakańczać średnikiem (i raczej nikt tak nie robi)
[/quote]

No_Name też tak nie robi i ma rację smile.gif
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.