Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Instrukcja warunkowa czy pętla?
Marco1357
post 25.01.2023, 17:06:37
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 17.01.2023

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


Witam wszystkich. Oto mój problem. Tworzę program kalkulator w php. Mam dwa pliki. W jednym pliku ( kalkulator.php ) mamy przyciski, które są formularzami, po naciśnięciu których przenoszeni jesteśmy do drugiego pliku kalk.php. Tutaj zależnie od wciśniętego przycisku, tworzona jest tablica z cyframi, a następnie tablica wyświetlana jest w pliku kalkulator.php. I teraz można zrobić tę tablicę przy pomocy instrukcji warunkowych. Wadą tego rozwiązania jest duża ilość kodu do napisania. Można też użyć pętli. J tu jest problem. Moja pętla foreach po naciśnięciu cyfry zero tworzy i wyświetla od razu tablicę z ośmioma cyframi zamiast jednej. Co w tej sytuacji zrobić?
Oto kod:

kalk.php

  1. <?php
  2. if (isset($_GET['wynik']) ) {
  3. // $liczby = array();
  4.  
  5. $zero = array('zero', 'dziesiec', 'dwadziescia', 'trzydziesci', 'czterdziesci', 'piecdziesiat', 'szescdziesiat', 'siedemdziesiat');
  6.  
  7. if ($_GET['wynik'] == "0") {
  8. $_SESSION['zero']= $_GET['wynik'];
  9.  
  10. }
  11.  
  12.  
  13. foreach ($zero as $wartosc){
  14. if($_GET['wynik'] == "0" & $_SESSION[$wartosc]=="0"){
  15. if($_SESSION['siedemdziesiat'] =="0"){
  16. break;
  17. }
  18.  
  19. $nast_el = next($zero);
  20. $_SESSION[$nast_el]="0";
  21.  
  22. }
  23. }
  24.  
  25.  
  26.  
  27.  
  28.  
  29. if ($_GET['wynik'] == "1") {
  30. $_SESSION['jeden']= $_GET['wynik'];
  31.  
  32. }
  33.  
  34. if($_GET['wynik']=="2" & $_SESSION['dwa']=="2"){
  35. $_SESSION['dwanascie']="2";
  36. }
  37.  
  38. if ($_GET['wynik']=="2") {
  39. $_SESSION['dwa']= $_GET['wynik'];
  40.  
  41. }
  42.  
  43.  
  44. if ($_GET['wynik'] == "3") {
  45. $_SESSION['trzy']= $_GET['wynik'];
  46. }
  47.  
  48. if ($_GET['wynik'] == "4") {
  49. $_SESSION['cztery']= $_GET['wynik'];
  50. }
  51.  
  52.  
  53. } else {
  54. echo "wybierz stronę!";
  55. }
  56.  
  57. include 'kalkulator.php';
  58.  
  59. ?>




