Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z przerwaniem if'a
Forum PHP.pl > Forum > Przedszkole
Kiubus
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. ?>
nospor
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....
Kiubus
Czyli problemem jest sposób jakim chcę wyprowadzić wartość tablicy na ekran tzn. przez echo?
nospor
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
?
Kiubus
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
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.