Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] duży formularz zamowień i duży problem
Forum PHP.pl > Forum > Przedszkole
Darekxp
Witam! mam dość duży formularz zamówień, ale niestety nie dopisuje rekordów do bazy. chyba coś jest z polem data i kontakt(źle napisana zmienna), ale nie wiem na 100%. dla testu wziąłem tylko imie i nazwisko oraz marka i dopisywało elegancko, a przy wszystkich polach jakie potrzebuje nie trybi. gdzies pewnie popełniłem "literówke" ale nie moge jej odszukać. Za pomoc z góry dzięki! smile.gif

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <title>Zamów serwis</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  4. </head>
  5.  
  6. <form action="?link=zamow.php" method="post">
  7.  
  8. <div align="left">
  9. <table width="465" align="center">
  10.  
  11.  
  12.  
  13. <tr>
  14. <td class="body_content" width="100">
  15. Imię:
  16. </td>
  17. <td width="300">
  18. <input type=text name="imie" size=20>
  19. </td>
  20. </tr>
  21. <tr>
  22. <td class="body_content">
  23. Nazwisko:
  24. </td>
  25. <td>
  26. <input type=text name="nazwisko" size=20>
  27. </td>
  28. </tr>
  29. <tr>
  30. <td class="body_content">
  31. Ulica:
  32. </td>
  33. <td>
  34. <input type=text name="ulica" size=25>
  35. </td>
  36. </tr>
  37. <tr>
  38. <td class="body_content">
  39. Numer domu:
  40. </td>
  41. <td>
  42. <input type=text name="nr_domu" size=6>
  43. </td>
  44. </tr>
  45. <tr>
  46. <td class="body_content">
  47. Numer mieszkania:
  48. </td>
  49. <td>
  50. <input type=text name="nr_mieszkania" size=6>
  51. </td>
  52. </tr>
  53. <tr>
  54. <td class="body_content">
  55. Miejscowość:
  56. </td>
  57. <td>
  58. <input type=text name="miejscowosc" size=20>
  59. </td>
  60. </tr>
  61. <tr>
  62. <td class="body_content">
  63. Telefon stacjonarny:
  64. </td>
  65. <td>
  66. <input type=text name="tel_stac" size=20>
  67.   </td>
  68. </tr>
  69. <tr>
  70. <td class="body_content">
  71. Telefon komórkowy:
  72. </td>
  73. <td>
  74. <input type=text name="tel_kom" size=20>
  75.   </td>
  76. </tr>
  77. <tr>
  78. <td class="body_content">
  79. E-mail:
  80. </td>
  81. <td>
  82. <input type=text name="email" size=25>
  83. </td>
  84. </tr>
  85. <tr>
  86. <td class="body_content">
  87. Marka telewizoru:
  88. </td>
  89. <td>
  90. <select name="marka">
  91. <option value="inny">...wybierz...</option>
  92. <option value="aiwa">Aiwa</option>
  93. <option value="akai">Akai</option>
  94. <option value="anitech">Anitech</option>
  95. <option value="blaupunkt">Blaupunkt</option>
  96. <option value="biazet">Biazet</option>
  97. <option value="clatronic">Clatronic</option>
  98. <option value="crown">Crown</option>
  99. <option value="curtis">Curtis</option>
  100. <option value="daewoo">Daewoo</option>
  101. <option value="elemis">Elemis</option>
  102. <option value="elta">Elta</option>
  103. <option value="finlux">Finlux</option>
  104. <option value="goldstar">Goldstar</option>
  105. <option value="grundig">Grundig</option>
  106. <option value="hcm">HCM</option>
  107. <option value="hinari">Hinari</option>
  108. <option value="hitachi">Hitachi</option>
  109. <option value="ice">ICE</option>
  110. <option value="jvc">JVC</option>
  111. <option value="lexus">Lexus</option>
  112. <option value="lg">LG</option>
  113. <option value="nokia">Nokia-ITT</option>
  114. <option value="orion">Orion</option>
  115. <option value="otake">Otake</option>
  116. <option value="panasonic">Panasonic</option>
  117. <option value="philips">Philips</option>
  118. <option value="rft">RFT</option>
  119. <option value="royal">Royal</option>
  120. <option value="lux">Lux</option>
  121. <option value="samsung">Samsung</option>
  122. <option value="sanyo">Sanyo</option>
  123. <option value="sharp">Sharp</option>
  124. <option value="siemens">Siemens</option>
  125. <option value="sony">Sony</option>
  126. <option value="tec">TEC</option>
  127. <option value="telefunken">Telefunken</option>
  128. <option value="tensai">Tensai</option>
  129. <option value="thomson">Thomson</option>
  130. <option value="toshiba">Toshiba</option>
  131. <option value="trilux">Trilux</option>
  132. <option value="unimor">Unimor</option>
  133. <option value="watson">Watson</option>
  134. <option value="inny">Inna marka</option>
  135. </select>
  136. </td>
  137. </tr>
  138. <tr>
  139. <td class="body_content">
  140. Wielkość ekranu:
  141. </td>
  142. <td>
  143. <select name="przekatna">
  144. <option value="">...wybierz...</option>
  145. <option value="14">14"</option>
  146. <option value="19">19"</option>
  147. <option value="20">20"</option>
  148. <option value="21">21"</option>
  149. <option value="22">22"</option>
  150. <option value="25">25"</option>
  151. <option value="28">28"</option>
  152. <option value="wiecej_jak_28">wiecej jak 28"</option>
  153. <option value="nie_wiem">Nie wiem</option>
  154. </select>
  155. </td>
  156. </tr>
  157. <tr>
  158. <td class="body_content">
  159. Wiek telewizora:
  160. </td>
  161. <td>
  162. <input type=text size=6 name="wiek">
  163.   </td>
  164. </tr>
  165. <tr>
  166. <td class="body_content">
  167. Objawy uszkodzenia:
  168. </td>
  169. <td>
  170. <textarea name="objawy" rows="5" cols="25"></textarea>
  171.   </td>
  172. </tr>
  173. <tr>
  174. <td class="body_content">
  175. Sugerowana data przyjazdu:
  176. </td>
  177. <td class="body_content">
  178. <input type="radio" name="data" value="dzis" checked>Dziś  <br>
  179. <input type="radio" name="data" value="inna">Data (rrrr-mm-dd) <input type=text name="data_inna" size="10">
  180.   </td>
  181. </tr>
  182. <tr>
  183. <td class="body_content">
  184. Sugerowana godzina przyjazdu:
  185. </td>
  186. <td>
  187. <input type=text name="czas" size=6>
  188.   </td>
  189. </tr>
  190. <tr>
  191. <td class="body_content">
  192. Preferowany kontakt:
  193. </td>
  194. <td>
  195. <input type="radio" name="kontakt" value="e-mail" checked>e-mail  
  196. <input type="radio" name="kontakt" value="telefon">telefon   </td>
  197. </tr>
  198.  
  199. </table>
  200. <input type="reset" value="Wyczyść">
  201. <input type="submit" value=" Dopisz ">
  202. </input>
  203. </div>
  204. </form>
  205. <div align="left">

  1. <?php
  2. // odbieramy dane z formularza
  3. $imie = $_POST['imie'];
  4. $nazwisko = $_POST['nazwisko'];
  5. $ulica = $_POST['ulica'];
  6. $nr_domu = $_POST['nr_domu'];
  7. $nr_mieszkania = $_POST['nr_mieszkania'];
  8. $miejscowosc = $_POST['miejscowosc'];
  9. $tel_stac = $_POST['tel_stac'];
  10. $tel_kom = $_POST['tel_kom'];
  11. $email = $_POST['email'];
  12. $marka = $_POST['marka'];
  13. $inna_marka = $_POST['inna_marka'];
  14. $przekatna = $_POST['przekatna'];
  15. $wiek = $_POST['wiek'];
  16. $objawy = $_POST['objawy'];
  17. $data = $_POST['data'];
  18. $data_inna = $_POST['data_inna'];
  19. $czas = $_POST['czas'];
  20. $kontakt = $_POST['kontakt'];
  21. $ip = $_SERVER['REMOTE_ADDR'];
  22.  
  23. if($imie and $nazwisko and $ulica and $nr_domu and $nr_mieszkania and $miejscowosc and $tel_stac and $tel_kom and $email and $marka and $inna_marka and $przekatna and $wiek and $objawy and $data and $data_inna and $czas and $kontakt and $ip) {
  24.  
  25.  
  26.  
  27.    // łączymy się z bazą danych
  28.    $connection = @mysql_connect("", "", "")
  29.    or die('Brak połączenia z serwerem MySQL'); mysql_query("SET NAMES 'latin2'");
  30.    $db = @mysql_select_db("", $connection)
  31.    or die('Nie mogę połączyć się z bazą danych');
  32.    
  33.    // dodajemy rekord do bazy
  34.    $ins = @mysql_query( "INSERT INTO zamowienia SET imie='$imie', nazwisko='$nazwisko', ulica='$ulica', nr_domu='$nr_domu', nr_mieszkania='$nr_mieszkania', miejscowosc='$miejscowosc', tel_stac='$tel_stac', tel_com='$tel_com', email='$email', marka='$marka', inna_marka='$inna_marka', przekatna='$przekatna', wiek='$wiek', objawy='$objawy', data='$data', data_inna='$data_inna', czas='$czas', kontakt='$kontakt', ip='$ip'" );
  35.    
  36.    if($ins) echo "<br><center><span style=\"color:green\">Twoje zamówienie zostało przyjęte! </center></span>";
  37.    else echo "<center><span style=\"color:red\">Błąd nie udało się dopisać Twojego zamówienia!</span></center>";
  38.    
  39.    mysql_close($connection);
  40. }
  41.  
  42. ?>
  1. </div>
  2. </body>
  3. </html>
