Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Problem z zmienną
Forum PHP.pl > Forum > Przedszkole
maxiu99
Witam, mam otóż taki mały problem z moją zmienną, chce zeby zmienna nigdy w zyciu niemogła wyniesc wiecej niz 100 i niewiem jak to zrobic...
redelek
Cytat(maxiu99 @ 9.07.2008, 11:02:07 ) *
Witam, mam ot.óz taki mały problem poniewaz chce zrobic tak zeby moja zmienna nigdy w zyciu neimogła wynies wiecej niz 100 i niewiem jak to zrobic...


Jak to zmienna ?

Może jestem nie życiowy ale dla mnie to powinno być jakimś warunkiem if sprawdzone. W samej zmiennej nie można robić hocków klocków.
Ale mogę się mylić.

Pozdrawiam
Redelek
maxiu99
przepraszam, chodzi o wartosc zmiennej zeby niemogła wynies więcej niz 100
m87
  1. <?php
  2. if ($zmienna > 100)
  3. echo "Błąd, zmienna jest większa niż 100";
  4. ?>


Innego sposobu chyba nie ma.
Ewentualnie można zrobić obiekt trzymający tą wartość i w metodzie, która ją ustawia dać warunek sprawdzający.
maxiu99
miałem tak samo w warunku if ale taka sprawa rozwiązania zbytnio niemoze byc poniewaz: gdy zmienna ma wartosc 99 i na mojej stronie mam skrypt który dodaje +5 do tej zmiennej 
wtedy  w tym warunku wszystko jest ok ale po wykonaniu skryptu zmienna ma juz wartosc 104 i chciałbym tego uniknąc.... ale niewiem w jaki sposób
piotrooo89
a nie możesz później wyniki sprawdzać czy jest mniejszy od 100?
scanner
  1. <?php
  2. $iInt = ( $iInt <= 100 ) ? $iInt : 100;
  3. ?>

Jeśli wartość zmiennej jest mniejsza lub równa 100, pod zmienną podstawiamy nią samą, czyli nie zmieniamy wartości. Jeśli jest większa, obcinamy ją do 100.

  1. <?php
  2. $iInt = min( $iInt, 100 );
  3. ?>

Inne rozwiązanie, nieco czytelniejsze newbie.
m87
  1. <?php
  2. class Mniejsze_Rowne
  3. {
  4. private $wartosc;
  5. private $max = 0;
  6.  
  7. function __construct($max)
  8. {
  9. $this->max = $max;
  10. }
  11.  
  12. function set($x)
  13. {
  14. if ($x <= $this->max)
  15. $this->wartosc = $x;
  16. else
  17. $this->wartosc = $this->max;
  18. }
  19.  
  20. function get()
  21. {
  22. return $this->wartosc;
  23. }
  24. }
  25.  
  26. $obiekt = new Mniejsze_Rowne(100);
  27. $obiekt->set(10);
  28. echo $obiekt->get(); // 10
  29. $obiekt->set(120);
  30. echo $obiekt->get(); // 100
  31. ?>


Obiekty są fajne winksmiley.jpg
scanner
Cytat(m87 @ 9.07.2008, 14:20:47 ) *
Obiekty są fajne winksmiley.jpg

A o KISS słyszałeś? Twój przykład jest bardzo fajny i w ogóle - ale to strzelanie do komara z armaty.
m87
Cytat(scanner @ 9.07.2008, 14:22:47 ) *
A o KISS słyszałeś? Twój przykład jest bardzo fajny i w ogóle - ale to strzelanie do komara z armaty.


Słyszałem, ale przecież autor tematu nie powiedział co to za zmienna i do czego ją potrzebuje. Może ma więcej takich zmiennych albo inne które muszą być mniejsze od 200. Może zmienia jej wartość w 20 miejscach w kodzie, a za tydzień okaże się, że jednak zmienna miała być mniejsza od 120 winksmiley.jpg "Simple" to pojęcie względne, wszystko zależy od tego co autor chce uzyskać.
maxiu99
no napewno wartosc zmiennej nieulegnie zmmiane ze za tydzien będzie większa musiała byc! mam jedna taką wartosc uzywam ją ciągle na mojej stronce bardzo wazna zmienna

