Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z skryptem
Forum PHP.pl > Forum > PHP
peja1990
Witam.
Wiem, że zły dział ale nie znalazłem bardziej odpowiedniego, ponieważ mam problem ze skryptem w technologii JavaScript.
A mianowicie chodzi mi o to, że mam skrypt działający poprawnie, ale jeżeli użyję opcji CHACKBOX'a to wysyła mi do bazy MySQL (bez znaczenia co zaznaczę), wysyła wartosc pierwszej opcji "value".

Oto skrypt:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  5. <meta name="keywords" content="CreoVision" />
  6. <meta name="description" content="CreoVision" />
  7. <link href="../css/style.css" rel="stylesheet" type="text/css" />
  8. <script src="../zamowienie/jquery-latest.js"></script>
  9.  
  10. <style type="text/css">
  11. .tick {
  12. vertical-align: middle;
  13. margin: -2px 6px 0px 0px;
  14. padding: 0;
  15. }
  16.  
  17. .error {
  18. vertical-align: middle;
  19. margin: -2px 6px 0px 0px;
  20. padding: 0;
  21. }
  22.  
  23. .info {
  24. margin: 0;
  25. padding: 0px 0px 0px 13px;
  26. }
  27. </style>
  28.  
  29. <script type="text/javascript">
  30. $(document).ready(function(){
  31. $("form#submit").submit(function() {
  32. // Przechwytujemy wartości z formularza i przesyłamy je do pliku insert.php
  33. var imie = $('input[name=imie]');
  34. var nazwisko = $('input[name=nazwisko]');
  35. var nazwa_firmy = $('input[name=nazwa_firmy]');
  36. var email = $('input[name=email]');
  37. var telefon = $('input[name=telefon]');
  38. var nazwa_serwisu = $('input[name=nazwa_serwisu]');
  39. var tematyka = $('input[name=tematyka]');
  40. var kolorystyka = $('input[name=kolorystyka]');
  41. var czas_na_realizacje = $('input[name=czas_na_realizacje]');
  42. var platnosc = $('input[name=platnosc]');
  43.  
  44. // Jeżeli pole jest puste wyświetlamy błąd i nie dodajemy rekordu
  45. if(imie.val() == "") {
  46. $('div.blad').fadeIn(400);
  47. // Usuwamy wiadomość o błędzie po 4 sekundach
  48. setTimeout(function(){ $("div.blad").fadeOut(400) }, 4000);
  49. return false;
  50. }
  51.  
  52. // Jeżeli pole jest puste wyświetlamy błąd i nie dodajemy rekordu
  53. if(nazwisko.val() == "") {
  54. $('div.blad').fadeIn(400);
  55. // Usuwamy wiadomość o błędzie po 4 sekundach
  56. setTimeout(function(){ $("div.blad").fadeOut(400) }, 4000);
  57. return false;
  58. }
  59.  
  60. // Jeżeli pole jest puste wyświetlamy błąd i nie dodajemy rekordu
  61. if(email.val() == "") {
  62. $('div.blad').fadeIn(400);
  63. // Usuwamy wiadomość o błędzie po 4 sekundach
  64. setTimeout(function(){ $("div.blad").fadeOut(400) }, 4000);
  65. return false;
  66. }
  67.  
  68. // Jeżeli pole jest puste wyświetlamy błąd i nie dodajemy rekordu
  69. if(telefon.val() == "") {
  70. $('div.blad').fadeIn(400);
  71. // Usuwamy wiadomość o błędzie po 4 sekundach
  72. setTimeout(function(){ $("div.blad").fadeOut(400) }, 4000);
  73. return false;
  74. }
  75.  
  76. // Jeżeli pole jest puste wyświetlamy błąd i nie dodajemy rekordu
  77. if(nazwa_serwisu.val() == "") {
  78. $('div.blad').fadeIn(400);
  79. // Usuwamy wiadomość o błędzie po 4 sekundach
  80. setTimeout(function(){ $("div.blad").fadeOut(400) }, 4000);
  81. return false;
  82. }
  83.  
  84. // Jeżeli pole jest puste wyświetlamy błąd i nie dodajemy rekordu
  85. if(tematyka.val() == "") {
  86. $('div.blad').fadeIn(400);
  87. // Usuwamy wiadomość o błędzie po 4 sekundach
  88. setTimeout(function(){ $("div.blad").fadeOut(400) }, 4000);
  89. return false;
  90. }
  91.  
  92. // Jeżeli pole jest puste wyświetlamy błąd i nie dodajemy rekordu
  93. if(czas_na_realizacje.val() == "") {
  94. $('div.blad').fadeIn(400);
  95. // Usuwamy wiadomość o błędzie po 4 sekundach
  96. setTimeout(function(){ $("div.blad").fadeOut(400) }, 4000);
  97. return false;
  98. }
  99.  
  100. // Jeżeli pole jest puste wyświetlamy błąd i nie dodajemy rekordu
  101. if(platnosc.val() == "") {
  102. $('div.blad').fadeIn(400);
  103. // Usuwamy wiadomość o błędzie po 4 sekundach
  104. setTimeout(function(){ $("div.blad").fadeOut(400) }, 4000);
  105. return false;
  106. }
  107.  
  108. var data = 'imie=' + imie.val() + '&nazwisko=' + nazwisko.val() + '&nazwa_firmy=' + nazwa_firmy.val() + '&email=' + email.val() + '&telefon=' + telefon.val() + '&nazwa_serwisu=' + nazwa_serwisu.val() + '&tematyka=' + tematyka.val() + '&kolorystyka=' + kolorystyka.val() + '&czas_na_realizacje=' + czas_na_realizacje.val() + '&platnosc=' + platnosc.val();
  109.  
  110. $.ajax({
  111. type: "POST",
  112. url: "zamowienie/insert.php",
  113. data: data,
  114. success: function(){
  115. // Usuwamy wpisane dane
  116. $('#imie').val('');
  117. $('#nazwisko').val('');
  118. $('#nazwa_firmy').val('');
  119. $('#email').val('');
  120. $('#telefon').val('');
  121. $('#nazwa_serwisu').val('');
  122. $('#tematyka').val('');
  123. $('#kolorystyka').val('');
  124. $('#czas_na_realizacje').val('');
  125. $('#platnosc').val('');
  126. // Wyświetlamy wiadomość o poprawnym dodaniu użytkownika
  127. $('div.dodano').fadeIn(400);
  128. // Usuwamy wiadomość o poprawnym dodaniu użytkownika po 4 sekundach
  129. setTimeout(function(){ $("div.dodano").fadeOut(400) }, 4000);
  130. }
  131.  
  132. });
  133. return false;
  134. });
  135. });
  136. </script>
  137. </head>
  138.  
  139. <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
  140.  
  141. <table width="250" border="0" cellpadding="0" cellspacing="0" align="left">
  142. <tr>
  143. <td>
  144. <div id="content">
  145. <form id="submit" method="post" name="submit" action="">
  146. <fieldset style="border: 0px;">
  147.  
  148. <label for="imie">Imi&#281;:</label>
  149. <br />
  150. <input type="text" name="imie" id="imie" size="20" />
  151. <br />
  152. <label for="nazwisko">Nazwisko:</label>
  153. <br />
  154. <input type="text" name="nazwisko" id="nazwisko" size="20" />
  155. <br />
  156. <label for="nazwa_firmy">Nazwa firmy:</label>
  157. <br />
  158. <input type="text" name="nazwa_firmy" id="nazwa_firmy" size="20" />
  159. <br />
  160. <label for="email">Adres e-Mail:</label>
  161. <br />
  162. <input type="text" name="email" id="email" size="20" />
  163. <br />
  164. <label for="telefon">Telefon:</label>
  165. <br />
  166. <input type="text" name="telefon" id="telefon" value="+48." size="20" />
  167. <br />
  168. <label for="nazwa_serwisu">Nazwa serwisu:</label>
  169. <br />
  170. <input type="text" name="nazwa_serwisu" id="nazwa_serwisu" size="20" />
  171. <br />
  172. <label for="tematyka">Tematyka:</label>
  173. <br />
  174. <input type="text" name="tematyka" id="tematyka" size="20" />
  175. <br />
  176. <label for="kolorystyka">Kolorystyka:</label>
  177. <br />
  178. <input type="checkbox" value="niebieski" name="kolorystyka" /> niebieski<br />
  179. <input type="checkbox" value="czerwony" name="kolorystyka" /> czerwony<br />
  180. <input type="checkbox" value="zielony" name="kolorystyka" /> zielony<br />
  181. <input type="checkbox" value="pomarancz" name="kolorystyka" /> pomarańcz
  182. <br />
  183. <label for="czas_na_realizacje">Czas na realizacj&#281;:</label>
  184. <br />
  185. <input type="text" name="czas_na_realizacje" id="czas_na_realizacje" size="20" />
  186. <br />
  187. <label for="platnosc">P&#322;atność:</label>
  188. <br />
  189. <input type="text" name="platnosc" id="platnosc" size="20" />
  190.  
  191. <p align="right" style="padding-right: 10px;"><button type="submit" id="submit" class="dodaj_zlecenie">&nbsp;</button></p>
  192. </fieldset>
  193. </form>
  194.  
  195. <div class="dodano" style="display:none;">
  196. <img class="tick" src="zamowienie/tick.png" alt="" />Zamówienie zosta&#322;o dodane do naszej bazy danych
  197. </div>
  198. <div class="blad" style="display:none;">
  199. <img class="error" src="zamowienie/error.png" alt="" />Uzupe&#322;nij pola w formularzu!
  200. </div>
  201. </div>
  202. </td>
  203. </tr>
  204. </table>
  205.  
  206. </body>
  207. </html>


