Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z przerwaniem if'a
Kiubus
post 25.11.2019, 15:25:34
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 11.10.2010

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


Witam.
Wziąłem się za naukę PHP. Więc wpadłem na pomysł (dla niektórych pewnie głupi, no ale cóż... od czegoś zacząć trzeba) napisania stronki-kalkulatora w celach edukacyjnych. Wygląda to w ten sposób:
index.php:
plik, który w sumie jest głównie html'em, zawiera nagłówek, prosty formularz w którym podajemy liczbę nr 1 i liczbę nr dwa oraz lista z której wybieramy jedno z działań: dodawanie, odejmowanie, mnożenie, dzielenie i potęgowanie.
calc.php
Skrypt, który przetwarza dane z formularza. Dodatkowo zawiera tablicę złożoną z 5 elementów, w których jest zdeklarowanych kilka komentarzy. Zmienna numer indeksu wybiera jedną z 5 liczb, która później odpowiada za to który komentarz z tablicy będzie wyświetlony przy wyniku działania.

I zaczyna się problem, z którym walczę od rana różnie kombinując i nic nie wychodzi. Chcę, aby w przypadku wyświetlenia komentarza nr 3 lub 4 skrypt wyświetlał tylko komentarz, bez wyniku działania. Próbowałem dawać w ifa że jeśli komentarz ma nr 3 lub 4 to wyświetla go i exit; else wykonuje działania i dopiero wyświetla, w końcu switcha dałem nad ifa ale niestety nic nie pomaga, próbowałem wpisać inaczej warunki w ifie np. jeśli komentarz >= 3 i <= 4 to koniec działania ale nic :/

Wklejam kod poniżej, ktoś mnie naprowadzi gdzie robię błąd?
Z góry dziękuję i przepraszam, że zawracam gitarę takimi błahostkami smile.gif

  1. <?php
  2. $pierwszaLiczba = $_POST["pierwszaLiczba"];
  3. $drugaLiczba = $_POST["drugaLiczba"];
  4. $dzialanie = $_POST["dzialanie"];
  5. $numerIndeksu = rand(1,5);
  6. $komentarz = [
  7. '1' => 'komentarz1',
  8. '2' => 'komentarz2',
  9. '3' => 'komentarz3',
  10. '4' => 'komentarz4',
  11. '5' => 'komentarz5'
  12. ];
  13.  
  14. switch ($dzialanie) {
  15. case 'Dodawanie':
  16. $wynik = $pierwszaLiczba + $drugaLiczba;
  17. break;
  18. case 'Odejmowanie':
  19. $wynik = $pierwszaLiczba - $drugaLiczba;
  20. break;
  21. case 'Mnożenie':
  22. $wynik = $pierwszaLiczba * $drugaLiczba;
  23. break;
  24. case 'Dzielenie':
  25. if ($drugaLiczba == 0){
  26. echo "Przez 0 się nie dzieli!<br>";
  27. } else{
  28. $wynik = $pierwszaLiczba / $drugaLiczba;
  29. }
  30. break;
  31. case 'Potęgowanie':
  32. $wynik = $pierwszaLiczba ** $drugaLiczba;
  33. break;
  34. }
  35.  
  36. if ($komentarz[$numerIndeksu] == 3 || $komentarz[$numerIndeksu] == 4) {
  37. echo "$komentarz[$numerIndeksu]<br>";
  38. } else {
  39. echo "$komentarz[$numerIndeksu]<br>";
  40. echo "Wynik to $wynik.";
  41. }
  42.  
  43. ?>
Go to the top of the page
+Quote Post
nospor
post 25.11.2019, 15:31:52
Post #2





Grupa: Moderatorzy
Postów: 36 449
Pomógł: 6292
Dołączył: 27.12.2004




Jesli ten kod
if ($komentarz[$numerIndeksu] == 3 || $komentarz[$numerIndeksu] == 4) {
echo "$komentarz[$numerIndeksu]<br>";
exit;
} else {
echo "$komentarz[$numerIndeksu]<br>";
echo "Wynik to $wynik.";
}

zawsze wykonuje to co jest w ELSE, znaczy ze warunek w IF nie jest spelniony.

wyswietl sobie dokladnie co zawiera $komentarz[$numerIndeksu]

var_dump($komentarz[$numerIndeksu]);

i bedzie wszystko jasne.

przenosze.

ps: zreszta nie ma co wyswietlac przeciez jak wol widac ze $komentarz[$numerIndeksu] NIGDY ale to NIGDY nie bedzie mialo wartosci 3 lub 4....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kiubus
post 25.11.2019, 15:56:17
Post #3





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 11.10.2010

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


Czyli problemem jest sposób jakim chcę wyprowadzić wartość tablicy na ekran tzn. przez echo?
Go to the top of the page
+Quote Post
nospor
post 25.11.2019, 16:00:49
Post #4





Grupa: Moderatorzy
Postów: 36 449
Pomógł: 6292
Dołączył: 27.12.2004




facepalmxd.gif

Nie, problemem jest twoj totalny brak myslenia...
Teraz do 3 lub 4 porownujesz wartosci ala komentarz1.

No zastanow sie przez chwile, jakim cudem tekst 'komentarz1' albo nawet tekst 'komentarz3' ma byc rowne 3?

Naprawde uwazasz ze

'komentarz3' == 3
?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kiubus
post 25.11.2019, 16:06:36
Post #5





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 11.10.2010

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


Masz rację, zamiast porównać w ifie numer indeksu do 3 porównywałem cały string do 3... Wielkie dzięki, temat rozwiązany smile.gif
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: 23.04.2024 - 12:05