Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Mini sklep, kupowanie.
Forum PHP.pl > Forum > Przedszkole
kurczak610
Mam sklep i gdy nie mialem rang cena byla 1 i wszystko bylo ok. wyswietlało się:
Znajdziesz kod w zamowieniach!

Ale zrobiłem ze z wyzsza ranga ceny są niższe i pisze tak
Znajdziesz kod w zamówieniach!Brak nagrody!

Punkty odejmuje dobrze tylko ten tekst coś jest zle.
Oto kod:
  1. <?php
  2. $ranga=mysql_query("SELECT ranga,rangamin,rangamax FROM users1 WHERE id='".$_SESSION['userid']."'") or die(mysql_error());
  3. $pokazranga = mysql_fetch_array($ranga);
  4.  
  5.  
  6. $queryshop=mysql_query("SELECT * FROM shop ORDER BY id") or die(mysql_error());
  7. while ($rowshop = mysql_fetch_array($queryshop))
  8. {
  9.  
  10. $staty=mysql_query("SELECT boughtthingtoday,limitboughtthingtoday,points,partie,ranga FROM users1 WHERE id='".$_SESSION['userid']."'") or die(mysql_error());
  11. $pokazstaty=mysql_fetch_array($staty);
  12.  
  13.  
  14. switch($pokazstaty['ranga'])
  15. {
  16. case 1:
  17. $min = $rowshop['price'];
  18. break;
  19. case 2:
  20. $min = $rowshop['price'];
  21. break;
  22. case 3:
  23. $min = $rowshop['price'];
  24. break;
  25. case 4:
  26. $min = $rowshop['pricevip'];
  27. break;
  28. case 5:
  29. $min = $rowshop['pricesupervip'];
  30. break;
  31. case 6:
  32. $min = $rowshop['pricesupervip'];
  33. break;
  34. case 7:
  35. $min = $rowshop['pricesupervip'];
  36. break;
  37. }
  38.  
  39. $querycodes=mysql_query("SELECT * FROM codes$rowshop[id] WHERE available=1") or die(mysql_error());
  40. $amount = mysql_num_rows($querycodes);
  41.  
  42. if($amount==0)
  43. $message = 'Brak nagrody!';
  44.  
  45. elseif($min>$pokazstaty['points'])
  46. $message = 'Masz za mało pktów!';
  47.  
  48. elseif($pokazstaty['limitboughtthingtoday']==$pokazstaty['boughtthingtoday'])
  49. $message = 'Limit się skończył!';
  50.  
  51. else
  52. {
  53.  
  54. switch($pokazstaty['ranga'])
  55. {
  56. case 1:
  57. $cena = $rowshop['price'];
  58. break;
  59. case 2:
  60. $cena = $rowshop['price'];
  61. break;
  62. case 3:
  63. $cena = $rowshop['price'];
  64. break;
  65. case 4:
  66. $cena = $rowshop['pricevip'];
  67. break;
  68. case 5:
  69. $cena = $rowshop['pricesupervip'];
  70. break;
  71. case 6:
  72. $cena = $rowshop['pricesupervip'];
  73. break;
  74. case 7:
  75. $cena = $rowshop['pricesupervip'];
  76. break;
  77. }
  78. mysql_query("UPDATE users1 SET points=points-".$cena.", boughtthingtoday=boughtthingtoday+1 WHERE id=$_SESSION[userid]") or die(mysql_error());
  79.  
  80. $querybuycodes=mysql_query("SELECT * FROM codes$_GET[id] WHERE available=1 LIMIT 1") or die(mysql_error());
  81. $rowbuycodes = mysql_fetch_array($querybuycodes);
  82. echo "Kod znajdziesz w zamówieniach!";
  83. mysql_query("DELETE FROM codes$_GET[id] WHERE id=$rowbuycodes[id] LIMIT 1") or die(mysql_error());
  84. mysql_query("INSERT INTO zamowienia VALUES ('NULL','$_SESSION[username]','$rowshop[name]','Sklep','$rowbuycodes[code]','".date("Y-m-d", time())."','".date("H:i:s", time())."')");
  85. }
  86. }
  87. echo "$message";
  88. ?>