kalkulator.php




  1.  
  2.  
  3.  
  4. <?php
  5. // session_start();
  6.  
  7.  
  8. ?>
  9.  
  10. <!DOCTYPE html>
  11. <html>
  12. <head>
  13. <meta charset='utf-8'>
  14. <meta http-equiv='X-UA-Compatible' content='IE=edge'>
  15. <title>KALKULATOR</title>
  16. <meta name='viewport' content='width=device-width, initial-scale=1'>
  17. <link rel='stylesheet' type='text/css' media='screen' href='main1.css'>
  18. <script src='main.js'></script>
  19. </head>
  20. <body>
  21.  
  22.  
  23. <table class="tabela">
  24. <tr>
  25. <td colspan="4" class="wyswietlacz">
  26. Działanie: <?php
  27.  
  28.  
  29. foreach ($_SESSION as $cyfra){
  30. echo $cyfra;
  31. }
  32. ?>
  33. <br>
  34. Wynik:<br>
  35.  
  36. </td>
  37. </tr>
  38.  
  39. <tr>
  40.  
  41. <td>
  42. <form action="kalk.php" method="get">
  43. <input type=submit value="1" class="input"/>
  44. <input type="hidden" name="wynik" value= "1" />
  45.  
  46. </form>
  47. </td>
  48.  
  49. <td>
  50. <form action="kalk.php" method="get">
  51. <input type=submit value="2" class="input"/>
  52. <input type="hidden" name="wynik" value="2" />
  53. </form>
  54. </td>
  55.  
  56. <td>
  57. <form action="kalk.php" method="get">
  58. <input type=submit value="3" class="input"/>
  59. <input type="hidden" name="wynik" value="3" ?>
  60. </form>
  61. </td>
  62.  
  63. <td>
  64. <form action="kalk.php" method="get">
  65. <input type=submit value="C" class="input"/>
  66. <input type="hidden" name="wynik" value="C" ?>
  67. <input type="hidden" name="zn" value="kasowanie"/>
  68. </form>
  69. </td>
  70.  
  71. </tr>
  72.  
  73. <tr>
  74.  
  75. <td>
  76. <form action="kalk.php" method="get">
  77. <input type=submit value="4" class="input"/>
  78. <input type="hidden" name="wynik" value="4" ?>
  79. </form>
  80. </td>
  81.  
  82. <td>
  83. <form action="kalk.php" method="get">
  84. <input type=submit value="5" class="input"/>
  85. <input type="hidden" name="wynik" value="5" ?>
  86. </form>
  87. </td>
  88.  
  89. <td>
  90. <form action="kalk.php" method="get">
  91. <input type=submit value="6" class="input"/>
  92. <input type="hidden" name="wynik" value="6" ?>
  93. </form>
  94. </td>
  95.  
  96. <td>
  97. <form action="kalk.php" method="get">
  98. <input type=submit value="-" class="input"/>
  99. <input type="hidden" name="wynik" value="-" ?>
  100. <input type="hidden" name="zn" value="minus"/>
  101. </form>
  102. </td>
  103.  
  104. </tr>
  105. <tr>
  106. <td>
  107. <form action="kalk.php" method="get">
  108. <input type=submit value="7" class="input"/>
  109. <input type="hidden" name="wynik" value="7" ?>
  110. </form>
  111. </td>
  112.  
  113. <td>
  114. <form action="kalk.php" method="get">
  115. <input type=submit value="8" class="input"/>
  116. <input type="hidden" name="wynik" value="8" ?>
  117. </form>
  118. </td>
  119.  
  120.  
  121. <td>
  122. <form action="kalk.php" method="get">
  123. <input type=submit value="9" class="input"/>
  124. <input type="hidden" name="wynik" value="9" ?>
  125. </form>
  126. </td>
  127. <td>
  128.  
  129. <form action="kalk.php" method="get">
  130. <input type=submit value="+" class="input"/>
  131. <input type="hidden" name="wynik" value="+" ?>
  132. <input type="hidden" name="zn" value="plus"/>
  133. </form>
  134.  
  135. </td>
  136. </tr>
  137.  
  138. <tr>
  139. <td>
  140. <form action="kalk.php" method="get">
  141. <input type=submit value="." class="input"/>
  142. <input type="hidden" name="wynik" value="." ?>
  143. </form>
  144.  
  145.  
  146. </td>
  147.  
  148. <td>
  149. <form action="kalk.php" method="get">
  150. <input type=submit value="/" class="input"/>
  151. <input type="hidden" name="wynik" value="/" ?>
  152. <input type="hidden" name="zn" value="dzielenie"/>
  153. </form>
  154.  
  155.  
  156.  
  157. </td>
  158.  
  159. <td>
  160. <form action="kalk.php" method="get">
  161. <input type=submit value="0" class="input"/>
  162. <input type="hidden" name="wynik" value="0" ?>
  163. </form>
  164. </td>
  165.  
  166. <td>
  167. <form action="kalk.php" method="get">
  168. <input type=submit value="=" class="input"/>
  169. <input type="hidden" name="wynik" value="=" ?>
  170. <input type="hidden" name="zn" value="rowna"/>
  171. </form>
  172. </td>
  173.  
  174.  
  175. </tr>
  176. <tr>
  177. <td>
  178. <form action="kalk.php" method="get">
  179. <input type=submit value="*" class="input"/>
  180. <input type="hidden" name="wynik" value="*" ?>
  181. <input type="hidden" name="zn" value="mnozenie"/>
  182. </form>
  183. </td>
  184.  
  185. <td>
  186. <form>
  187. <input type=submit value=" " class="input"/>
  188.  
  189. </form>
  190. </td>
  191.  
  192. <td>
  193. <form>
  194. <input type=submit value=" " class="input"/>
  195.  
  196. </form>
  197. </td>
  198.  
  199. <td>
  200. <form>
  201. <input type=submit value=" " class="input"/>
  202.  
  203. </form>
  204. </td>
  205.  
  206.  
  207. </tr>
  208.  
  209. </table>
  210. <?php
  211.  
  212.  
  213.  
  214.  
  215.  
  216. ?>
  217. </body>
  218. </html>
  219. </html>


