Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]sprawdzenie ilości czy wystarczy i update ceny
Forum PHP.pl > Forum > Przedszkole
pajurpl
Witam, mam kod sklepu poniżej i chce wstawić w nim sprawdzanie czy dana ilość monet wystarczy do kupna przedmiotu jeżeli starczy to zaktualizuje stan ilości monet o cenę zakupionego przedmiotu i wyśle do bazy przedmiot z zapytania 'buy' z market_buy_step.php a jak nie starczy to wyskoczy jakiś tam komunikat, że nie posiada zbyt mało monet

i teraz w którym miejscu by to dobrze umieścić i jak by to miało wyglądać


market.php

  1. <?php
  2. if(isset($_SESSION['zalogowany'])) {
  3. //nr1
  4. ?>
  5. <?php
  6. $id=$_SESSION['username'];
  7. $result3 = mysql_query("SELECT * FROM accounts where username='$id'");
  8. while($row3 = mysql_fetch_array($result3))
  9. {
  10. $mhpoints=$row3['mhpoints'];
  11. }
  12. ?>
  13. <table border="0" align="center" cellpadding="0">
  14. <tr>
  15. <td>M.H Coins:</td>
  16. <td><b><?php echo $mhpoints ?> <img src="image/coins.png" width="18" height="13" /></b></td>
  17. </tr>
  18. </table>
  19. <?php
  20.  
  21. $serwer_bazy = "localhost";
  22. $login_bazy = "root";
  23. $haslo_bazy = "password";
  24. $nazwa_bazy = "market";
  25. mysql_connect("$serwer_bazy","$login_bazy","$haslo_bazy") or die ("could not connect to mysql");
  26. mysql_query('SET CHARSET utf8');
  27. mysql_select_db("$nazwa_bazy") or die ("no databasez");
  28.  
  29. $wynik = mysql_query("SELECT * FROM goldrewards ORDER BY id")
  30. or die('Błąd zapytania');
  31.  
  32.  
  33. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  34.  
  35. while($r = mysql_fetch_assoc($wynik)) {
  36. $itemid = $r['itemid'];
  37. $name = $r['name'];
  38. $picturepath = $r['picturepath'];
  39. $description = $r['description'];
  40. $cost = $r['cost'];
  41. $itemstack_id = $r['itemstack_id'];
  42.  
  43. echo "<form method='POST' action='market_step_buy.php'>
  44. <table cellspacing='20' align='center'>
  45. <tr >
  46. <td><input type='hidden' name='itemid' value='".$itemid." '/>
  47. <input type='hidden' name='itemstack_id' value='".$itemstack_id."'/></td>
  48. <td width='250'><img src='".$picturepath."' /><br />
  49. <b>".$name."</b><input type='hidden' value='".$name." '/><br />
  50. ".$description."<input type='hidden' value='".$description."'/></td>
  51. <td>".$cost."<input type='hidden' value='".$cost."'/>
  52. <img src='image/coins.png' width='18' height='13' /></td>
  53.  
  54. <td><input type='image' src='image/buy.png'></td>
  55. </tr>
  56. </table>
  57. </form>";
  58. }
  59. ?>
  60.  
  61. <?
  62. } else
  63. {
  64. echo "<p class='error'>Strona dosępna po zalogowaniu.</p>" ;
  65. };
  66. ?>