Bardzo proszę o pomoc.
Będę niezmiernie wdzięczny.

Ps. W razie problemów, proszę moderatorów o przeniesienie tematu do bardziej odpowiedniego.
czachor
Bo wszystkie nazwałeś tak samo: kolorystyka - musisz wysłać je jako tablicę: nazwij je kolorystyka[], wtedy w PHP otrzymasz tablicę z wybranymi wartościami.
peja1990
Mistrzu, czyli ma to wyglądac tak:
  1. <input type="checkbox" value="niebieski" name="kolorystyka[]" /> niebieski<br />
  2. <input type="checkbox" value="czerwony" name="kolorystyka[]" /> czerwony<br />
  3. <input type="checkbox" value="zielony" name="kolorystyka[]" /> zielony<br />
  4. <input type="checkbox" value="pomarancz" name="kolorystyka[]" /> pomarańcz


EDIT: Jak zrobiłem tak jak wyżej to w bazie wywala mi rekord: "undefined" ;/
czachor
Musisz dostosować ajax do tego - tam przetwarzasz jako string, a teraz dostajesz tablicę.
peja1990
Mógłbyś mi to mistrzu przerobic ? sadsmiley02.gif sadsmiley02.gif sadsmiley02.gif

EDIT: Okroiłem trochę skrypt, bardzo proszę kogoś o pomoc w przerobieniu skryptu aby działał... sad.gif
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  5. <script src="skrypt.js"></script>
  6. <script type="text/javascript">
  7. $(document).ready(function(){
  8. $("form#submit").submit(function() {
  9. // Przechwytujemy wartości z formularza i przesyłamy je do pliku insert.php
  10. var imie = $('input[name=imie]');
  11. var kolorystyka = $('input[name=kolorystyka]');
  12.  
  13. // Jeżeli pole jest puste wyświetlamy błąd i nie dodajemy rekordu
  14. if(imie.val() == "") {
  15. $('div.blad').fadeIn(400);
  16. // Usuwamy wiadomość o błędzie po 4 sekundach
  17. setTimeout(function(){ $("div.blad").fadeOut(400) }, 4000);
  18. return false;
  19. }
  20.  
  21. var data = 'imie=' + imie.val() + '&kolorystyka=' + kolorystyka.val();
  22.  
  23. $.ajax({
  24. type: "POST",
  25. url: "insert.php",
  26. data: data,
  27. success: function(){
  28. // Usuwamy wpisane dane
  29. $('#imie').val('');
  30. $('#kolorystyka').val('');
  31. // Wyświetlamy wiadomość o poprawnym dodaniu użytkownika
  32. $('div.dodano').fadeIn(400);
  33. // Usuwamy wiadomość o poprawnym dodaniu użytkownika po 4 sekundach
  34. setTimeout(function(){ $("div.dodano").fadeOut(400) }, 4000);
  35. }
  36.  
  37. });
  38. return false;
  39. });
  40. });
  41. </script>
  42. </head>
  43.  
  44. <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
  45.  
  46. <table width="250" border="0" cellpadding="0" cellspacing="0" align="left">
  47. <tr>
  48. <td>
  49. <div id="content">
  50. <form id="submit" method="post" name="submit" action="">
  51. <fieldset style="border: 0px;">
  52.  
  53. <label for="imie">Imię:</label>
  54. <br />
  55. <input type="text" name="imie" id="imie" size="20" />
  56. <br />
  57. <label for="kolorystyka">Kolorystyka:</label>
  58. <br />
  59. <input type="checkbox" value="niebieski" name="kolorystyka[]" /> niebieski<br />
  60. <input type="checkbox" value="czerwony" name="kolorystyka[]" /> czerwony<br />
  61. <input type="checkbox" value="zielony" name="kolorystyka[]" /> zielony<br />
  62. <input type="checkbox" value="pomarancz" name="kolorystyka[]" /> pomarańcz
  63.  
  64. <button type="submit" id="submit">ZAPISZ</button>
  65. </fieldset>
  66. </form>
  67.  
  68. <div class="dodano" style="display:none;">
  69. <img class="tick" src="tick.png" alt="" />Dodano
  70. </div>
  71. <div class="blad" style="display:none;">
  72. <img class="error" src="error.png" alt="" />Uzupełnij pola w formularzu!
  73. </div>
  74. </div>
  75. </td>
  76. </tr>
  77. </table>
  78.  
  79. </body>
  80. </html>