Go to the top of the page
+Quote Post
nospor
post 25.01.2023, 17:12:59
Post #2





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




Nie
& $_SESSION[$wartosc]=="0"

a
&& $_SESSION[$wartosc]==="0"


Ale lepiej by bylo bys napisal co ty probujesz osiagnac bo to coteraz robisz nie ma najmniejszego sensu i raczej na pewno mozna to zrobic lepiej/prosciej/czytelniej


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

"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
Marco1357
post 25.01.2023, 17:44:18
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 17.01.2023

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


Cytat(nospor @ 25.01.2023, 17:12:59 ) *
Nie
& $_SESSION[$wartosc]=="0"

a
&& $_SESSION[$wartosc]==="0"


Ale lepiej by bylo bys napisal co ty probujesz osiagnac bo to coteraz robisz nie ma najmniejszego sensu i raczej na pewno mozna to zrobic lepiej/prosciej/czytelniej


Konkretnie to chodzi o ten fragment kodu (poniżej), chcę aby po wciśnięciu klawisza 0, wyświetlone było 0 a nie tak jak teraz 00000000, i kolejne wciśnięcie 0 powodowało wyświetlenie 00, kolejne 000 itd.

kalk.php

  1.  
  2. <?php
  3. if (isset($_GET['wynik']) ) {
  4. // $liczby = array();
  5.  
  6. $zero = array('zero', 'dziesiec', 'dwadziescia', 'trzydziesci', 'czterdziesci', 'piecdziesiat', 'szescdziesiat', 'siedemdziesiat');
  7.  
  8. if ($_GET['wynik'] == "0") {
  9. $_SESSION['zero']= $_GET['wynik'];
  10.  
  11.  
  12. }
  13.  
  14.  
  15. foreach ($zero as $wartosc){
  16. if($_GET['wynik'] == "0" && $_SESSION[$wartosc]==="0"){
  17. if($_SESSION['siedemdziesiat'] =="0"){
  18. break;
  19. }
  20.  
  21. $nast_el = next($zero);
  22. $_SESSION[$nast_el]="0";
  23.  
  24.  
  25. }
  26. }
  27.  


wyświetlanie natomiast, fragment kalkulator.php:

  1.  
  2. <tr>
  3. <td colspan="4" class="wyswietlacz">
  4. Działanie: <?php
  5.  
  6.  
  7. foreach ($_SESSION as $cyfra){
  8. echo $cyfra;
  9. }
  10. ?>
  11. <br>
  12. Wynik:<br>
  13.  
  14. </td>
  15. </tr>
  16.  


Go to the top of the page
+Quote Post
nospor
post 25.01.2023, 17:49:52
Post #4





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




Podalem ci na szybko rozwiazanie twojego problemu, masz poprawic IF



A ja sie pytam o caloksztal co ty chcesz zrobic.

chccesz za jak ktos wcisniej 1 a potem 3 a potem 6 to zeby wyswietlalo mu 136?
A jak wcisnie 1 potem 1 potem 1 to ma wyswietlic 111?

Pytam, bo teraz to tak na pewno nie dziala.


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

"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
Marco1357
post 25.01.2023, 17:55:59
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 17.01.2023

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


Cytat(nospor @ 25.01.2023, 17:49:52 ) *
Podalem ci na szybko rozwiazanie twojego problemu, masz poprawic IF



A ja sie pytam o caloksztal co ty chcesz zrobic.

chccesz za jak ktos wcisniej 1 a potem 3 a potem 6 to zeby wyswietlalo mu 136?
A jak wcisnie 1 potem 1 potem 1 to ma wyswietlic 111?

Pytam, bo teraz to tak na pewno nie dziala.


Tak dokładnie o to chodzi. chcę aby było 136, ale też żeby było 111.
Go to the top of the page
+Quote Post
nospor
post 25.01.2023, 18:01:21
Post #6





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




no wlasnie. skad pomysl ze ty masz tam wrzucac kazda liczbe osobno? Przeciez wystarczy tylko ta jedna linijka zamiast petryliarda twoich

  1. if (isset($_GET['wynik']) ) {
  2. if (is_numeric($_GET['wynik'])) {
  3.  
  4. if (!isset($_SESSION['liczba']))
  5. {
  6. $_SESSION['liczba'] = '';
  7. }
  8.  
  9. $_SESSION['liczba'] .= $_GET['wynik'];
  10. }
  11.  
  12. }
  13.  

I wyswietlanie:

echo $_SESSION['liczba'];

i juz. dziala na wszystkie cyfry jakie wpiszesz i w jakiej kolejnosci


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

"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
Marco1357
post 25.01.2023, 18:20:49
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 17.01.2023

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


Cytat(nospor @ 25.01.2023, 18:01:21 ) *
no wlasnie. skad pomysl ze ty masz tam wrzucac kazda liczbe osobno? Przeciez wystarczy tylko ta jedna linijka zamiast petryliarda twoich

  1. if (isset($_GET['wynik']) ) {
  2. if (is_numeric($_GET['wynik'])) {
  3.  
  4. if (!isset($_SESSION['liczba']))
  5. {
  6. $_SESSION['liczba'] = '';
  7. }
  8.  
  9. $_SESSION['liczba'] .= $_GET['wynik'];
  10. }
  11.  
  12. }
  13.  

I wyswietlanie:

echo $_SESSION['liczba'];

i juz. dziala na wszystkie cyfry jakie wpiszesz i w jakiej kolejnosci



Dzięki wszystko działa. Teraz zauważyłem kropkę (Konkatenację).


Ten post edytował Marco1357 25.01.2023, 18:36:19
Go to the top of the page
+Quote Post
nospor
post 25.01.2023, 18:35:32
Post #8





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




Cytat
Chciałbym zachować wygląd kalkulatora.

A co ma piernik do wiatraka?

Wyglad formularza to jedno, a przechowywanie danych to drugie.
No ale spoko, rob po swojemu, zycze szczescia w wyswietleniu 111 smile.gif


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

"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
Marco1357
post 25.01.2023, 18:37:22
Post #9





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 17.01.2023

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


Cytat(nospor @ 25.01.2023, 18:35:32 ) *
A co ma piernik do wiatraka?

Wyglad formularza to jedno, a przechowywanie danych to drugie.
No ale spoko, rob po swojemu, zycze szczescia w wyswietleniu 111 smile.gif



Dzięki wszystko działa. Teraz zauważyłem kropkę (Konkatenację).
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: 24.04.2024 - 15:40