Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php/html instrukcje if wykonują się jednocześnie
Forum PHP.pl > Forum > PHP
Rahael
Podczas pisania jednej z podstron projektu wyniknął problem. Otóż chciałbym, aby każda z trzech instrukcji if wykonywała się osobno po naciśnięciu przypisanego do niej "przycisku". W chwili obecnej którego z trzech przycisków bym nie nacisnął, wykonują się jednocześnie wszystkie trzy instrukcje if(kod poniżej). Jaki błąd popełniam i co trzeba poprawić, aby instrukcje wykonywały się tylko po uruchomieniu ich przez przypisany do nich "przycisk".

  1. <table>
  2. <tr>
  3. <td>Wartosc 1:</td>
  4. <?
  5. $result1 = mysql_query("SELECT `user_ms` FROM ".PREFIKS."users WHERE login='".$gracz['login']."'");
  6. $array1 = mysql_fetch_assoc($result1);?>
  7. <td> +<? echo $array1['user_ms']; ?> km/godz.</td>
  8. <td><? echo MENU_PLAYER; ?></td>
  9. <td>Trenuj +1 </td>
  10. <td><? $koszt1 = 33 * $array1['user_ms']; echo $koszt1; ?></td>
  11. <td><? echo MONETY; ?></td>
  12. <td><?
  13. if ($gracz['pieniadze'] >= $koszt1){
  14. $koszt11 = $gracz['pieniadze'] - $koszt1;
  15. $kup1 = mysql_query("UPDATE ".PREFIKS."users SET pieniadze = $koszt11 WHERE login = '".$gracz['login']."'");
  16. $dodaj1 = mysql_query("UPDATE ".PREFIKS."users SET user_ms = user_ms + 1 WHERE login = '".$gracz['login']."'");
  17. $kudo1 = $kup1 && $dodaj1;
  18. echo '<input type="submit" name="przycisk" value="Trenuj I" "'.$kudo1.'" onclick="location.reload();">';
  19. } else {
  20. echo 'Nie masz tyle pieniędzy';
  21. }
  22. ?>
  23. </td>
  24. </tr>
  25. <tr>
  26. <td>Wartosc 2:</td>
  27. <?
  28. $result2 = mysql_query("SELECT `user_km` FROM ".PREFIKS."users WHERE login='".$gracz['login']."'");
  29. $array2 = mysql_fetch_assoc($result2); ?>
  30. <td> +<? echo $array2['user_km'];?> KM</td>
  31. <td><? echo MENU_PLAYER; ?></td>
  32. <td>Trenuj +1 </td>
  33. <td><? $koszt2 = 33 * $array2['user_km']; echo $koszt2; ?></td>
  34. <td><? echo MONETY; ?></td>
  35. <td><?
  36. if ($gracz['pieniadze'] >= $koszt2){
  37. $koszt22 = $gracz['pieniadze'] - $koszt2;
  38. $kup1 = mysql_query("UPDATE ".PREFIKS."users SET pieniadze = $koszt22 WHERE login = '".$gracz['login']."'");
  39. $dodaj1 = mysql_query("UPDATE ".PREFIKS."users SET user_km = user_km + 1 WHERE login = '".$gracz['login']."'");
  40. $kudo2 = $kup2 && $dodaj2;
  41. echo '<input type="submit" name="przycisk2" value="Trenuj II" "'.$kudo2.'" onclick="location.reload();">';
  42. } else {
  43. echo 'Nie masz tyle pieniędzy';
  44. }
  45. ?>
  46. </td>
  47. </tr>
  48. <tr>
  49. <td>Wartosc 3:</td>
  50. <?
  51. $query3 = mysql_query("SELECT `user_0_to_100` FROM ".PREFIKS."users WHERE login='".$gracz['login']."'");
  52. $result3 = mysql_fetch_assoc($query3);
  53. $array3 = ($result3['user_0_to_100']/10); ?>
  54. <td> - <? echo $array3; ?> sekundy</td>
  55. <td><? echo MENU_PLAYER; ?></td>
  56. <td>Trenuj - 0.1 </td>
  57. <td><? $koszt3 = 33 * $result3['user_0_to_100']; echo $koszt3; ?></td>
  58. <td><? echo MONETY; ?> </td>
  59. <td><?
  60. if ($gracz['pieniadze'] >= $koszt3) {
  61. $koszt33 = $gracz['pieniadze'] - $koszt3;
  62. $kup3 = mysql_query("UPDATE ".PREFIKS."users SET pieniadze = $koszt33 WHERE login = '".$gracz['login']."'");
  63. $dodaj3 = mysql_query("UPDATE ".PREFIKS."users SET user_0_to_100 = user_0_to_100 + 1 WHERE login = '".$gracz['login']."'");
  64. $kudo3 = $kup3 && $dodaj3;
  65. echo '<input type="submit" name="przycisk3" value="Trenuj III" "'.$kudo3.'" onclick="location.reload();">';
  66. } else {
  67. echo 'Nie masz tyle pieniędzy';
  68. }
  69. ?>
  70. </td>
  71. </tr>
  72. </table>