A tak wygląda plik: insert.php
  1. <?php
  2. //Odbieranie danych metodą post
  3. $imie = htmlspecialchars(trim($_POST['imie']));
  4. $kolorystyka = htmlspecialchars(trim($_POST['kolorystyka']));
  5.  
  6. //Konfiguracja połączenia z baza mysql
  7. $baza_host=("localhost");
  8. $baza_login=("user_bazy");
  9. $baza_haslo=("haslo");
  10. $baza_nazwa=("nazwa_bazy");
  11.  
  12. //Łączenie się z bazą mysql
  13. $polaczenie = mysql_connect($baza_host, $baza_login, $baza_haslo);
  14. $db = mysql_select_db($baza_nazwa);
  15.  
  16. //Dodawanie rekordów do bazy mysql
  17. $dodaj = "INSERT INTO baza (imie,kolorystyka) VALUES ('$imie','$kolorystyka')";
  18. mysql_query($dodaj) or die(mysql_error());
  19. mysql_close($polaczenie);
  20. ?>


Wie ktoś co można z tym zrobic ?!
PROSZĘ O POMOC exclamation.gif sad.gif
Quadina
Kilka minut od reki napisane nie sprawdzone:
  1. // Modyfikacja w pliku glowym
  2.  
  3. //zaraz pod sprawdzaniem bledu
  4. var data = 'imie=' + imie.val();
  5. $.each(kolorystyka, function(i, val) {
  6. data = data + '&kolorystyka[]=' + val.value;
  7. });
  8. // w ajaxie czyszczenie wartosci
  9.  
  10. var kolorystyka = $('input[name=kolorystyka]');
  11. for(var i = 0; i < kolorystyka.length; i++){
  12. kolorystyka[i].checked = false;
  13. }
  14.  
  15. //modyfikacja submita, zeby nie przeladowywal strony
  16. <form id="submit" method="post" name="submit" action="" onsubmit="return false;">
  17.  
  18.  
  19. // i pozniejsze inputy
  20. <input type="checkbox" value="niebieski" name="kolorystyka" /> niebieski<br />


  1. // modyfikacja w insert.php
  2. $kolorystyka = $_POST['kolorystyka'];
  3.  
  4. //Dodawanie rekordów do bazy mysql
  5. foreach($kolorystyka as $kolor){
  6. $kolor = htmlspecialchars(trim($kolor));
  7. $dodaj = "INSERT INTO baza (imie,kolorystyka) VALUES ('$imie','$kolor')";
  8. mysql_query($dodaj) or die(mysql_error());
  9. }


