maxiu99
9.07.2008, 12:02:07
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
9.07.2008, 12:05:23
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
9.07.2008, 12:07:29
przepraszam, chodzi o wartosc zmiennej zeby niemogła wynies więcej niz 100
<?php
if ($zmienna > 100)
echo "Błąd, zmienna jest większa niż 100"; ?>
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
9.07.2008, 12:41:14
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
9.07.2008, 13:03:39
a nie możesz później wyniki sprawdzać czy jest mniejszy od 100?
scanner
9.07.2008, 13:12:01
<?php
$iInt = ( $iInt <= 100 ) ? $iInt : 100;
?>
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.
<?php
$iInt = min( $iInt, 100
); ?>
Inne rozwiązanie, nieco czytelniejsze newbie.
<?php
class Mniejsze_Rowne
{
private $wartosc;
private $max = 0;
function __construct($max)
{
$this->max = $max;
}
function set($x)
{
if ($x <= $this->max)
$this->wartosc = $x;
else
$this->wartosc = $this->max;
}
function get()
{
return $this->wartosc;
}
}
$obiekt = new Mniejsze_Rowne(100);
$obiekt->set(10);
echo $obiekt->get(); // 10 $obiekt->set(120);
echo $obiekt->get(); // 100 ?>
Obiekty są fajne
scanner
9.07.2008, 13:22:47
Cytat(m87 @ 9.07.2008, 14:20:47 )

Obiekty są fajne

A o
KISS słyszałeś? Twój przykład jest bardzo fajny i w ogóle - ale to strzelanie do komara z armaty.
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

"Simple" to pojęcie względne, wszystko zależy od tego co autor chce uzyskać.
maxiu99
9.07.2008, 13:36:58
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
9.07.2008, 13:41:29
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
9.07.2008, 13:49:52
sorki ale nie rozumiem, mógłbys jasniej?
scanner
9.07.2008, 14:14:18
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
15.07.2008, 11:21:42
hmm, ale najwazniejszego neirozumiem jak to zrobic teraz...
scanner
15.07.2008, 11:37:12
W kazdym miejscu, w którym może zwiększyć się wartość tej Twojej zmiennej, a nie moze przekroczyć zadanej wartości, użyj:
<?php
$iInt = min( $iInt, 100
); ?>
maxiu99
15.07.2008, 20:12:45
iInt czy to jest z bazy danych ta zmienna? nazwa czy cos innego? bo niewiem czy dobze rozumiem
scanner
15.07.2008, 20:19:06
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
16.07.2008, 14:47:08
wstawiłem tak jak mówiłes i zmiennej wartosc moze nadal wyniesc więcej niz 100...
Shili
16.07.2008, 14:49:47
Pokaż kod, który wyprodukowałeś na podstawie tego podpowiedzianego przez scannera.
maxiu99
16.07.2008, 14:52:49
chodzi ci o cały kod tej podstronki?
Shili
16.07.2008, 14:58:41
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
16.07.2008, 18:34:26
<?php
pol_mysql();
if (isset($_SESSION['user'])) {
$pokaz1 = "SELECT login, zmienna FROM users WHERE login = '". $_SESSION['user'] ."'";
{
$zmienna = $wiersz['zmienna'];
}
$pokaz4 = "SELECT login, misster FROM panienki WHERE login = '". $_SESSION['user'] ."'";
{
$misster = $wiersz['misster'];
}
if ( $misster != 1) {
mysql_query("UPDATE users SET zmienna = $zmienna+40 WHERE login = '". $_SESSION['user'] ."' "); $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
}
} else {
echo "Wróć i zaloguj się!"; }
?>
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
16.07.2008, 18:46:01
<?php
if ( $misster != 1) {
$zmienna+40;
$zmienna = min( $zmienna, 100
); mysql_query("UPDATE users SET zmienna = $zmienna WHERE login = '". $_SESSION['user'] ."' "); }
?>
Zrób tak powinno być ok
maxiu99
16.07.2008, 18:54:31
THX troszke zmieniłęm jedną linijke i działa
<?php
$zmienna = $zmienna +40;
?>
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.