Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Błąd w kodzie
Neon12345
post 21.05.2010, 22:46:47
Post #1





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 2.04.2010
Skąd: Wrocław

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


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. }


Ten post edytował Neon12345 22.05.2010, 22:22:26
Go to the top of the page
+Quote Post
tehaha
post 21.05.2010, 22:59:29
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


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
Go to the top of the page
+Quote Post
Neon12345
post 22.05.2010, 00:39:53
Post #3





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 2.04.2010
Skąd: Wrocław

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


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. }
Go to the top of the page
+Quote Post
tehaha
post 22.05.2010, 10:39:31
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


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
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: 12.06.2025 - 19:35