Panowie bzdury gadają, ze trzeba do checkboxa dodawać [], one są tam dla javascriptu od razu gwoli ścisłości - oddaje do przeczytania dokumentacje.
Zmodyfikowałem tylko tyle, żeby obsługiwał tablice wartości kolorystyka, a nie pojedynczą wiadomość.
peja1990
I duuupppaaa sad.gif

Zedytowałem i skrypt wygląda tak:
index.php
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  5. <script src="skrypt.js"></script>
  6. <script type="text/javascript">
  7. $(document).ready(function(){
  8. $("form#submit").submit(function() {
  9. // Przechwytujemy wartości z formularza i przesyłamy je do pliku insert.php
  10. var imie = $('input[name=imie]');
  11. var kolorystyka = $('input[name=kolorystyka]');
  12. for(var i = 0; i < kolorystyka.length; i++){
  13. kolorystyka[i].checked = false;
  14. }
  15.  
  16. // Jeżeli pole jest puste wyświetlamy błąd i nie dodajemy rekordu
  17. if(imie.val() == "") {
  18. $('div.blad').fadeIn(400);
  19. // Usuwamy wiadomość o błędzie po 4 sekundach
  20. setTimeout(function(){ $("div.blad").fadeOut(400) }, 4000);
  21. return false;
  22. }
  23.  
  24. var data = 'imie=' + imie.val();
  25. $.each(kolorystyka, function(i, val) {
  26. data = data + '&kolorystyka[]=' + val.value;
  27. });
  28.  
  29. $.ajax({
  30. type: "POST",
  31. url: "insert.php",
  32. data: data,
  33. success: function(){
  34. // Usuwamy wpisane dane
  35. $('#imie').val('');
  36. $('#kolorystyka').val('');
  37. // Wyświetlamy wiadomość o poprawnym dodaniu użytkownika
  38. $('div.dodano').fadeIn(400);
  39. // Usuwamy wiadomość o poprawnym dodaniu użytkownika po 4 sekundach
  40. setTimeout(function(){ $("div.dodano").fadeOut(400) }, 4000);
  41. }
  42.  
  43. });
  44. return false;
  45. });
  46. });
  47. </script>
  48. </head>
  49.  
  50. <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
  51.  
  52. <table width="250" border="0" cellpadding="0" cellspacing="0" align="left">
  53. <tr>
  54. <td>
  55. <div id="content">
  56. <form id="submit" method="post" name="submit" action="" onsubmit="return false;">
  57. <fieldset style="border: 0px;">
  58.  
  59. <label for="imie">Imię:</label>
  60. <br />
  61. <input type="text" name="imie" id="imie" size="20" />
  62. <label for="kolorystyka">Kolorystyka:</label>
  63. <br />
  64. <input type="checkbox" value="niebieski" name="kolorystyka" /> niebieski<br />
  65. <input type="checkbox" value="czerwony" name="kolorystyka" /> czerwony<br />
  66. <input type="checkbox" value="zielony" name="kolorystyka" /> zielony<br />
  67. <input type="checkbox" value="pomarancz" name="kolorystyka" /> pomarańcz
  68.  
  69. <button type="submit" id="submit">ZAPISZ</button>
  70.  
  71. </fieldset>
  72. </form>
  73.  
  74. <div class="dodano" style="display:none;">
  75. <img class="tick" src="tick.png" alt="" />Dodano
  76. </div>
  77. <div class="blad" style="display:none;">
  78. <img class="error" src="error.png" alt="" />Uzupełnij pola w formularzu!
  79. </div>
  80. </div>
  81. </td>
  82. </tr>
  83. </table>
  84.  
  85. </body>
  86. </html>


