Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Błąd w kodzie
Forum PHP.pl > Forum > Przedszkole
Neon12345
Witam , otóż mam skrypt sklep i próbuje zrobić zabezpieczenie w którym nie można kupić dwóch tych samych typów rzeczy , lecz nie działa poprawnie. Gdy kupię koszulkę , a potem chcę kupić fortkę wyskakuje że nie można kupić 2 tych samych koszulek. Gdzie mam błąd?

  1. if($_GET['buy']){
  2.  
  3. $cc = mysql_fetch_array(mysql_query("SELECT * FROM shop_save WHERE user='".$user."'"));
  4. $c = mysql_fetch_array(mysql_query("SELECT * FROM shop WHERE id=".$_GET['buy']." "));
  5. $query = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE user='$user'"));
  6. $b = mysql_fetch_array(mysql_query("SELECT * FROM shop_save WHERE typ='Buty' AND user='".$user."'"));
  7. $f = mysql_fetch_array(mysql_query("SELECT * FROM shop_save WHERE typ='Frotka' AND user='".$user."'"));
  8. $k = mysql_fetch_array(mysql_query("SELECT * FROM shop_save WHERE typ='Koszulka' AND user='".$user."'"));
  9. $s = mysql_fetch_array(mysql_query("SELECT * FROM shop_save WHERE typ='Spodnie' AND user='".$user."'"));
  10.  
  11. if($query['kasa'] < $c['cena']){
  12. <script type='text/javascript'>window.alert('Nie masz tyle pieniędzy!');document.location.href = 'shop.php';</script>
  13. "; die();
  14. }
  15. if($query['umiejetnosci'] < $c['skills'])
  16. {
  17. <script type='text/javascript'>window.alert('Nie masz tyle umiejętności!');document.location.href = 'shop.php';</script>
  18. "; die();
  19. }
  20. if($k['stan_koszulka'] == 1)
  21. {
  22. <script type='text/javascript'>window.alert('Nie możesz kupić dwóch koszulek!');document.location.href = 'shop.php';</script>
  23. "; die();
  24. }
  25. if($b['stan_buty'] == 1)
  26. {
  27. <script type='text/javascript'>window.alert('Nie możesz kupić dwóch par butów!');document.location.href = 'shop.php';</script>
  28. "; die();
  29. }
  30. if($f['stan_frotka'] == 1)
  31. {
  32. <script type='text/javascript'>window.alert('Nie możesz kupić dwóch Frotek!');document.location.href = 'shop.php';</script>
  33. "; die();
  34. }
  35. if($s['stan_spodnie'] == 1)
  36. {
  37. <script type='text/javascript'>window.alert('Nie możesz kupić dwóch par Spodenek!');document.location.href = 'shop.php';</script>
  38. "; die();
  39. }
  40. else{
  41. $cc = mysql_fetch_array(mysql_query("SELECT * FROM shop_save WHERE user='$user'"));
  42. $c = mysql_fetch_array(mysql_query("SELECT * FROM shop WHERE id='$_GET[buy]'"));
  43. $kk = mysql_fetch_array(mysql_query("SELECT * FROM shop WHERE id='$_GET[buy]' AND typ='Koszulka'"));
  44. $ss = mysql_fetch_array(mysql_query("SELECT * FROM shop WHERE id='$_GET[buy]' AND typ='Spodnie'"));
  45. $ff = mysql_fetch_array(mysql_query("SELECT * FROM shop WHERE id='$_GET[buy]' AND typ='Frotka' "));
  46. $bb = mysql_fetch_array(mysql_query("SELECT * FROM shop WHERE id='$_GET[buy]' AND typ='Buty' "));
  47. $query = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE user='$user'"));
  48. $skills = $c['atak'] + $c['obrona'] + $c['strzaly'] + $c['rozgrywanie'] + $c['skutecznosc'] + $c['refleks'] + $c['podania'] + $c['kondycja'];
  49. mysql_query("INSERT INTO `shop_save` ( `nazwa`, `atak`, `kondycja`, `rozgrywanie`, `skutecznosc`, `refleks`, `podania`, `strzaly`, `obrona`, `user`, `typ`, `warty`, `skills`) values ('".$c['nazwa']."', ".$c['atak'].", ".$c['kondycja'].", ".$c['rozgrywanie'].", ".$c['skutecznosc'].", ".$c['refleks'].", ".$c['podania'].", ".$c['strzaly'].", ".$c['obrona'].", '".$query['user']."', '".$c['typ']."', ".$c['warty'].", ".$skills.") ") or die (mysql_error());
  50. mysql_query("UPDATE users SET kasa=kasa-'$c[cena]' WHERE user='$user' ");
  51. if ($ff['typ'] == 'Frotka') {
  52. mysql_query("UPDATE shop_save SET stan_frotka='1' WHERE typ='Frotka' AND user='$user' ") or die (mysql_error());
  53. }
  54. if ($kk['typ'] == 'Koszulka') {
  55. mysql_query("UPDATE shop_save SET stan_koszulka='1' WHERE typ='Koszulka' AND user='$user' ") or die (mysql_error());
  56. }
  57. if ($ss['typ'] == 'Spodnie') {
  58. mysql_query("UPDATE shop_save SET stan_spodnie='1' WHERE typ='Spodnie' AND user='$user' ") or die (mysql_error());
  59. }
  60. if ($bb['typ'] == 'Buty') {
  61. mysql_query("UPDATE shop_save SET stan_frotka='1' WHERE typ='Buty' AND user='$user' ") or die (mysql_error());
  62. }
  63. <script type='text/javascript'>window.alert('Wyposażyłeś się w ".$c['nazwa']." !');document.location.href = 'items.php';</script>
  64. ";
  65. }
  66.  
  67. }


