Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt dodajacy rekordy do bazy mysql
Forum PHP.pl > Forum > Przedszkole
Adikus123
Witam.
Mam taki skrypt:
  1. <?PHP
  2. echo ('<table><tr><td><p>Username:</p></td> <td><p><input type="text" name="medal_nick" size="15"></p></td></tr>
  3.  
  4. <tr><td><p>Medal:</p></td><td><p><select name="medal3"> <option selected value="" /> Wybierz</p>
  5. <option value="1" /> 1
  6. <option value="2" /> 2
  7. <option value="3" /> 3
  8. <option value="4" /> 4
  9. <option value="5" /> 5
  10. <option value="6" /> 6
  11. <option value="7" /> 7
  12. <option value="8" /> 8
  13. <option value="9" /> 9
  14. <option value="10" /> 10
  15. <option value="11" /> 11
  16. </select></td></tr></table>');
  17. echo ('<input type="submit" value="Daj medal"></p>');
  18.  
  19. mysql_connect('localhost','login','haslo');
  20. mysql_select_db('baza');
  21. $medale23 = mysql_query("SELECT * FROM medale") or die ('Error: '.mysql_error ());
  22. $cMedale = mysql_fetch_array($medale23);
  23. $ooName = $cMedale['username'];
  24. if ($_SESSION['admin'] == 'ok' && isset($_COOKIE['log'])){
  25. if ($isAdmin == 1 || $isAdmin == 2){
  26.  
  27. if (isset($medal_nick)) {
  28. if($ooName != $medal_nick)
  29. {
  30. mysql_query( 'INSERT INTO medale (username, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) '.
  31. "VALUES ('$medal_nick', '$med1', '$med2', '$med3', '$med4', '$med5', '$med6', '$med7', '$med8', '$med9', '$med10', '$med11')" );
  32.  
  33. if($medal13 == 1){
  34. $med1 = 1;
  35. $med2 = 0;
  36. $med3 = 0;
  37. $med4 = 0;
  38. $med5 = 0;
  39. $med6 = 0;
  40. $med7 = 0;
  41. $med8 = 0;
  42. $med9 = 0;
  43. $med10 = 0;
  44. $med11 = 0;
  45.  
  46. }
  47. elseif($medal13 == 2){
  48. $med1 = 0;
  49. $med2 = 1;
  50. $med3 = 0;
  51. $med4 = 0;
  52. $med5 = 0;
  53. $med6 = 0;
  54. $med7 = 0;
  55. $med8 = 0;
  56. $med9 = 0;
  57. $med10 = 0;
  58. $med11 = 0;
  59. }
  60. elseif($medal13 == 3){
  61. $med1 = 0;
  62. $med2 = 0;
  63. $med3 = 1;
  64. $med4 = 0;
  65. $med5 = 0;
  66. $med6 = 0;
  67. $med7 = 0;
  68. $med8 = 0;
  69. $med9 = 0;
  70. $med10 = 0;
  71. $med11 = 0;
  72. }
  73. elseif($medal13 == 4){
  74. $med1 = 0;
  75. $med2 = 0;
  76. $med3 = 0;
  77. $med4 = 1;
  78. $med5 = 0;
  79. $med6 = 0;
  80. $med7 = 0;
  81. $med8 = 0;
  82. $med9 = 0;
  83. $med10 = 0;
  84. $med11 = 0;
  85. }
  86. elseif($medal13 == 5){
  87. $med1 = 0;
  88. $med2 = 0;
  89. $med3 = 0;
  90. $med4 = 0;
  91. $med5 = 1;
  92. $med6 = 0;
  93. $med7 = 0;
  94. $med8 = 0;
  95. $med9 = 0;
  96. $med10 = 0;
  97. $med11 = 0;
  98. }
  99. elseif($medal13 == 6){
  100. $med1 = 0;
  101. $med2 = 0;
  102. $med3 = 0;
  103. $med4 = 0;
  104. $med5 = 0;
  105. $med6 = 1;
  106. $med7 = 0;
  107. $med8 = 0;
  108. $med9 = 0;
  109. $med10 = 0;
  110. $med11 = 0;
  111. }
  112. elseif($medal13 == 7){
  113. $med1 = 0;
  114. $med2 = 0;
  115. $med3 = 0;
  116. $med4 = 0;
  117. $med5 = 0;
  118. $med6 = 0;
  119. $med7 = 1;
  120. $med8 = 0;
  121. $med9 = 0;
  122. $med10 = 0;
  123. $med11 = 0;
  124. }
  125. elseif($medal13 == 8){
  126. $med1 = 0;
  127. $med2 = 0;
  128. $med3 = 0;
  129. $med4 = 0;
  130. $med5 = 0;
  131. $med6 = 0;
  132. $med7 = 0;
  133. $med8 = 1;
  134. $med9 = 0;
  135. $med10 = 0;
  136. $med11 = 0;
  137. }
  138. elseif($medal13 == 9){
  139. $med1 = 0;
  140. $med2 = 0;
  141. $med3 = 0;
  142. $med4 = 0;
  143. $med5 = 0;
  144. $med6 = 0;
  145. $med7 = 0;
  146. $med8 = 0;
  147. $med9 = 1;
  148. $med10 = 0;
  149. $med11 = 0;
  150. }
  151. elseif($medal13 == 10){
  152. $med1 = 0;
  153. $med2 = 0;
  154. $med3 = 0;
  155. $med4 = 0;
  156. $med5 = 0;
  157. $med6 = 0;
  158. $med7 = 0;
  159. $med8 = 0;
  160. $med9 = 0;
  161. $med10 = 1;
  162. $med11 = 0;
  163. }
  164. elseif($medal13 == 11){
  165. $med1 = 0;
  166. $med2 = 0;
  167. $med3 = 0;
  168. $med4 = 0;
  169. $med5 = 0;
  170. $med6 = 0;
  171. $med7 = 0;
  172. $med8 = 0;
  173. $med9 = 0;
  174. $med10 = 0;
  175. $med11 = 1;
  176. }
  177.  
  178. }else{
  179. mysql_query("UPDATE medale SET '$medal3'='$medal3' WHERE username='$medal_nick'");
  180. }
  181. }
  182.  
  183. }else{
  184. echo ('<p>Nie posiadasz uprawnien aby to przegladac. Zaloguj sie na Administratora!</p>');
  185. }
  186. }else{
  187. echo ("<p>Zaloguj sie!</p>");
  188. }



Lecz nic nie dodaje do bazy =/
Mógłby ktos sprawdzic i poprawic moj kod??
Wicepsik
Temat: Jak poprawnie zadac pytanie dokładniej wykonywanie zapytań do bazy
Adikus123
Ale chodzi mi o dodawanie rekordow do bazy a nie czytanie ich...
lord2105
sprawdz czy te warunki sa wykonywane:

  1. if ($_SESSION['admin'] == 'ok' && isset($_COOKIE['log'])){
  2. if ($isAdmin == 1 || $isAdmin == 2){
  3.  
  4. if (isset($medal_nick)) {
  5. if($ooName != $medal_nick)
  6. {
  7.  
Adikus123
if ($_SESSION['admin'] == 'ok' && isset($_COOKIE['log'])){ <- sprawdza czy jest sie zalogowanym
if ($isAdmin == 1 || $isAdmin == 2) - sprawdza czy jest sie adminem
{
if (isset($medal_nick)) { - sprawdza czy pole jest zapelnione
if($ooName != $medal_nick) {
- czyta nick z bazy i jesli go nie ma to dodaje nowy rekord:
  1. mysql_query( 'INSERT INTO medale (username, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) '.
  2. "VALUES ('$medal_nick', '$med1', '$med2', '$med3', '$med4', '$med5', '$med6', '$med7', '$med8', '$med9', '$med10', '$med11')" );
  3.  
  4. if($medal13 == 1){
  5. $med1 = 1;
  6. $med2 = 0;
  7. $med3 = 0;
  8. $med4 = 0;
  9. $med5 = 0;
  10. $med6 = 0;
  11. $med7 = 0;
  12. $med8 = 0;
  13. $med9 = 0;
  14. $med10 = 0;
  15. $med11 = 0;
  16.  
  17. }
  18. elseif($medal13 == 2){
  19. $med1 = 0;
  20. $med2 = 1;
  21. $med3 = 0;
  22. $med4 = 0;
  23. $med5 = 0;
  24. $med6 = 0;
  25. $med7 = 0;
  26. $med8 = 0;
  27. $med9 = 0;
  28. $med10 = 0;
  29. $med11 = 0;
  30. }
  31. elseif($medal13 == 3){
  32. $med1 = 0;
  33. $med2 = 0;
  34. $med3 = 1;
  35. $med4 = 0;
  36. $med5 = 0;
  37. $med6 = 0;
  38. $med7 = 0;
  39. $med8 = 0;
  40. $med9 = 0;
  41. $med10 = 0;
  42. $med11 = 0;
  43. }
  44. elseif($medal13 == 4){
  45. $med1 = 0;
  46. $med2 = 0;
  47. $med3 = 0;
  48. $med4 = 1;
  49. $med5 = 0;
  50. $med6 = 0;
  51. $med7 = 0;
  52. $med8 = 0;
  53. $med9 = 0;
  54. $med10 = 0;
  55. $med11 = 0;
  56. }
  57. elseif($medal13 == 5){
  58. $med1 = 0;
  59. $med2 = 0;
  60. $med3 = 0;
  61. $med4 = 0;
  62. $med5 = 1;
  63. $med6 = 0;
  64. $med7 = 0;
  65. $med8 = 0;
  66. $med9 = 0;
  67. $med10 = 0;
  68. $med11 = 0;
  69. }
  70. elseif($medal13 == 6){
  71. $med1 = 0;
  72. $med2 = 0;
  73. $med3 = 0;
  74. $med4 = 0;
  75. $med5 = 0;
  76. $med6 = 1;
  77. $med7 = 0;
  78. $med8 = 0;
  79. $med9 = 0;
  80. $med10 = 0;
  81. $med11 = 0;
  82. }
  83. elseif($medal13 == 7){
  84. $med1 = 0;
  85. $med2 = 0;
  86. $med3 = 0;
  87. $med4 = 0;
  88. $med5 = 0;
  89. $med6 = 0;
  90. $med7 = 1;
  91. $med8 = 0;
  92. $med9 = 0;
  93. $med10 = 0;
  94. $med11 = 0;
  95. }
  96. elseif($medal13 == 8){
  97. $med1 = 0;
  98. $med2 = 0;
  99. $med3 = 0;
  100. $med4 = 0;
  101. $med5 = 0;
  102. $med6 = 0;
  103. $med7 = 0;
  104. $med8 = 1;
  105. $med9 = 0;
  106. $med10 = 0;
  107. $med11 = 0;
  108. }
  109. elseif($medal13 == 9){
  110. $med1 = 0;
  111. $med2 = 0;
  112. $med3 = 0;
  113. $med4 = 0;
  114. $med5 = 0;
  115. $med6 = 0;
  116. $med7 = 0;
  117. $med8 = 0;
  118. $med9 = 1;
  119. $med10 = 0;
  120. $med11 = 0;
  121. }
  122. elseif($medal13 == 10){
  123. $med1 = 0;
  124. $med2 = 0;
  125. $med3 = 0;
  126. $med4 = 0;
  127. $med5 = 0;
  128. $med6 = 0;
  129. $med7 = 0;
  130. $med8 = 0;
  131. $med9 = 0;
  132. $med10 = 1;
  133. $med11 = 0;
  134. }
  135. elseif($medal13 == 11){
  136. $med1 = 0;
  137. $med2 = 0;
  138. $med3 = 0;
  139. $med4 = 0;
  140. $med5 = 0;
  141. $med6 = 0;
  142. $med7 = 0;
  143. $med8 = 0;
  144. $med9 = 0;
  145. $med10 = 0;
  146. $med11 = 1;
  147. }

batman
Skąd Ci się wzięło $medal_nick? Korzystasz z register_globals?
Adikus123
Tu masz:
echo ('<table><tr><td><p>Username:</p></td> <td><p><input type="text" name="medal_nick" size="15"></p></td></tr>
batman
Przed if (isset($medal_nick)) {
wstaw var_dump($medal_nick); i wyślij formularz.

Adikus123
Teraz mi pisze tak:

string(6) "Adikus"
kadlub
jeśli to jest formularz to gdzie jest
questionmark.gif

i nie wiem czy dobrze rozumuje ale wtedy jeśli dane z formularza będą wysyłane metodą POST to zamiast
$medal_nick powinno być $_POST['medal_nick']
batman
Cytat(Adikus123 @ 5.01.2011, 23:56:30 ) *
Teraz mi pisze tak:

string(6) "Adikus"

No to debugujemy dalej i między

if (isset($medal_nick)) {

a

if($ooName != $medal_nick)

wstawiamy var_dump($ooName); var_dump($medal_nick); i sprawdzamy co nam się wyświetla.
Adikus123
Teraz wywala
NULL string(6) "Adikus"
Jak dodalem var_dump($medal13);

Wywala mi: NULL string(1) "6" string(6) "Adikus"
batman
W takim razie ostatni krok na drodze do znalezienie przyczyny problemu. Zrób echo wszystkich zapytań, które powinny działać i wykonaj je w phpmyadmin.
Adikus123
pozmienialem troche i wyswietla mi sie tak string(6) "Adikus" 'Adikus', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '3', 'Adikus'

jak dla mnie wszystko jest dobrze a do mysql rekordow nie dodaje ;(

Teraz mam tak i dodaje ale warunek if mi nie dziala
  1. if($userbase != $medal_nick)
  2. {
  3. mysql_query( 'INSERT INTO `adikus_strona`.`medale` (`username`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`)'.
  4. "VALUES ('$medal_nick', '$med1', '$med2', '$med3', '$med4', '$med5', '$med6', '$med7', '$med8', '$med9', '$med10', '$med11' )" );
  5. echo "'$medal_nick', '$med1', '$med2', '$med3', '$med4', '$med5', '$med6', '$med7', '$med8', '$med9', '$med10', '$med11', '$medal13', '$medal_nick' ";
  6. }
  7. elseif
  8. {
  9. mysql_query("UPDATE medale SET '$medal13'='1' WHERE username='$medal_nick'");
  10. //header('Location: index.php');
  11. }

nie dziala mi warunek
  1. if($userbase != $medal_nick)


Czy nick jest juz w bazie, czy go nie ma i tak dodaje nowy rekord zamiast zmienic =/


@to juz naprawilem.
Zostało mi to:
mysql_query("UPDATE `adikus_strona`.`medale` SET '$medal13'='1' WHERE `medale`.`username`='$medal_nick'");
Jak to zrobic bo nie mam pomyslu.
Jak zmienie $medal13 na np 1. to zmienia sie kolumna 1. A $medal13 nie czyta. W echo pokazuje ze jest po wyslaniu przypisana mu cyfra,

Prosze o pomoc.
batman
Zrób echo całego zapytania, nie samych danych, czyli
  1. echo "UPDATE `adikus_strona`.`medale` SET '$medal13'='1' WHERE `medale`.`username`='$medal_nick'";
a następnie wykonaj je w phpmyadmin.
Domyślam się, że powinno być tak:
  1. mysql_query("UPDATE medale SET " . $medal13 . "='1' WHERE username='" . $medal_nick . "'");


Przy okazji - nie filtrujesz danych, które trafiają do bazy. Poczytaj o mysql_real_escape_string.
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.