Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]ciągłe wykonywanie się if
Forum PHP.pl > Forum > Przedszkole
Th0e
Witam. oto mój kod:


  1. <h3>Uzdrowiciel</h3>
  2.  
  3.  
  4. <form method="post">
  5. <input type="hidden" name="uzdrowiciel" value="uzdrowiciel" />
  6. <input type="submit" name="uzdrowiciel" value="uzdrów" />
  7. </form>
  8. <?php
  9.  
  10.  
  11. $level = mysql_query("SELECT `level` FROM uzytkownicy WHERE `nick`='$nick'");
  12. $lvl = mysql_fetch_array($level);
  13.  
  14. $zycie = mysql_query("SELECT `zycie` FROM uzytkownicy WHERE `nick`='$nick'");
  15. $hp = mysql_fetch_array($zycie);
  16.  
  17.  
  18. $_SESSION['uzdrawianie'] = $_POST['uzdrowiciel'];
  19.  
  20. if ($_SESSION['uzdrawianie'] ="uzdrowiciel"){
  21. if ($lvl['level'] == 1){
  22. echo "uzdrowiono za 50 złota. Twoje życie teraz wynosi 100.";
  23. mysql_query("update uzytkownicy set zycie =100, zloto=`zloto`-50 WHERE nick='$nick'")or die(mysql_error());
  24.  
  25. }
  26. }
  27.  
  28.  
  29. ?>

w tym problem że gdy raz się kliknie uzdrów i wyśle te dane do zmiennej, to potem ciągle jak będziemy wchodzić na tę podstronę z tym - będzie się wykonywać warunek if. Ktoś wie jak to naprawić, że będzie się wykonywało tylko po kliknięciu uzdrów?

ktoś napisał mi już kod:

  1. <?php
  2. $gracz = mysql_fetch_array(mysql_query("SELECT * FROM uzytkownicy WHERE `nick`='$nick'"));
  3. if (!empty($_POST) && $gracz['level'] == 1 && $_POST['uzdrowiciel'] == "uzdrowiciel" && isset($_GET['uzdrow'])){
  4. echo "uzdrowiono za 50 złota. Twoje życie teraz wynosi 100.";
  5. mysql_query("update uzytkownicy set zycie =100, zloto=`zloto`-50 WHERE nick='$nick'")or die(mysql_error());
  6. }
  7. ?>
  8. <h3>Uzdrowiciel</h3>
  9. <form action="?uzdrow" method="POST">
  10. <input type="hidden" name="uzdrowiciel" value="uzdrowiciel" />
  11. <input type="submit" name="uzdrowiciel" value="uzdrów" />
  12. </form>


ale on w ogóle nie działa - nie wysyła danych do bazy, nie pokazuje tekstu.
RiE
  1. if ($_SESSION['uzdrawianie'] ="uzdrowiciel")


Przypisujesz tutaj zmienną, a powinieneś porównywać (==)
Th0e
Cytat(RiE @ 8.10.2012, 22:23:45 ) *
  1. if ($_SESSION['uzdrawianie'] ="uzdrowiciel")


Przypisujesz tutaj zmienną, a powinieneś porównywać (==)



faktycznie błąd, ale jak poprawie to kod w ogóle nie działa, myślę że warto skoncentrować się na tym drugim kodzie.
mindspeo
Jak odświeżasz stronę to przesyłasz dane przez $_POST więc przesyłasz ciągle te same dane. $_GET jest ustawione, więc je wyczyść i nie odświeżaj strony F5, tylko poruszaj się niezależnie.

I zrób coś takiego:

  1. $gracz = mysql_fetch_array(mysql_query("SELECT * FROM uzytkownicy WHERE nick ={$nick}"));
  2. echo "<pre>".print_r($gracz,true)."</pre>";


i wklej wynik
RiE
Nie działą bo cały skrypt jest źle napisany.
Zapisujesz do sesji, aby uzdrowił podczas wejścia na strone i sesja to zapamiętuje. W formularzu oba pola mają taką samą nazwę.
Spróbuj tak:
  1. <h3>Uzdrowiciel</h3>
  2.  
  3.  
  4. <form method="post">
  5. <input type="hidden" name="uzdrow" value="uzdrowiciel" />
  6. <input type="submit" name="uzdrowiciel" value="uzdrów" />
  7. </form>
  8. <?php
  9.  
  10.  
  11. $level = mysql_query("SELECT `level` FROM uzytkownicy WHERE `nick`='$nick'");
  12. $lvl = mysql_fetch_array($level);
  13.  
  14. $zycie = mysql_query("SELECT `zycie` FROM uzytkownicy WHERE `nick`='$nick'");
  15. $hp = mysql_fetch_array($zycie);
  16.  
  17.  
  18.  
  19. if ($_POST['uzdrow'] == "uzdrowiciel"){
  20. if ($lvl['level'] == 1){
  21. echo "uzdrowiono za 50 złota. Twoje życie teraz wynosi 100.";
  22. mysql_query("update uzytkownicy set zycie =100, zloto=`zloto`-50 WHERE nick='$nick'")or die(mysql_error());
  23.  
  24. }
  25. }
  26.  
  27.  
  28. ?>
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.