insert.php
  1. <?php
  2. //Odbieranie danych metodą post
  3. $imie = htmlspecialchars(trim($_POST['imie']));
  4. $kolorystyka = htmlspecialchars(trim($_POST['kolorystyka']));
  5.  
  6. //Konfiguracja połączenia z baza mysql
  7. $baza_host=("localhost");
  8. $baza_login=("user_bazy");
  9. $baza_haslo=("haslo");
  10. $baza_nazwa=("nazwa_bazy")
  11.  
  12. //Łączenie się z bazą mysql
  13. $polaczenie = mysql_connect($baza_host, $baza_login, $baza_haslo);
  14. $db = mysql_select_db($baza_nazwa);
  15.  
  16. //Dodawanie rekordów do bazy mysql
  17. foreach($kolorystyka as $kolor){
  18. $kolor = htmlspecialchars(trim($kolor));
  19. $dodaj = "INSERT INTO baza (imie,kolorystyka) VALUES ('$imie','$kolor')";
  20. mysql_query($dodaj) or die(mysql_error());
  21. mysql_close($polaczenie);
  22. }
  23. ?>


Zrobiłem może coś źle ?
Bo, skrypt wywala mi pozytywne info, ale w bazie nie pojawiają się ŻADNE nowe rekordy... ;/

