iqique
23.04.2011, 11:56:35
Czy istnieje w php jakaś funkcja, która pozwoliła by mi na nie wykonanie jednego polecenia w pętli jeśli zostanie spełniony jakiś warunek? Coś na styl nie wykonuj w pętlli jeśli $zmienna=1.
Dziękuję za pomoc.
Piogola
23.04.2011, 12:04:13
hieroshima
23.04.2011, 12:04:23
nie bardzo rozumiem co chcesz zrobić, ale jeżeli masz pętle i nie chcesz aby ta pętla się wykonała gdy np $zmienna=1 to dajesz do tej petli warunek if ($zmienna==1) break; else ..... wtedy wyskioczy CI z tej petli jezeli warunek jest prawdziwy. Lub poprostu skorzystaj z pętli while, alob do..while one się wykonują dopuki warunek jest prawdziwy czyli pętla będzie się wykonywać dopuki $zmienna!=1
Valker
23.04.2011, 12:20:49
iqique
23.04.2011, 12:26:44
Opiszędokładnie problem.
mam taki kod:
$resResult = mysql_query( "SELECT * FROM magazyn where nrkonta=$wlasciciel" );
foreach( $arrRow as $strKey => $strValue )
{
if(empty($_POST[$strKey])==0
);
if($_POST[$strKey] <= $strValue){
$odejmowanie1=$strValue-$_POST[$strKey];
$operacja1=mysql_query( "update magazyn set $strKey=$odejmowanie1 where id=$wlasciciel" ); }
}
$resResult = mysql_query( "SELECT * FROM sklep where nrkonta=$wlasciciel" );
foreach( $arrRow as $strKey => $strValue )
{
if(empty($_POST[$strKey])==0
);
if($_POST[$strKey] <= $strValue){
$dodawanie1=$strValue+$_POST[$strKey];
$operacja2=mysql_query( "update sklep set $strKey=$dodawanie1 where id=$wlasciciel" );}
}
Pobieram sobie z tabeli magazyn wartości i wykonuję na nich operację odejmowania wartości przesłanych postem. Zapisuje do bazy magazyn wynik odejmowania. Następnie pobieram dane z tabeli sklep i dodaję wartość przesłaną postem. Wszystko pięknie jednak nie mogę sobie poradzić z sytuacją kiedy w tabeli wartość początkowa wynosi zero. Skrypt i tak się wykonuje i dodaje do bazy wartość przesłaną postem. Próbowałem tu różnych kombinacji z ifami ale nie cholery mi nie idzie. Chodzi o to żeby pominąć wykonywanie zapisu do bazy w sytuacji kiedy wartość początkowa w bazie wynosi zero.
hieroshima
23.04.2011, 12:31:43
zamknij to w warunku, który sprawdza wartość początkową. Jeżeli wartość początkowa będzie 0 dajesz break; a w else dajesz cala operacje, która ma się wykonać jeżeli wartość jest != 0
iqique
23.04.2011, 12:47:03
Rozumiem i tak próbowałem tylko proszę o podpowiedź w którym miejscu miałby się znaleźć. Od godziny nad tym główkuję i wiem, że to banalne, ale tak jestem zciśnieniowany, że mam mętlik w głowie:)
hieroshima
23.04.2011, 12:57:14
Spróbuj zamienić to:
if(empty($_POST[$strKey])==0
);
na to:
if($_POST[$strKey]==0)
break;
else
{
if($_POST[$strKey] <= $strValue){
$odejmowanie1=$strValue-$_POST[$strKey];
$operacja1=mysql_query( "update magazyn set $strKey=$odejmowanie1 where id=$wlasciciel" ); }
}
mat-bi
23.04.2011, 12:59:08
Zastanawiam się, po co tak kombinujecie. Nie lepiej samo
if(!empty($_POST[$strKey])
bez else? Czytelniej i łatwiej zrozumieć.
EDIT:
Albo jeszcze jedno - nie łatwiej
isset niż
empty ?
iqique
23.04.2011, 13:09:44
Ok. Idąc dalej. W jaki sposób nie pozwolić kolejnej pętli na zapis w drugiej tabeli jeśli odpowiadający jej wpis w pierwszej tabeli wynosi zero?
hieroshima
23.04.2011, 13:14:26
w ten sam sposób
iqique
23.04.2011, 13:15:37
Tylko że druga pętla sprawdza wartości w drugiej tabeli. Więc sprawdzi czy w drugiej tabeli nie ma zera.
mat-bi
23.04.2011, 13:17:35
Człowieku, do kursu!
iqique
23.04.2011, 13:19:46
Dziękuję za pomoc.
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.