Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Zwracanie błędu / kod
Forum PHP.pl > Forum > Przedszkole
Neon12345
Witam , otóż mam taki problem , nie wyświetla mi błędu "Błędny kod" przy wpisaniu kodu który nie znajduje się w bazie . Proszę o pomoc.

2. Drugie pytanie które kieruję do was to to jak zrobić że po wpisaniu poprawnego kodu jest on automatycznie kasowany z bazy .

  1. <?php
  2.  
  3. include "baza.php";
  4.  
  5. if (isset($_POST['kod']))
  6. {
  7. $query = "SELECT * FROM kody WHERE kod = '".mysql_real_escape_string($_POST['kod'])."'";
  8. $result = mysql_query($query);
  9. $row = mysql_fetch_assoc($result);
  10.  
  11. $query2 = "SELECT * FROM users WHERE user = '".$user."'";
  12. $result2 = mysql_query($query2);
  13. $row2 = mysql_fetch_assoc($result2);
  14.  
  15.  
  16. if ($row['cena'] == 1)
  17. {
  18. $update = "UPDATE users SET zm=zm+1 WHERE user='".$user."'";
  19. $a = mysql_query($update);
  20.  
  21. if ($a)
  22. {
  23. echo "Doładowałeś Konto o 1 złotą monetę.";
  24. }
  25. else
  26. {
  27. echo "Błędny Kod";
  28. }
  29. }
  30. else if ($row['cena'] == 2)
  31. {
  32. $update = "UPDATE users SET zm=zm+2 WHERE user='".$user."'";
  33. $a = mysql_query($update);
  34.  
  35. if ($a)
  36. {
  37. echo "Doładowałeś Konto o 2 złote monety.";
  38. }
  39. else
  40. {
  41. echo "Błędny Kod";
  42. }
  43. }
  44. else if ($row['cena'] == 3)
  45. {
  46. $update = "UPDATE users SET zm=zm+5 WHERE user='".$user."'";
  47. $a = mysql_query($update);
  48.  
  49. if ($a)
  50. {
  51. echo "Doładowałeś Konto o 5 złotych monet";
  52. }
  53. else
  54. {
  55. echo "Błędny Kod";
  56. }
  57. }
  58. else if ($row['cena'] == 4)
  59. {
  60. $update = "UPDATE users SET zm=zm+15 WHERE user='".$user."'";
  61. $a = mysql_query($update);
  62.  
  63. if ($a)
  64. {
  65. echo "Doładowałeś Konto o 15 złotych monet";
  66. }
  67. else
  68. {
  69. echo "Błędny Kod";
  70. }
  71. }
  72. else if ($row['cena'] == 5)
  73. {
  74. $update = "UPDATE users SET zm=zm+35 WHERE user='".$user."'";
  75. $a = mysql_query($update);
  76.  
  77. if ($a)
  78. {
  79. echo "Doładowałeś Konto o 35 złotych monet";
  80. }
  81. else
  82. {
  83. echo "Błędny Kod";
  84. }
  85. }
  86. else if ($row['cena'] == 6)
  87. {
  88. $update = "UPDATE users SET zm=zm+50 WHERE user='".$user."'";
  89. $a = mysql_query($update);
  90.  
  91. if ($a)
  92. {
  93. echo "Doładowałeś Konto o 50 złotych monett";
  94. }
  95. else
  96. {
  97. echo "Błędny Kod";
  98. }
  99. }
  100.  
  101.  
  102. mysql_free_result($result2);
  103. }
  104. else
  105. {
  106. ?>
  107. <h2><font color="black">Wpisz kod otrzymany SMS</font></h2>
  108. <form method="POST">
  109. <input type="text" name="kod"><br>
  110. <input type="submit" value="sprawdz">
  111. </form>
  112. <?php
  113. }
  114. ?>