Co jest źle??
MateuszS
Co to za tabela codes$rowshop[id] questionmark.gif Nic dziwnego ze $amount = 0 ;>
kurczak610
No bo to jest sklep do kodów doładowujacych telefon.
Tam dodaje kody, i gdy ktos kupi to liczy czy są kody tongue.gif
Spawnm
ale czy istnieje tabela codes$rowshop[id] ? bo w tym miejscu daje się jej nazwe .
daj echo $rowshop[id] i zobacz w bazie czy masz tabelę codes$rowshop[id]
Pawel_W
pozamieniaj pare rzeczy, kod będzie krótszy i bardziej przejrzysty, np:

  1. <?php
  2. switch($pokazstaty['ranga'])
  3. {
  4. case 1: case 2: case 3:
  5. $min = $rowshop['price'];
  6. break;
  7. case 4:
  8. $min = $rowshop['pricevip'];
  9. break;
  10. case 5: case 6: case 7:
  11. $min = $rowshop['pricesupervip'];
  12. break;}
  13. ?>

zamiast
  1. <?php
  2. switch($pokazstaty['ranga'])
  3. {
  4. case 1:
  5. $min = $rowshop['price'];
  6. break;
  7. case 2:
  8. $min = $rowshop['price'];
  9. break;
  10. case 3:
  11. $min = $rowshop['price'];
  12. break;
  13. case 4:
  14. $min = $rowshop['pricevip'];
  15. break;
  16. case 5:
  17. $min = $rowshop['pricesupervip'];
  18. break;
  19. case 6:
  20. $min = $rowshop['pricesupervip'];
  21. break;
  22. case 7:
  23. $min = $rowshop['pricesupervip'];
  24. break;
  25. }
  26. ?>
kurczak610
Nie mam takiej tabeli tongue.gif mam link i ?id=1
I wtedy powinno to liczyc z tabeli codes1

Tzn. Mam tabele
codes1
Andaramuxo
A nie coś w tym stylu?
Kod
codes".$rowshop[id] "
Spawnm
to po co stosować " " ...
prędzej mysql_query("SELECT * FROM `codes{$rowshop['id']}` WHERE available=1")
MateuszS
Nie mozesz miec nazwy zmiennej w nazwie tabeli bo bys musial caly czas tworzyc tabele ktora w nazwie by miala zawartosc zmiennej.
Andaramuxo
Cytat(Spawnm @ 18.06.2009, 22:02:48 ) *
to po co stosować " " ...
prędzej mysql_query("SELECT * FROM `codes{$rowshop['id']}` WHERE available=1")

To powinno działać bo sam testowałem.
kurczak610
Skrypt działa tylko pisze tak:
Kod znajdziesz w zamowieniach!Brak nagrody!.

A tabeli mam 10 (codes1, codes2 i tak do 10 ;P )
Spawnm
  1. <?php
  2. $querycodes=mysql_query("SELECT * FROM codes$rowshop[id] WHERE available=1") or die(mysql_error());
  3. $amount = mysql_num_rows($querycodes);
  4.  
  5. if($amount==0)
  6. $message = 'Brak nagrody!';
  7. ?>

num_rows wynosi 0. zobacz czy są parametry spełniające warunek, zobacz czy nie ma gdzieś literówki i czy $rowshop[id]
wynosi 1 .
Andaramuxo
Kod
if($amount==0)
$message = 'Brak nagrody!';

elseif($min>$pokazstaty['points'])
$message = 'Masz za mało pktów!';

elseif($pokazstaty['limitboughtthingtoday']==$pokazstaty['boughtthingtoday'])
$message = 'Limit się skończył!';
kurczak610
Ale jak w tabeli codes1 nic nie mam to wyskakuje brak nagrody, a jak jest to kod znajdziesz w zamowieniach!brak nagrody!

Ale tak sie stało gdy dodałem ceny dla osób z wyższą rangą.
Andaramuxo
A może zamknij połączenie mysql? mysql_close
Spawnm
Cytat(Andaramuxo @ 19.06.2009, 19:15:09 ) *
A może zamknij połączenie mysql? mysql_close

I podskocz na jednej nodze blinksmiley.gif