market_step_buy.php

  1. <?php
  2. if(isset($_SESSION['zalogowany'])) {
  3. //nr1
  4. ?>
  5. <?php if ($_POST['buy']==false): ?>
  6. <?php
  7. $id=$_SESSION['username'];
  8. $query ="SELECT * FROM accounts,characters WHERE accounts.accountID=characters.ownerID AND username='$id'";
  9.  
  10. $result = mysql_query($query) or die(mysql_error());
  11. // Print out the contents of each row into a table
  12. echo "<p>Twoje Postacie:</p>";
  13. echo "<select size=1 name=char_receiver>";
  14. while($row = mysql_fetch_array($result)){
  15. $charname[1] = $row['charname'];
  16. $characterID[1] = $row['CharacterID'];
  17. echo '<option>ID:&nbsp;'.$characterID[1].' &nbsp; &nbsp;Nick:&nbsp;'.$charname[1].'</option>';
  18. }
  19. echo "</select>";
  20.  
  21.  
  22. ?>
  23.  
  24. <form method='POST' action='market_step_buy.php' >
  25. <table cellspacing="10" align="center">
  26. <tr>
  27. <td><input type="hidden" name="item1" value="<?php echo $_POST['itemid'] ?>"/></td>
  28. <td><input type="hidden" name="stack1" value="<?php echo $_POST['itemstack_id']?>"/></td>
  29. </tr>
  30. <tr>
  31. <td>Wpisz ID Postaci:</td>
  32. </tr>
  33. <tr>
  34. <td><input type="text" name="char_receiver" value="" onkeyup="this.value=this.value.replace(/\D/g,'')"/></td>
  35. </tr>
  36. <tr>
  37. <td><p class="info">*Wpisz powyżej ID postaci na, która ma być wysłany przedmiot np. 2)<br />*ID znajduje się w liście powyżej.</p></td>
  38. </tr>
  39. </table>
  40. <table>
  41. <tr align="center">
  42. <td><input type='submit' name="buy" value='Kup'></td>
  43. </tr>
  44. </table>
  45. </form>
  46. <?php endif; ?>
  47.  
  48. <?php
  49. if (isset($_POST['buy']))
  50. {
  51. // odbieramy dane z formularza
  52. $item1 = $_POST['item1']; // ID Wysyłanego Itemu
  53. $stack1 = $_POST['stack1']; //Przedmiot w 1 Slocie Delivery
  54. $item2 = "0"; //ID 2 Itemu w Delivery
  55. $stack2 = "0"; //Slot numer 2 w Delivery
  56. $item3 = "0"; //ID 3 Itemu w Delivery
  57. $stack3 = "0"; //Slot numer 3 w Delivery
  58. $item4 = "0"; //ID 4 Itemu w Delivery
  59. $stack4 = "0"; //Slot numer 4 w Delivery
  60. $item5 = "0";//ID 5 Itemu w Delivery
  61. $stack5 = "0"; //Slot numer 5 w Delivery
  62. $charid_SENDER = '2'; // ID Postaci z której jest wysyłany Przedmiot
  63. $name_SENDER = 'Heroes Sklep'; //Nazwa Wiadomości u postaci z której była wysłany item
  64. $charid_RECEIVER = $_POST['char_receiver']; // ID Postaci, która ma dostać przedmiot
  65. $name_RECEIVER = 'Przedmiot z PD Sklepu'; //Nazwa Wiadomości którą dostanie postac z itemem
  66. $gold_REQUIRED = '0'; //Ilość wymaganego golda do odebrania wiadomości/itemu
  67.  
  68. if($item1 and $stack1) {
  69.  
  70. // łączymy się z bazą danych
  71. $connection = @mysql_connect('localhost', 'root', 'password')
  72. or die('Brak połączenia z serwerem MySQL');
  73. $db = @mysql_select_db('openheroes', $connection)
  74. or die('Nie mogę połączyć się z bazą danych');
  75.  
  76. // dodajemy rekord do bazy
  77. $ins = @mysql_query("INSERT INTO mailbox SET item1='$item1', stack1='$stack1', charid_SENDER='$charid_SENDER', name_SENDER='$name_SENDER', charid_RECEIVER='$charid_RECEIVER', name_RECEIVER='$name_RECEIVER', gold_REQUIRED='$gold_REQUIRED', item2='$item2', stack2='$stack2', item3='$item3', stack3='$stack3', item4='$item4', stack4='$stack4', item5='$item5', stack5='$stack5'");
  78.  
  79. if($ins) echo "<p class='success'>Przedmiot został wysłany na Delivery.</p>";
  80. else echo "Błąd nie udało się dodać nowego rekordu";
  81.  
  82. mysql_close($connection);
  83. }
  84. }
  85.  
  86. ?>
  87.  
  88. <?
  89. } else
  90. {
  91. echo "<p class='error'>Strona dosępna po zalogowaniu.</p>" ;
  92. };
  93. ?>
Turson
  1. while($row3 = mysql_fetch_array($result3))
  2. {
  3. $mhpoints=$row3['mhpoints'];
  4. }

Tutaj nadpisujesz sobie zmienną. Z zapytania jednak wnioskuję, że zapytanie zwróci ci max 1 rekord więc petla w takim razie niepotrzebna.

W pliku pierwszym odzielaj HTML od PHP jak ma to miejsce w drugim.

Co do głównego pytania tematu, to nie chce mi sie analiwac 150 linijek kodu zeby napisac jeden warunek. Jeżeli napisales tyle to czemu 1 warunek sprawia klopot?
aniolekx
gdyby to było napisane w zgodzie ze wzorcem MVC to bym ci napisał ze w odpowiednim Modelu, ale, ze nie jest to wrzuć to gdziekolwiek biggrin.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.