EDIT: Kiedy index.php pozostawiłem tak jak jest wyżej, a insert.php zmieniłem, że wygląda tak:
insert.php
  1. <?php
  2. //Odbieranie danych metodą post
  3. $imie = htmlspecialchars(trim($_POST['imie']));
  4. $kolorystyka = htmlspecialchars(trim($_POST['kolorystyka']));
  5.  
  6. //Konfiguracja połączenia z baza mysql
  7. $baza_host=("localhost");
  8. $baza_login=("user_bazy");
  9. $baza_haslo=("haslo");
  10. $baza_nazwa=("nazwa_bazy")
  11.  
  12. //Łączenie się z bazą mysql
  13. $polaczenie = mysql_connect($baza_host, $baza_login, $baza_haslo);
  14. $db = mysql_select_db($baza_nazwa);
  15.  
  16. //Dodawanie rekordów do bazy mysql
  17. $dodaj = "INSERT INTO baza (imie,kolorystyka) VALUES ('$imie','$kolorystyka')";
  18. mysql_query($dodaj) or die(mysql_error());
  19. mysql_close($polaczenie);
  20. ?>


to w wyniku tego w bazie w miejscu kolorystyka wywala mi rekord "Array" :/
Co może byc grane ?

EDIT: Z wielką pomocą Quadina, udało się cool.gif A teraz jak zrobic "radio" ? axesmiley.png blink.gif questionmark.gif
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.