Przerobiłem na coś takiego ale dalej nic

  1. if($_GET['buy']){
  2.  
  3. $cc = mysql_fetch_array(mysql_query("SELECT * FROM shop_save WHERE user='".$user."'"));
  4. $c = mysql_fetch_array(mysql_query("SELECT * FROM shop WHERE id=".$_GET['buy']." "));
  5. $query = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE user='$user'"));
  6. $b = mysql_fetch_array(mysql_query("SELECT * FROM shop_save WHERE typ='Buty' AND user='".$user."'"));
  7. $f = mysql_fetch_array(mysql_query("SELECT * FROM shop_save WHERE typ='Frotka' AND user='".$user."'"));
  8. $k = mysql_fetch_array(mysql_query("SELECT * FROM shop_save WHERE typ='Koszulka' AND user='".$user."'"));
  9. $s = mysql_fetch_array(mysql_query("SELECT * FROM shop_save WHERE typ='Spodnie' AND user='".$user."'"));
  10.  
  11. if($query['kasa'] < $c['cena']){
  12. <script type='text/javascript'>window.alert('Nie masz tyle pieniędzy!');document.location.href = 'shop.php';</script>
  13. "; die();
  14. }
  15. if($query['umiejetnosci'] < $c['skills'])
  16. {
  17. <script type='text/javascript'>window.alert('Nie masz tyle umiejętności!');document.location.href = 'shop.php';</script>
  18. "; die();
  19. }
  20.  
  21.  
  22.  
  23.  
  24. else{
  25. $cc = mysql_fetch_array(mysql_query("SELECT * FROM shop_save WHERE user='$user'"));
  26. $c = mysql_fetch_array(mysql_query("SELECT * FROM shop WHERE id='$_GET[buy]'"));
  27. $kk = mysql_fetch_array(mysql_query("SELECT * FROM shop WHERE id='$_GET[buy]' AND typ='Koszulka'"));
  28. $ss = mysql_fetch_array(mysql_query("SELECT * FROM shop WHERE id='$_GET[buy]' AND typ='Spodnie'"));
  29. $ff = mysql_fetch_array(mysql_query("SELECT * FROM shop WHERE id='$_GET[buy]' AND typ='Frotka' "));
  30. $bb = mysql_fetch_array(mysql_query("SELECT * FROM shop WHERE id='$_GET[buy]' AND typ='Buty' "));
  31. $id = rand(10000000,90000000);
  32. $query = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE user='$user'"));
  33. $skills = $c['atak'] + $c['obrona'] + $c['strzaly'] + $c['rozgrywanie'] + $c['skutecznosc'] + $c['refleks'] + $c['podania'] + $c['kondycja'];
  34. mysql_query("INSERT INTO `shop_save` ( `id`, `nazwa`, `atak`, `kondycja`, `rozgrywanie`, `skutecznosc`, `refleks`, `podania`, `strzaly`, `obrona`, `user`, `typ`, `warty`, `skills`) values ('".$id."', '".$c['nazwa']."', ".$c['atak'].", ".$c['kondycja'].", ".$c['rozgrywanie'].", ".$c['skutecznosc'].", ".$c['refleks'].", ".$c['podania'].", ".$c['strzaly'].", ".$c['obrona'].", '".$query['user']."', '".$c['typ']."', ".$c['warty'].", ".$skills.") ") or die (mysql_error());
  35. mysql_query("UPDATE users SET kasa=kasa-'$c[cena]' WHERE user='$user' ");
  36. if($ff['stan_frotka'] == 1){
  37. if ($f['typ'] == 'Frotka') {
  38. <script type='text/javascript'>window.alert('Nie możesz kupić dwóch Frotek!')ocument.location.href = 'shop.php';</script>
  39. "; die();
  40. }
  41. mysql_query("UPDATE shop_save SET stan_frotka='1' WHERE typ='Frotka' AND user='$user' ") or die (mysql_error());
  42. }
  43. if ($kk['typ'] == 'Koszulka') {
  44. if($k['stan_koszulka'] == 1)
  45. {
  46. <script type='text/javascript'>window.alert('Nie możesz kupić dwóch koszulek!');document.location.href = 'shop.php';</script>
  47. "; die();
  48. }
  49. mysql_query("UPDATE shop_save SET stan_koszulka='1' WHERE typ='Koszulka' AND user='$user' ") or die (mysql_error());
  50. }
  51. if ($ss['typ'] == 'Spodnie') {
  52. if($s['stan_spodnie'] == 1)
  53. {
  54. <script type='text/javascript'>window.alert('Nie możesz kupić dwóch par Spodenek!');document.location.href = 'shop.php';</script>
  55. "; die();
  56. }
  57. mysql_query("UPDATE shop_save SET stan_spodnie='1' WHERE typ='Spodnie' AND user='$user' ") or die (mysql_error());
  58. }
  59. if ($bb['typ'] == 'Buty') {
  60. if($b['stan_buty'] == 1)
  61. {
  62. <script type='text/javascript'>window.alert('Nie możesz kupić dwóch par butów!');document.location.href = 'shop.php';</script>
  63. "; die();
  64. }
  65. mysql_query("UPDATE shop_save SET stan_buty='1' WHERE typ='Buty' AND user='$user' ") or die (mysql_error());
  66. }
  67. <script type='text/javascript'>window.alert('Wyposażyłeś się w ".$c['nazwa']." !');document.location.href = 'items.php';</script>
  68. ";
  69. }
  70.  
  71. }