marcio
przed kazdym if'em sprawdzaj czy zostal nacisniety button, a jak?
Poprostu za pomoca isset() sprawdzic odpowiednia zmienna w $_POST
korey
zrób tak:
if ($gracz['pieniadze'] >= $koszt1){
.
.
.
}
if ($gracz['pieniadze'] >= $koszt2){
.
.
.
}
if ($gracz['pieniadze'] >= $koszt3){
.
.
.
}
else{
echo 'nie masz pieniędzy';
}
Rahael
No i nie mogę dojść co dalej robię nie tak.
Korey próbowałem i nie wychodzi.
Marcio sposób może i dobry ale wynikiem instrukcji jest wyświetlenie buttonu i jeśli dam tak to automatycznie mi button znika i isset zawsze będzie zwracał FALSE:
  1. if (isset ($_POST['przycisk']=='Trenuj')) {
  2. if ($gracz['pieniadze'] >= $koszt1){
  3. echo '<input type="submit" name="przycisk" value="Trenuj" "'.$kudo1.'" onclick="location.reload();">';
  4. } else {
  5. echo 'Nie masz tyle pieniędzy';
  6. }
  7. }
Daiquiri
  1. if (isset($_POST['przycisk'])) //tutaj pierwszy warunek
  2. if (isset($_POST['przycisk2'])) //tutaj drugi warunek
  3. if (isset($_POST['przycisk3'])) //tutaj trzeci warunek

Ewentualnie podwójny warunek
  1. if (isset($_POST['przycisk']) && $gracz['pieniadze'] >= $koszt2)


Zwróć również uwagę na to, że nazywasz przyciski tak samo.
  1. if (isset ($_POST['przycisk']=='Trenuj')) { // tutaj "przycisk"
  2. if ($gracz['pieniadze'] >= $koszt1){
  3. echo '<input type="submit" name="przycisk" value="Trenuj" "'.$kudo1.'" onclick="location.reload();">'; // tutaj przycisk
  4. } else {
  5. echo 'Nie masz tyle pieniędzy';
  6. }
  7. }
Rahael
Ok problem rozwiązany jeśli chodzi o aktywowanie instrukcji przez naciśnięcie buttonu

  1. <?
  2. $result1 = mysql_query("SELECT `user_ms` FROM ".PREFIKS."users WHERE login='".$gracz['login']."'");
  3. $array1 = mysql_fetch_assoc($result1);
  4. $koszt1 = 33 * $array1['user_ms'];
  5. if ($_POST['przycisk']) {
  6. if ($gracz['pieniadze'] >= $koszt1){
  7. $koszt11 = $gracz['pieniadze'] - $koszt1;
  8. $kup1 = mysql_query("UPDATE ".PREFIKS."users SET pieniadze = $koszt11 WHERE login = '".$gracz['login']."'");
  9. $dodaj1 = mysql_query("UPDATE ".PREFIKS."users SET user_ms = user_ms + 1 WHERE login = '".$gracz['login']."'");
  10. $kudo1 = $kup1 && $dodaj1;
  11. } else {
  12. echo 'Nie masz tyle pieniędzy';
  13. }
  14. }
  15. ?>

Pomijając fakt, że nie dałem form'y :/
  1. <form method="post" action="">
  2. <input type="submit" name="przycisk2" value="Trenuj" onclick="location.reload();">
  3. </form>


Natomiast powstał kolejny problem. Mianowicie wstawiłem:
  1. onclick="location.reload();

aby po naciśnięciu buttonu, strona się odświeżała zaraz po wykonaniu instrukcji i ukazywała aktualne dane z zaktualizowanej komórki w tabeli mysql. Niestety pojawiła się niechciana "prośba o potwierdzenie chęci powtórzenia akcji" po kolejnym przyciśnięciu danego buttonu, a kod odświeżający stracił swoją właściwość. Jak pozbyć się danej "prośby" i przywrócić jedno odświeżenie powodowane naciśnięciem buttonu, nie tracąc właściwości kodu??
Quadina
Spróbuj użyć, bo wiem, że któryś eleminował ten bład ale nie pamiętam który ;-)
  1. window.location.href=window.location.href;
  2. // albo
  3. history.go(0);
  4. // albo pełnego:
  5. window.location.reload(true);
Rahael
  1. window.location.href=window.location.href;

przy tym działa... No prawie... Okienko potwierdzenia zniknęło, ale refresh z ciężkim sercem działa po drugim przyciśnięciu buttonu...

Mimo wszystko wielkie dzięki 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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.