piaseq
Cytat(Darekxp @ 25.10.2008, 15:22:22 ) *
nie trybi

Co znaczy nie trybi? Otrzymujesz jakiś komunikat o błędzie? Spróbuj może skorzystać z funkcji mysql_error().
Darekxp
nie nie ma błedów, poprostu nie dodaje nic do bazy, 0 akcji po kliknięciu na Dopisz.
piaseq
Cytat(Darekxp @ 25.10.2008, 17:51:21 ) *
nie nie ma błedów, poprostu nie dodaje nic do bazy, 0 akcji po kliknięciu na Dopisz.

Ale wiesz, że @ przed funkcją, które stosujesz w skrypcie blokują wyświetlanie błędów. Spróbuj je usunąć, sprawdź czy masz włączone raportowanie i wyświetlanie błędów. Być może błędy są tylko ty masz zablokowane ich wyświetlanie. Drugim sposobem sprawdzenia na czym polega problem jest wyświetlenie zapytania przed jego wykonaniem. Takie zapytanie możesz skopiować i spróbować wykonać ręcznie, np. w phpmyadminie. W ten sposób sprawdzisz czy zapytanie, które tworzy skrypt jest poprawne.
Pilsener
Tak jak pisze Piaseq, a ja dodam jeszcze od siebie, czy jesteś aż tak pracowity, że:
  1. <?php
  2. $czas = $_POST['czas'];
  3. $kontakt = $_POST['kontakt'];
  4. $ip = $_SERVER['REMOTE_ADDR'];
  5.  
  6. if($imie and $nazwisko and $ulica and $nr_domu and $nr_mieszkania and $miejscowosc and $tel_stac and $tel_kom and $email and $marka and $inna_marka and $przekatna and $wiek and $objawy and $data and $data_inna and $czas and $kontakt and $ip) {
  7. ?>
- ?

1. Zainteresuj się pętlą foreach
2. Waliduj dane, bo ktoś Ci wrzuci do bazy/skryptu złośliwy kod

Podpowiem: tablice $_POST parsujesz w pętli foreach, a elementy pobierasz na podstawie nazw pól w bazie, które możesz budować np. tak: data_dataur, nip_nip, imie_imieklienta - na podstawie bazy skrypt automatycznie generuje formularz, następnie dane odbierasz w pętli i sprawdzasz *_ - jak jest to data, to sprawdzasz, czy poprawna data, jak imię, to czy pasuje do listy polskich imion itp. itd. etc.

W ten sposób jak Ci się zmieni asortyment albo baza to będziesz za każdym razem modyfikował i kod html, i silnik php - a jak popełnisz gdzieś literówkę to się naszukasz i jeszcze nas w to wciągniesz winksmiley.jpg
Darekxp
napisałem cały kod od nowa z małymi modyfikacjami bo było szybciej to zrobić jak znaleźć błąd;) temat uważam za zamknięty;)
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.