tehaha
ale rzeźnia....5-6 połączeń żeby wyciągnąć dane z jednej tabeli? a jak będziesz miał 50 typów to zrobisz 50 połączeń, nie zrozum mnie źle ale nie ma co szukać tu błędu bo ten cały kod jest błędem, lepiej zacznij od początku
Neon12345
Lepiej?:

  1. if($_GET['buy']){
  2.  
  3. $cc = mysql_fetch_array(mysql_query("SELECT * FROM shop_save WHERE user='".$user."'"));
  4. $c = mysql_fetch_array(mysql_query("SELECT * FROM shop WHERE id=".$_GET['buy']." "));
  5. $query = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE user='$user'"));
  6.  
  7.  
  8. if($query['kasa'] < $c['cena']){
  9. <script type='text/javascript'>window.alert('Nie masz tyle pieniędzy!');document.location.href = 'shop.php';</script>
  10. "; die();
  11. }
  12. if($query['umiejetnosci'] < $c['skills'])
  13. {
  14. <script type='text/javascript'>window.alert('Nie masz tyle umiejętności!');document.location.href = 'shop.php';</script>
  15. "; die();
  16. }
  17. if($cc['stan_koszulka'] == 1)
  18. {
  19. <script type='text/javascript'>window.alert('Nie możesz kupić dwóch koszulek!');document.location.href = 'shop.php';</script>
  20. "; die();
  21. }
  22. if($cc['stan_buty'] == 1)
  23. {
  24. <script type='text/javascript'>window.alert('Nie możesz kupić dwóch par butów!');document.location.href = 'shop.php';</script>
  25. "; die();
  26. }
  27. if($cc['stan_frotka'] == 1)
  28. {
  29. <script type='text/javascript'>window.alert('Nie możesz kupić dwóch Frotek!');document.location.href = 'shop.php';</script>
  30. "; die();
  31. }
  32. if($cc['stan_spodnie'] == 1)
  33. {
  34. <script type='text/javascript'>window.alert('Nie możesz kupić dwóch par Spodenek!');document.location.href = 'shop.php';</script>
  35. "; die();
  36. }
  37. else{
  38. $skills = $c['atak'] + $c['obrona'] + $c['strzaly'] + $c['rozgrywanie'] + $c['skutecznosc'] + $c['refleks'] + $c['podania'] + $c['kondycja'];
  39. mysql_query("INSERT INTO `shop_save` ( `nazwa`, `atak`, `kondycja`, `rozgrywanie`, `skutecznosc`, `refleks`, `podania`, `strzaly`, `obrona`, `user`, `typ`, `warty`, `skills`) values ('".$c['nazwa']."', ".$c['atak'].", ".$c['kondycja'].", ".$c['rozgrywanie'].", ".$c['skutecznosc'].", ".$c['refleks'].", ".$c['podania'].", ".$c['strzaly'].", ".$c['obrona'].", '".$query['user']."', '".$c['typ']."', ".$c['warty'].", ".$skills.") ") or die (mysql_error());
  40. mysql_query("UPDATE users SET kasa=kasa-'$c[cena]' WHERE user='$user' ");
  41.  
  42. if ($cc['typ'] == 'Frotka') {
  43. mysql_query("UPDATE shop_save SET stan_frotka='1' WHERE typ='Frotka' AND user='$user' ") or die (mysql_error());
  44. }
  45. if ($cc['typ'] == 'Koszulka') {
  46. mysql_query("UPDATE shop_save SET stan_koszulka='1' WHERE typ='Koszulka' AND user='$user' ") or die (mysql_error());
  47. }
  48. if ($cc['typ'] == 'Spodnie') {
  49. mysql_query("UPDATE shop_save SET stan_spodnie='1' WHERE typ='Spodnie' AND user='$user' ") or die (mysql_error());
  50. }
  51. if ($cc['typ'] == 'Buty') {
  52. mysql_query("UPDATE shop_save SET stan_frotka='1' WHERE typ='Buty' AND user='$user' ") or die (mysql_error());
  53. }
  54. <script type='text/javascript'>window.alert('Wyposażyłeś się w ".$c['nazwa']." !');document.location.href = 'items.php';</script>
  55. ";
  56. }
  57.  
  58. }
tehaha
no lepiej ale i tak słabo, rzecz w tym, że wielokrotnie powtarzasz prawie identyczny kod, zamiast np używać pętli lub innych funkcji, przykładowo linijki 48-58 mógłbyś zastąpić:
  1. $types = array('Frotka', 'Koszulka', 'Spodnie', 'Buty');
  2. if(in_array($cc['typ'], $types))
  3. {
  4. mysql_query("UPDATE shop_save SET stan_frotka='1' WHERE typ='".$cc['typ']."' AND user='$user' ") or die (mysql_error());
  5. }

analogicznie mógłbyś wykonać między linijkami 19-42

Ponadto parząc na to, że danych nie pobierasz w pętli tylko tak jednorazowo to wygląda na to, że dla każdego produktu utworzyłeś oddzielną kolumnę w tabeli, a to też jest nie prawidłowy sposób, więc dobrze było by się cofnąć do zaprojektowania odpowiednio bazy danych,
np.
TABELA PRODUKTY
product_id | product_label | product_desc | product_count

TABELA STAN PRODUKTU
status_id | product_id | status_value

i przykładowe dane:

1 | stan_koszulka | 1
2 | stan_buty | 0
3 | stan_frotka | 1
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.