Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z sklepem
Forum PHP.pl > Forum > Przedszkole
awek520
Witam ponownie.. Pisałem sobie sały skrypt do sklepu.. wszystko działa (chodzi mi o założone, zdjete) pieniądze są pobierane za kupienie jakiegoś przedmiotu..
No ale przedmiot nie wędruje do "przedmioty" - bazy danych, z "przedmioty_sklepy".. Nie wiem o co chodzi.. żadnego błędu nie ma ;/

Oto skrypcior:

  1. <?php
  2. function kup_przedmiot($id) {
  3. $tekst='Niewykonana funkcja!';
  4. $przedmiot=mysql_query("SELECT * FROM przedmioty_sklepy WHERE id=$id LIMIT 1");
  5. if (mysql_num_rows($przedmiot)===1){
  6. $przedmiot=mysql_fetch_assoc($przedmiot);
  7. $gracz=mysql_query("SELECT * FROM users WHERE id=".$_SESSION['id']." LIMIT 1");
  8. $gracz=mysql_fetch_assoc($gracz);
  9. if($gracz['cash']>=$przedmiot['cash']){
  10. $tekst='Przedmiot kupiony!';
  11. mysql_query("INSERT INTO przedmioty ('wlasciciel','nazwa','atak','dex','typ','cash')
  12. VALUES ( ' ".$_SESSION['id']." ' , ' ".$przedmiot['nazwa']." ' , ' ".$przedmiot['atak']. " ' , ' ".$przedmiot['dex']. " ',
  13. ' ".$przedmiot['typ']. " ' , ' ".$przedmiot['cash']. " ')");
  14. mysql_query("UPDATE users SET cash=cash-$przedmiot[cash] WHERE id=$_SESSION[id] LIMIT 1");
  15. }
  16. else {
  17. $tekst='Nie stac Cię na ten przedmiot!';
  18. }
  19. }
  20. return $tekst;
  21. }
  22.  
  23. function zaloz_zdejmij_przedmiot($id) {
  24. $przedmiot=mysql_query("SELECT * FROM przedmioty WHERE id=$id AND wlasciciel=$_SESSION[id] LIMIT 1");
  25. if (mysql_num_rows($przedmiot)===1) {
  26. $przedmiot=mysql_fetch_assoc($przedmiot);
  27. mysql_query("UPDATE przedmioty SET zalozony=1-zalozony WHERE id=$id AND wlasciciel=$_SESSION[id]");
  28. if ($przedmiot['zalozony']==1){
  29. $znak='-';
  30. }
  31. else {
  32. $znak='+';
  33. }
  34. mysql_query("UPDATE users SET atak=atak $znak ($przedmiot[atak]),
  35. dex=dex $znak ($przedmiot[dex]) WHERE id=$_SESSION[id] LIMIT 1");
  36. }
  37. }
  38.  
  39.  
  40. $wynik=mysql_query("SELECT * FROM przedmioty_sklepy ORDER BY id DESC");
  41. echo '<table><tr><td>Nazwa</td><td>Atak</td><td>Obrona</td><td>Cena</td><td>KUP</td></tr>';
  42. while($przedmiot=@mysql_fetch_assoc($wynik)) {
  43. echo '<tr><td>'.$przedmiot['nazwa'].'</td><td>'.$przedmiot['atak'].'</td>
  44. <td>'.$przedmiot['dex'].'</td><td>'.$przedmiot['cash'].'</td>
  45. <td><a href="game.php?a=sklep&id='.$przedmiot['id'].'">KUP</a></td></tr>';
  46. }
  47. echo '</table>';
  48.  
  49. if($_GET['id']!=''){
  50. $informacja=kup_przedmiot($_GET['id']);
  51. }
  52. ?>
  53.  
  54. <br><hr>
  55. <?php
  56. if($informacja!='') echo $informacja;
  57. ?>


na echo : 11 i 14 linijka
INSERT INTO przedmioty ('wlasciciel','nazwa','atak','dex','typ','cash') VALUES ( ' 4 ' , ' szata rycerza ' , ' 2 ' , ' 15 ', ' 4 ' , ' 15 ')
UPDATE users SET cash=cash-15 WHERE id=4 LIMIT 1
nospor
W zaden sposob nie sprawdzasz, czy zapytania sie wykonaly poprawnie, to i bledow nie widzisz....
Tu masz napisane jak wyswietlac ewentualne bledy zapytan
Temat: Jak poprawnie zada pytanie

Kolejna sprawa:
przestan walic spacje na poczatku i na koncu tekstow.... przeciez przez to zmieniasz wartosci wkladane do bazy :/ Nawet jak podajesz liczby to bierzesz je w tekst ze spacją na poczatku i na koncu. Paranoja jakas.
awek520
No ok, sprawdzałem to i nie widzę tutaj żadnego błedu.. : / ale wydaje mi się że coś z tym zapytaniem do bazy w chwili kupienia jest.. ale wyświetla się dobrze
nospor
pokaz kod po poprawkach
awek520
  1. <?php
  2. function kup_przedmiot($id) {
  3. $tekst='Niewykonana funkcja!';
  4. $przedmiot=mysql_query("SELECT * FROM przedmioty_sklepy WHERE id=$id LIMIT 1");
  5. if (mysql_num_rows($przedmiot)===1){
  6. $przedmiot=mysql_fetch_assoc($przedmiot);
  7. $gracz=mysql_query("SELECT * FROM users WHERE id=".$_SESSION['id']." LIMIT 1");
  8. $gracz=mysql_fetch_assoc($gracz);
  9. if($gracz['cash']>=$przedmiot['cash']){
  10. $tekst='Przedmiot kupiony!';
  11. mysql_query("INSERT INTO przedmioty ('wlasciciel','nazwa','atak','dex','typ','cash')
  12. VALUES ('".$_SESSION['id']."','".$przedmiot['nazwa']."','".$przedmiot['atak']."','".$przedmiot['dex']."',
  13. '".$przedmiot['typ']."','".$przedmiot['cash']."')");
  14. mysql_query ("UPDATE users SET cash=cash-$przedmiot[cash] WHERE id=$_SESSION[id] LIMIT 1");
  15. }
  16. else {
  17. $tekst='Nie stac Cię na ten przedmiot!';
  18. }
  19. }
  20. return $tekst;
  21. }
  22.  
  23. function zaloz_zdejmij_przedmiot($id) {
  24. $przedmiot=mysql_query("SELECT * FROM przedmioty WHERE id=$id AND wlasciciel=$_SESSION[id] LIMIT 1");
  25. if (mysql_num_rows($przedmiot)===1) {
  26. $przedmiot=mysql_fetch_assoc($przedmiot);
  27. mysql_query("UPDATE przedmioty SET zalozony=1-zalozony WHERE id=$id AND wlasciciel=$_SESSION[id]");
  28. if ($przedmiot['zalozony']==1){
  29. $znak='-';
  30. }
  31. else {
  32. $znak='+';
  33. }
  34. mysql_query("UPDATE users SET atak=atak $znak($przedmiot[atak]),
  35. dex=dex $znak($przedmiot[dex]) WHERE id=$_SESSION[id] LIMIT 1");
  36. }
  37. }
  38.  
  39. $wynik=mysql_query("SELECT * FROM przedmioty_sklepy ORDER BY id DESC");
  40. echo '<table><tr><td>Nazwa</td><td>Atak</td><td>Obrona</td><td>Cena</td><td>KUP</td></tr>';
  41. while($przedmiot=mysql_fetch_assoc($wynik)) {
  42. echo '<tr><td>'.$przedmiot['nazwa'].'</td><td>'.$przedmiot['atak'].'</td>
  43. <td>'.$przedmiot['dex'].'</td><td>'.$przedmiot['cash'].'</td>
  44. <td><a href="game.php?a=sklep&id='.$przedmiot['id'].'">KUP</a></td></tr>';
  45. }
  46. echo '</table>';
  47.  
  48. if($_GET['id']!=''){
  49. $informacja=kup_przedmiot($_GET['id']);
  50. }
  51. ?>
  52.  
  53. <br><hr>
  54. <?php
  55. if($informacja!='') echo $informacja;
  56. ?>
nospor
facepalmxd.gif
A gdzie sprawdzanie bledow zapytan o czym pisalem na samym poczatku??
awek520
Chodzi Ci np o:

  1. echo "INSERT INTO przedmioty ('wlasciciel','nazwa','atak','dex','typ','cash')
  2. VALUES ('".$_SESSION['id']."','".$przedmiot['nazwa']."','".$przedmiot['atak']."','".$przedmiot['dex']."',
  3. '".$przedmiot['typ']."','".$przedmiot['cash']."')";

?

Dodalem też na początek:
<?php
error_reporting(E_ALL);
ini_set('display_errors','1');
?>

No teraz coś wyszło..

Notice: Undefined index: id in C:\WebServ\httpd\sklep.php on line 55


Notice: Undefined variable: informacja in C:\WebServ\httpd\sklep.php on line 62
nospor
No widzisz jak ladnie...
Dodatkowo miales wyswietlac bledy zapytan... w linku co ci podalem jest doslownie pare banalnych punktow :/ mysql_error() itp
awek520
Dodałem " or die('BŁĄD:'.mysql_error()); " na koniec mysql_query..
______________________________________________________
Zadnych innych błędów nie ma.. sprawdzałem, robiłem var_dump, echo i nic.. wszystko dobrze się wyświetla..


Tego pierwszego problemu już nie ma..

Zrobiłem tak:

  1. if(isset($_GET['id'])){
  2. $informacja=kup_przedmiot($_GET['id']);
  3. }


No ale ciągle jest to:

Notice: Undefined variable: informacja in C:\WebServ\httpd\sklep.php on line 60

  1. <?php
  2. if($informacja!='') echo $informacja;
  3. ?>


No i dalej kupiony przedmiot nie zapisuje się w bazie.. a błędów nie ma żadnych..
nospor
if(!empty($informacja)) echo $informacja;

Pokaz znowu kod po poprawkach, wlacznie z wyswietlaniem bledow bazy, czy oby na pewno dales poprawnie.
awek520
  1. <?php
  2. ini_set('display_errors','1');
  3.  
  4. function kup_przedmiot($id) {
  5. $tekst='Niewykonana funkcja!';
  6. $przedmiot=mysql_query("SELECT * FROM przedmioty_sklepy WHERE id=$id LIMIT 1") or die('BŁĄD:'.mysql_error());
  7. if(mysql_num_rows($przedmiot)===1){
  8. $przedmiot=mysql_fetch_assoc($przedmiot);
  9. $gracz=mysql_query("SELECT * FROM users WHERE id=".$_SESSION['id']." LIMIT 1") or die('BŁĄD:'.mysql_error());
  10. $gracz=mysql_fetch_assoc($gracz);
  11. if($gracz['cash']>=$przedmiot['cash']){
  12. $tekst='Przedmiot kupiony!';
  13. mysql_query("INSERT INTO przedmioty ('wlasciciel','nazwa','atak','dex','typ','cash')
  14. VALUES ('".$_SESSION['id']."','".$przedmiot['nazwa']."','".$przedmiot['atak']."','".$przedmiot['dex']."',
  15. '".$przedmiot['typ']."','".$przedmiot['cash']."')");
  16. mysql_query("UPDATE users SET cash=cash-$przedmiot[cash] WHERE id=$_SESSION[id] LIMIT 1") or die('BŁĄD:'.mysql_error());
  17. }
  18. else {
  19. $tekst='Nie stac Cię na ten przedmiot!';
  20. }
  21. }
  22. return $tekst;
  23. }
  24.  
  25. function sprzedaj_przedmiot($id){
  26. $zapytanie="UPDATE users SET cash=cash+(SELECT ROUND(cash*0.75)
  27. FROM przedmioty WHERE wlasciciel=$_SESSION[id] AND id=$id) WHERE id=$_SESSION[id]";
  28. mysql_query($zapytanie);
  29. $zapytanie="DELETE FROM przedmioty WHERE wlasciciel=$_SESSION[id] AND id=$id";
  30. $odpowiedz=mysql_query($zapytanie);
  31. }
  32.  
  33.  
  34.  
  35.  
  36. function zaloz_zdejmij_przedmiot($id) {
  37. $przedmiot=mysql_query("SELECT * FROM przedmioty WHERE id=$id AND wlasciciel=$_SESSION[id] LIMIT 1") or die('BŁĄD:'.mysql_error());
  38. if(mysql_num_rows($przedmiot)===1) {
  39. $przedmiot=mysql_fetch_assoc($przedmiot);
  40. mysql_query("UPDATE przedmioty SET zalozony=1-zalozony WHERE id=$id AND wlasciciel=$_SESSION[id]") or die('BŁĄD:'.mysql_error());
  41. if($przedmiot['zalozony']==1){
  42. $znak='-';
  43. }
  44. else {
  45. $znak='+';
  46. }
  47. mysql_query("UPDATE users SET atak=atak $znak($przedmiot[atak]),
  48. dex=dex $znak($przedmiot[dex]) WHERE id=$_SESSION[id] LIMIT 1");
  49. }
  50. }
  51.  
  52. $wynik=mysql_query("SELECT * FROM przedmioty_sklepy ORDER BY id DESC") or die('BŁĄD:'.mysql_error());
  53. echo '<table><tr><td>Nazwa</td><td>Atak</td><td>Obrona</td><td>Cena</td><td>KUP</td></tr>';
  54. while($przedmiot=mysql_fetch_assoc($wynik)) {
  55. echo '<tr><td>'.$przedmiot['nazwa'].'</td><td>'.$przedmiot['atak'].'</td>
  56. <td>'.$przedmiot['dex'].'</td><td>'.$przedmiot['cash'].'</td>
  57. <td><a href="game.php?a=sklep&id='.$przedmiot['id'].'">KUP</a></td></tr>';
  58. }
  59. echo '</table>';
  60.  
  61.  
  62.  
  63. if(isset($_GET['id'])){
  64. $informacja=kup_przedmiot($_GET['id']);
  65. }
  66.  
  67. if(!empty($_GET['sprzedaj'])){
  68. sprzedaj_przedmiot($_GET['sprzedaj']);
  69. }
  70. ?>
  71.  
  72. <br><hr>
  73. <?php
  74. if(!empty($informacja)) echo $informacja;
  75. ?>



Na te sprzedaj_przedmiot nie patrz.. dopiero sie z tym bawie smile.gif
nospor
Pry tym kawalku:
mysql_query("INSERT INTO przedmioty ('wlasciciel','nazwa','atak','dex','typ','cash')

VALUES ('".$_SESSION['id']."','".$przedmiot['nazwa']."','".$przedmiot['atak']."','".$przedmiot['dex']."',

'".$przedmiot['typ']."','".$przedmiot['cash']."')");
nie widze bys wyswietlal blad bazy.... a przeciez to ten kawalek ma powodowac, ze cos wskoczy do przedmiotow :/
awek520
bład..

BŁĄD:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''wlasciciel','nazwa','atak','dex','typ','cash') VALUES ('1','szata rycerza',' at line 1
nospor
Brak slow..... tyle postow pisalem bys wlaczyl bledy dla zapytan, a ty robiles wszystko tylko nie wlaczales tam gdzie trzeba :/ Brak slow....


Nazw kolumn nie bierze sie w apostrofy. W apostrofy bierze sie teksty. Nazwy kolumn mozna co najwyzej wziac w kopniete apostrofy` lub w ogole olac apostrofy
awek520
Nie zauwazyłem tego.. : /

Teraz mam znów takie cos..BŁĄD:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3

  1. mysql_query("INSERT INTO przedmioty (`wlasciciel`,`nazwa`,`atak`,`dex`,`typ`,`cash`)
  2. VALUES ('".$_SESSION['id']."','".$przedmiot['nazwa']."','".$przedmiot['atak']."','".$przedmiot['dex']."',
  3. '".$przedmiot['typ']."','".$przedmiot['cash']."'")or die('BŁĄD:'.mysql_error());
nospor
Brakuje zamknietego nawiasu w zapytaniu.... Ogolnie, to wyswietlaj sobie jak wyglada wygenerowane zapytanie - wowczas sam bedziesz widzial tak banalne bledy. Wszystko to bylo opisane w linku, ktory dalem ci na samym poczatku
awek520
Ahh.. masakra ;/ takie błędy że szkoda gadac.. dziękuje Ci bardzo za pomoc.. będę się staral wyswietlac te błędy od teraz..

Dziękuje Ci bardzo
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.