Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]mam problem z petla while w PHP
dolar
post 19.10.2016, 09:06:51
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 19.10.2016

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


<?

while (!empty(czytajLinie())) {
if (czytajLinie()=="tak") {
echo "przyznano dostep";
} elseif (czytajLinie()=="nie") {
echo "nie przyznano dostepu";
} elseif (czytajLinie()!="tak" || czytajLinie()!="nie") {
echo "nie znam komendy\n";
}
}

echo "wpisz raz jeszcze polecenie\n";


?>


Witam, jestem nowa i poczakujaca... a w zasadzie to jeszcze raczkujaca tongue.gif. Zatrzymalam sie na dluzej w petlach gdyz jakos tak ciezko mi przyszlo ich zrozumienie, ackzolwiek wszystko idzie do przodu juz smile.gif.
Wyyslilam sobie zadanie, ze petla ma dzialac w momencie gdy pole z funkcji (czytajlinie - to moja wlasna funkacja, gdzie sie wpisuje cos) nie bedzie pusta, inaczej ma ja zakonczyc. I tak: jesli uzytkownik wpisze "tak to ma sie cos wyswietlic, jezeli "nie" to ma sie tez cos wuswietlic, a jezeli nic z powyzszych to tez ma cos sie wyswiertlac... cos mi nie dziala bo jak wpisuje tak to petla wskakuje jakby na poczatek i znowu mam pole do wpisywania zamiast echo dopasowane do slowa "tak"... co jest nie tak?

Ten post edytował dolar 19.10.2016, 09:20:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
kapslokk
post 19.10.2016, 09:13:53
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Pokaż kod tej funkcji czytajLinie - może łatwiej będzie zrozumieć o co Ci tak właściwie chodzi.
Go to the top of the page
+Quote Post
dolar
post 19.10.2016, 09:15:31
Post #3





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 19.10.2016

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



function czytajLinie() {
echo "Wpisz: ";
$handle = fopen ("php://stdin","r");
$line = fgets($handle);
return trim($line);
}


Przepraszam jesli pisze malo czytelnie, ale na prawde jestem dopiero na etapie podstaw smile.gif
Go to the top of the page
+Quote Post
kapslokk
post 19.10.2016, 09:20:12
Post #4





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Zmień warunek pętli na
  1. while (!empty($linia = czytajLinie())) {
i później w środku odwołuj się do $linia a nie czytajLinie(). W takiej formie jak masz teraz w każdym miejscu gdzie wywołujesz czytajLinie() musisz wpisywac tekst od nowa.

Ten post edytował kapslokk 19.10.2016, 09:23:06
Go to the top of the page
+Quote Post
dolar
post 19.10.2016, 09:27:42
Post #5





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 19.10.2016

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


Dziala!!!

A czy pspba powyzej bylaby tak mila i wytlumaczyla mi jak laikowi dlaczego dziala jak przypisze zmiennej moja funkcje, a jak nie to nie dziala? Bo w chwili obecnej jestem na etapie przestawianie sie na myslenie programistyczne i czasem nie widze rzeczy, ktore powinnam :/. Widze ze po przypisaniu funkcji do zmiennej jest ona wywolywana tylko raz w warunku petli, a wczesniej mialam ja wywolywana kilka razy tak? Dlatego nie dzialalo?

Ten post edytował dolar 19.10.2016, 09:29:59
Go to the top of the page
+Quote Post
kapslokk
post 19.10.2016, 09:31:28
Post #6





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Funkcja czytajLinie() przy KAŻDYM wywołaniu pobiera tekst z wejścia - czyli za pierwszym razem gdy sprawdzasz czy polecenie nie jest puste i poźniej gdy porownujesz do konkretnych stringow. Potrzebujesz pobrać polecenie jeden raz i później na nim już operować. Teoretycznie Twój kod też działał, tylko trzeba było wpisać np 2x tak. smile.gif
Go to the top of the page
+Quote Post
dolar
post 19.10.2016, 09:37:57
Post #7





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 19.10.2016

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


Baardzo dziekuje za pomoc. Wiem, ze moje pierwsze kroki i zadania i problemy moga wydac sie czasem blahe, ale jestem mega zadowolona z udzielonej mi pomocy iw razie problemow bede tutaj stalym uzytkownikiem smile.gif
Pozdrawiam!
Go to the top of the page
+Quote Post
Tomplus
post 19.10.2016, 14:11:37
Post #8





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Daj POMÓGŁ tym którzy ci pomogli w rozwiązaniu problemu.
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 13.08.2025 - 22:46