dziamber
Spróbuj:
  1. ...
  2. if($a == true) {
  3. ...

Co do drugiego pytania:
  1. $query = "SELECT * FROM kody WHERE kod = '".mysql_real_escape_string($_POST['kod'])."'";
  2. $result = mysql_num_rows($query);
  3. if($result == 1) {
  4. $query = "DELETE FROM kody WHERE kod = '".mysql_real_escape_string($_POST['kod'])."' ;
  5. }
Neon12345
Zrobiłem tak i dalej nic:

  1. <?php
  2.  
  3. include "baza.php";
  4.  
  5. if (isset($_POST['kod']))
  6. {
  7. $query = "SELECT * FROM kody WHERE kod = '".mysql_real_escape_string($_POST['kod'])."'";
  8. $result = mysql_query($query);
  9. $row = mysql_fetch_assoc($result);
  10.  
  11. $query2 = "SELECT * FROM users WHERE user = '".$user."'";
  12. $result2 = mysql_query($query2);
  13. $row2 = mysql_fetch_assoc($result2);
  14.  
  15.  
  16. if ($row['cena'] == 1)
  17. {
  18. $update = "UPDATE users SET zm=zm+1 WHERE user='".$user."'";
  19. $a = mysql_query($update);
  20.  
  21. if($a == true)
  22. {
  23. echo "Doładowałeś Konto o 1 złotą monetę.";
  24. }
  25. if($a == false)
  26. {
  27.  
  28. echo "Błędny Kod";
  29. }
  30. }
  31. else if ($row['cena'] == 2)
  32. {
  33. $update = "UPDATE users SET zm=zm+2 WHERE user='".$user."'";
  34. $a = mysql_query($update);
  35.  
  36. if($a == true)
  37. {
  38.  
  39. echo "Doładowałeś Konto o 2 złote monety.";
  40. }
  41. if($a == false)
  42.  
  43. {
  44. echo "Błędny Kod";
  45. }
  46. }
  47. else if ($row['cena'] == 3)
  48. {
  49. $update = "UPDATE users SET zm=zm+5 WHERE user='".$user."'";
  50. $a = mysql_query($update);
  51.  
  52. if($a == true)
  53. {
  54. echo "Doładowałeś Konto o 5 złotych monet";
  55. }
  56. if($a == false)
  57.  
  58. {
  59. echo "Błędny Kod";
  60. }
  61. }
  62. else if ($row['cena'] == 4)
  63. {
  64. $update = "UPDATE users SET zm=zm+15 WHERE user='".$user."'";
  65. $a = mysql_query($update);
  66.  
  67. if($a == true)
  68. {
  69. echo "Doładowałeś Konto o 15 złotych monet";
  70. }
  71. if($a == false)
  72.  
  73. {
  74. echo "Błędny Kod";
  75. }
  76. }
  77. else if ($row['cena'] == 5)
  78. {
  79. $update = "UPDATE users SET zm=zm+35 WHERE user='".$user."'";
  80. $a = mysql_query($update);
  81.  
  82. if($a == true)
  83. {
  84. echo "Doładowałeś Konto o 35 złotych monet";
  85. }
  86. if($a == false)
  87.  
  88. {
  89. echo "Błędny Kod";
  90. }
  91. }
  92. else if ($row['cena'] == 6)
  93. {
  94. $update = "UPDATE users SET zm=zm+50 WHERE user='".$user."'";
  95. $a = mysql_query($update);
  96.  
  97. if($a == true)
  98. {
  99. echo "Doładowałeś Konto o 50 złotych monett";
  100. }
  101. if($a == false)
  102.  
  103. {
  104. echo "Błędny Kod";
  105. }
  106. }
  107.  
  108.  
  109. mysql_free_result($result2);
  110. }
  111. else
  112. {
  113. ?>
  114. <h2><font color="black">Wpisz kod otrzymany SMS</font></h2>
  115. <form method="POST">
  116. <input type="text" name="kod"><br>
  117. <input type="submit" value="sprawdz">
  118. </form>
  119. <?php
  120. }
  121. ?>
mortus
Sprawdzenie kodu raczej w innym miejscu się powinno odbyć, to jest w linii 11. Jeżeli kod jest prawidłowy, to wtedy wykonujemy całą serię zapytań. Przecież zmienna a w żadnym z zapytań nie mówi nam, że kod był nieprawidłowy, tylko że update bazy danych się nie powiódł.
Neon12345
Mógł bym dostać jakieś sugestie związane z tym?
mortus
To samo, tylko dużo prościej:
  1. <?php
  2.  
  3. include "baza.php";
  4.  
  5. if (isset($_POST['kod'])) {
  6. $isValidCode = true;
  7. $query = "SELECT * FROM kody WHERE kod = '".mysql_real_escape_string($_POST['kod'])."'";
  8. $result = mysql_query($query);
  9. if (mysql_num_rows($result) > 0) {
  10. $row = mysql_fetch_assoc($result);
  11. } else {
  12. $isValidCode = false;
  13. }
  14. if ($isValidCode) {
  15. switch ($row['cena']) {
  16. case 1:
  17. $dodajemy = 1;
  18. break;
  19. case 2:
  20. $dodajemy = 2;
  21. break;
  22. case 3:
  23. $dodajemy = 5;
  24. break;
  25. case 4:
  26. $dodajemy = 15;
  27. break;
  28. case 5:
  29. $dodajemy = 35;
  30. break;
  31. case 6:
  32. $dodajemy = 50;
  33. break;
  34. default:
  35. $dodajemy = 0;
  36. break;
  37. }
  38.  
  39. $query2 = "SELECT * FROM users WHERE user = '".$user."'";
  40. $result2 = mysql_query($query2);
  41. $row2 = mysql_fetch_assoc($result2);
  42.  
  43. $update = "UPDATE users SET zm=zm+".$dodajemy." WHERE user='".$user."'";
  44. $a = mysql_query($update);
  45. if (mysql_affected_rows() > 0) {
  46. echo "Doładowałeś konto o ".$dodajemy." złotych monet.";
  47. } else {
  48. echo "Nieznany użytkownik";
  49. }
  50. mysql_free_result($result2);
  51. } else {
  52. echo 'Błędny kod';
  53. }
  54. } else {
  55.  
  56. ?>
  57. <h2>
  58. <font color="black">
  59. Wpisz kod otrzymany SMS
  60. </font>
  61. </h2>
  62. <form method="POST">
  63. <input type="text" name="kod">
  64. <br>
  65. <input type="submit" value="sprawdz">
  66. </form>
  67. <?php
  68. }
  69. ?>
Nie wiem tylko skąd pochodzi zmienna $user (linia 40), ale jeśli skądś pochodzi, to po co wykonywać $query2?
Neon12345
Bardzo dziękuje , mam jeszcze jedno pytanie , jak dodatkowo do tego kodu zrobić , że po wpisaniu prawidłowego kodu on znika z bazy ?
mortus
Zapytanie dziambera z DELETE, po update'cie tabeli użytkowników, czyli przed mysql_free_result.
Neon12345
  1. $usun = "DELETE FROM kody WHERE kod = '".mysql_real_escape_string($_POST['kod'])."'";


Czy to jest poprawne?
mortus
Tak, to jest poprawne.
gothye
tak ,dodałbym jeszcze
  1. LIMIT 1
Neon12345
Jak lepiej zrobić

Tak:

  1. $usun = mysql_fetch_array(mysql_query("DELETE FROM kody WHERE kod = '".mysql_real_escape_string($_POST['kod'])."'"));


czy

  1. $usun = mysql_query("DELETE FROM kody WHERE kod='".mysql_real_escape_string($_POST['kod'];."'");


questionmark.gif
mortus
Pierwsze nie zadziała, bo mysql_query zwróci true, jeśli delete się powiedzie, zatem wybór jest prosty.
Neon12345
Jednak to pierwsze zadziałało winksmiley.jpg
mortus
Cytat(Neon12345 @ 7.04.2010, 22:44:22 ) *
Jednak to pierwsze zadziałało winksmiley.jpg
Na pewno nie, tzn. źle się wyraziłem. Zapytanie zostanie wykonane, jednak sama funkcja mysql_fetch_array nie zadziała, ponieważ jej argumentem musi być identyfikator zasobu. Nie widzisz błędu, bo nie masz włączonego wyświetlania i raportowania błędów. Gdybyś dodał na początku skryptu te dwie linie
  1. ini_set('display_errors', 1);
to zobaczyłbyś, o co mi chodzi.
Neon12345
Hmm ale kod usuwany z bazy jest poprawnie .
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.