Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Warunek z tablicy
Largo
post
Post #1





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

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


Witam,

Mam pewien problem dotyczący IP.Downloads. Otóż sam chcę dodać sprawdzanie dwóch rzeczy. Ile user musi mieć postów, aby pobrać ( domyślne ) albo ile Forum Gold ( dodatkowe ). Dodałem w bazie wszystko dobrze, ale schody zaczynają się przy sprawdzaniu warunków. Oto kod:
  1. <?php
  2. foreach( $my_restrictions as $k => $v )
  3.        {
  4.            if( $v > 0 )
  5.            {
  6.                if( array_key_exists( 'min_posts', $my_restrictions ) AND array_key_exists( 'min_fg', $my_restrictions ) )
  7.                {                                        
  8.                    if( ( $this->ipsclass->member['posts'] < $v ) OR ( $this->ipsclass->member['fg'] < $v ) )
  9.                        {
  10.                            $this->produce_error( 'dl_restrict_min_posts' );
  11.                            var_dump($my_restrictions);
  12.                            $this->restricted = 1;
  13.                            return;
  14.                        }
  15.                }
  16. ?>


Zwracana wartość z tablicy $my_restrictions:

  1. <?php
  2. array(4) { ["enabled"]=>  int(1) ["min_posts"]=>  int(40) ["min_fg"]=>  int(20) ["posts_per_dl"]=>  int(0) }
  3. ?>


Wg. mnie jest ona poprawna. Pierwszy klucz jest OK, bo sprawdza całą resztę iteracji. A następny? W czym problem? Każde var_dump na wartości ( $v ) daje int(1). Minimalna ilość postów i FG się zgadza tą w bazie. Ilość postów i FG w bazie usera też się zgadza ( sprawdzałem ), typ się tylko zmienia z int na string. Ale to chyba nie ma większego znaczenia. Dlaczego $v ( wartość ) nie dopasowuje się?

PS. Przepraszam, po iteracji następnej pokazuje int(40), czyli postęp. Jak potem bez iteracji przejść do następnej wartości?

Problem? Jak przejść do następnej wartości? Bo wg. mnie on sprawdza aktualną wartość. Funkcja next() nie działa.

Pozdrawiam,
Largo

Ten post edytował Largo 23.12.2008, 22:15:45
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ziqzaq
post
Post #2





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

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


Przyznam, że nie rozumiem po co iterujesz po tablicy $my_restrictions.
Nie wystarczy ci poprostu sprawdzić odpowiednie wartości przy odpowiednich kluczach (min_posts, min_fg)?
Wydaje mi się że chodzi ci o coś takiego (głowy nie dam (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ):
  1. <?php
  2. // Jeśli w tablicy mamy min_posts i min_fg to sprawdzamy
  3. // (tutaj uwaga: a jak ich nie będzie to ktoś może sobie pobrać?)
  4. if( array_key_exists( 'min_posts', $my_restrictions ) AND array_key_exists( 'min_fg', $my_restrictions ) )
  5. {
  6.    if( ( $this->ipsclass->member['posts'] < $my_restrictions['min_posts'] ) OR ( $this->ipsclass->member['fg'] < $my_restrictions['min_fg'] ) )
  7.    {
  8.         $this->produce_error( 'dl_restrict_min_posts' );
  9.         var_dump($my_restrictions);
  10.         $this->restricted = 1;
  11.         return;
  12.     }
  13. }
  14. ?>


Edit:
Acha i jeszcze może warunek bo widzę, że to może być potrzebne:
  1. <?php
  2. if( array_key_exists( 'min_posts', $my_restrictions ) AND array_key_exists( 'min_fg', $my_restrictions ) )
  3. {
  4.    // Zgaduje ze jesli ktoras z wartosci jest rowna 0 to restrykcje nie obowiazuja
  5.    if ( $my_restrictions['min_posts'] > 0 AND $my_restrictions['min_fg'] > 0 )
  6.    {
  7.     ....
  8. ?>


Edit2: literówka

Ten post edytował ziqzaq 23.12.2008, 22:43:22
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: 12.10.2025 - 06:20