chyba zrobie tak jak scanner* powiedział zeby obcinac liczbe, zastanawiam sie jeszcze jak to zrobic, czy po prostu funkcje jezeli wynik większy niz 100 to wartosc tej zmiennej wynosi 100
scanner
Ale po co używać OOP w sytuacji, jak cały problem jest rozwiązany w jednej krótkiej linijce kodu? Twoje argumenty mnie nie przekonują.
Hello world na 200 liniach już tez widziałem...

Toż tego nawet nie trzeba ubierać w funkcję, tylko ożywać on-demand.
maxiu99
sorki ale nie rozumiem, mógłbys jasniej?
scanner
Ty:
- Zaincludowanie pliku z definicją klasy (czas)
- Utworzenie obiektu (czas, pamięć)
- komplikacja kodu - konieczność stosowanie metod składowych obiektu, przepisywanie wartości do obiektu itd.

Ja:
- Użycie jednej konstrukcji wbudowanej w język wtedy, gdy jest ona konieczna.

Prościej się nie da.
maxiu99
hmm, ale najwazniejszego neirozumiem jak to zrobic teraz...
scanner
W kazdym miejscu, w którym może zwiększyć się wartość tej Twojej zmiennej, a nie moze przekroczyć zadanej wartości, użyj:
  1. <?php
  2. $iInt = min( $iInt, 100 );
  3. ?>
maxiu99
iInt czy to jest z bazy danych ta zmienna? nazwa czy cos innego? bo niewiem czy dobze rozumiem
scanner
To jest ta zmienna, o której piszesz na samym początku.
Nazwę $iInt zamń sobie na swoją.
Ludzie, myślcie, to nie boli!

Cytat
Witam, mam otóż taki mały problem z moją zmienną, chce zeby zmienna nigdy w zyciu niemogła wyniesc wiecej niz 100 i niewiem jak to zrobic...
maxiu99
wstawiłem tak jak mówiłes i zmiennej wartosc moze nadal wyniesc więcej niz 100...
Shili
Pokaż kod, który wyprodukowałeś na podstawie tego podpowiedzianego przez scannera.
maxiu99
chodzi ci o cały kod tej podstronki?
Shili
Całej może nie, ale tych fragmentów, które są ważne. Jak nie za bardzo wiesz co wybrać, to lepiej wrzuć całą.
maxiu99
  1. <?php
  2. pol_mysql();
  3. if (isset($_SESSION['user']))
  4. {
  5. $pokaz1 = "SELECT login, zmienna FROM users WHERE login = '". $_SESSION['user'] ."'";
  6. $wykonaj = mysql_query($pokaz1);
  7. while($wiersz = mysql_fetch_array($wykonaj))
  8. {
  9. $zmienna = $wiersz['zmienna'];
  10. }
  11. $pokaz4 = "SELECT login, misster FROM panienki WHERE login = '". $_SESSION['user'] ."'";
  12. $wykonaj = mysql_query($pokaz4);
  13. while($wiersz = mysql_fetch_array($wykonaj))
  14. {
  15. $misster = $wiersz['misster'];
  16. }
  17. if ( $misster != 1) {
  18.  
  19. mysql_query("UPDATE users SET zmienna = $zmienna+40 WHERE login = '". $_SESSION['user'] ."' ");
  20. $zmienna = min( $zmienna, 100 ); // TO JEST WSTAWIONE TAK JAK KOLEGA POWIEDZIAŁ WYZEJ JEDNAK NIEWIEM W KTÓRYM MIEJS
    CU TEGO KODU PRÓBOWAŁEM W INNYCH MEIJSCACH ALE  BEZ ZMIAN
  21.  
  22. } 
  23. } else {
  24. echo "Wróć i zaloguj się!";
  25. }
  26. ?>


Tak wygląda ten kod tak jak wyzej napisałem nie wiem gdzie to umiescic co kolega kazał dopisac próbowałem gdzie indziej i nic...
Kristof
  1. <?php
  2. if ( $misster != 1) {
  3. $zmienna+40;
  4. $zmienna = min( $zmienna, 100 );
  5. mysql_query("UPDATE users SET zmienna = $zmienna WHERE login = '". $_SESSION['user'] ."' ");
  6. }
  7. ?>


Zrób tak powinno być ok
maxiu99
THX troszke zmieniłęm jedną linijke i działa
  1. <?php
  2. $zmienna = $zmienna +40;
  3. ?>
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.