mysql_close nic nie zmieni , nawet nie jest obowiązkowe ...
kurczak610
To co zrobić??
Andaramuxo
A tu
Kod
$querycodes=mysql_query("SELECT * FROM codes$rowshop[id] WHERE available=1") or die(mysql_error());
$amount = mysql_num_rows($querycodes);

nie powinno być po tym pętli while, bo jak nie ma, to chyba zmienna $amount ma wartość zawsze zero i wyskakuje taki komunikat, to są moje przypuszczenia, nie zaszkodzi spróbować.
A jeżeli po dodaniu rang powstał błąd, to coś z nimi jest nie tak.
Spawnm
a co ma while do num_rows tongue.gif

z innej beczki to szybszym rozwiązaniem będzie

  1. <?php
  2. $querycodes=mysql_query("SELECT count(*) FROM codes{$rowshop['id']} WHERE available=1") or die(mysql_error());
  3. $amount = mysql_result($querycodes,0);
  4. ?>
kurczak610
Na poczatku byla 1 cena, i bylo tylko tak:

  1. <?php
  2. if($_SESSION['logged']!=0)
  3. {
  4. ?>
  5. <?php
  6. $ranga=mysql_query("SELECT ranga,rangamin,rangamax FROM users1 WHERE id='".$_SESSION['userid']."'") or die(mysql_error());
  7. $pokazranga = mysql_fetch_array($ranga);
  8.  
  9.  
  10. $queryshop=mysql_query("SELECT * FROM shop ORDER BY id") or die(mysql_error());
  11. while ($rowshop = mysql_fetch_array($queryshop))
  12. {
  13.  
  14. $staty=mysql_query("SELECT boughtthingtoday,limitboughtthingtoday,points,partie,ranga FROM users1 WHERE id='".$_SESSION['userid']."'") or die(mysql_error());
  15. $pokazstaty=mysql_fetch_array($staty);
  16.  
  17.  
  18. $querycodes=mysql_query("SELECT * FROM codes$rowshop[id] WHERE available=1") or die(mysql_error());
  19. $amount = mysql_num_rows($querycodes);
  20.  
  21. if($amount==0) {
  22. $message = 'Brak nagrody!';
  23. }
  24.  
  25. elseif($rowshop['price']>$pokazstaty['points']) {
  26. $message = 'Masz za mało pktów!';
  27. }
  28.  
  29. elseif($pokazstaty['limitboughtthingtoday']==$pokazstaty['boughtthingtoday']) {
  30. $message = 'Limit się skończył!';
  31. }
  32.  
  33. else
  34. {
  35. mysql_query("UPDATE users1 SET points=points-$rowshop['price'], boughtthingtoday=boughtthingtoday+1 WHERE id=$_SESSION[userid]") or die(mysql_error());
  36.  
  37. $querybuycodes=mysql_query("SELECT * FROM codes$_GET[id] WHERE available=1 LIMIT 1") or die(mysql_error());
  38. $rowbuycodes = mysql_fetch_array($querybuycodes);
  39. echo "Kod znajdziesz w zamówieniach!";
  40. mysql_query("DELETE FROM codes$_GET[id] WHERE id=$rowbuycodes[id] LIMIT 1") or die(mysql_error());
  41. mysql_query("INSERT INTO zamowienia VALUES ('NULL','$_SESSION[username]','$rowshop[name]','Sklep','$rowbuycodes[code]','".date("Y-m-d", time())."','".date("H:i:s", time())."')");
  42. }
  43. }
  44. echo "$message";
  45. ?>


I dodałem to na rangi i sie zle zrobiło ;/
Spawnm
tak z innej beczki:
$queryshop=mysql_query("SELECT * FROM shop ORDER BY id") or die(mysql_error());
//...
$querycodes=mysql_query("SELECT * FROM codes$rowshop[id] WHERE available=1") or die(mysql_error());

czy id nie jest primary key ? jeśli tak to wiesz że możesz mieć tylko jedno pole o id 1.
dawaj echo $rowshop[id];
przed query i zobacz czy jakiekolwiek '1' ci wyskoczy smile.gif
kurczak610
Nie pisze nic;p
Zmieniłem troche skrypt i jest ok tongue.gif
Dałem wszedzie $_GET[id] i jest ok smile.gif Dam pomógł Spawnm
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.