Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][MySQL][PHP]Gdzie jest błąd?
Forum PHP.pl > Forum > Przedszkole
zaworek
Witam,

mam formularz, który przed wysłaniem sprawdza czy spełnione są pewne warunki. Walidacja przez JavaScript działa poprawnie.
Klikając przycisk Dodaj wpisane/wybrane dane powinny zostać zapisane do bazy danych. Baza oczywiście została uprzednio utworzona. Kolumny mają prawidłową nazwę.
Problem w tym, że dodaje mi jedynie zmienną $_SESSION[login] oraz zmienną $dziś. Pozostałe zmienne nie są przechwytywane.

kod formularza:

  1. <?php
  2. if(isset($_SESSION['zalogowany'])) {
  3. }
  4. else{
  5. echo "<center>Nie jesteś zalogowany!<br>";
  6. echo "<a href='logowanie.php'>Zaloguj się</a></center>";
  7. break;
  8. }
  9. ?>
  10. <html>
  11. <head>
  12. <meta http-equiv="Content-Language" content="pl">
  13. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  14. <title>Baza</title>
  15. <style type="text/css">
  16. body
  17. {
  18. background-color: #ffffff;
  19. color: #000000;
  20. }
  21. </style>
  22. <script type="text/javascript">
  23. <!--
  24. function Walidacja(theForm)
  25. {
  26. if (theForm.Combobox1.selectedIndex < 0)
  27. {
  28. alert("Wybierz osobę");
  29. theForm.Combobox1.focus();
  30. return false;
  31. }
  32. if (theForm.Combobox1.selectedIndex == 0)
  33. {
  34. alert("Wybierz osobę");
  35. theForm.Combobox1.focus();
  36. return false;
  37. }
  38. if (theForm.Combobox2.selectedIndex < 0)
  39. {
  40. alert("wybierz model");
  41. theForm.Combobox2.focus();
  42. return false;
  43. }
  44. if (theForm.Combobox2.selectedIndex == 0)
  45. {
  46. alert("wybierz model");
  47. theForm.Combobox2.focus();
  48. return false;
  49. }
  50. if (theForm.Combobox3.selectedIndex < 0)
  51. {
  52. alert("proszę wybrać powód");
  53. theForm.Combobox3.focus();
  54. return false;
  55. }
  56. if (theForm.Combobox3.selectedIndex == 0)
  57. {
  58. alert("proszę wybrać powód");
  59. theForm.Combobox3.focus();
  60. return false;
  61. }
  62. if (theForm.Combobox4.selectedIndex < 0)
  63. {
  64. alert("proszę wybrać czyja wina");
  65. theForm.Combobox4.focus();
  66. return false;
  67. }
  68. if (theForm.Combobox4.selectedIndex == 0)
  69. {
  70. alert("proszę wybrać czyja wina");
  71. theForm.Combobox4.focus();
  72. return false;
  73. }
  74. if (theForm.Editbox3.value == "")
  75. {
  76. alert("podaj numer w formacie 10 cyfrowym");
  77. theForm.Editbox3.focus();
  78. return false;
  79. }
  80. if (theForm.Editbox3.value.length < 10)
  81. {
  82. alert("podaj numer w formacie 10 cyfrowym");
  83. theForm.Editbox3.focus();
  84. return false;
  85. }
  86. if (theForm.Editbox3.value.length > 10)
  87. {
  88. alert("podaj numer w formacie 10 cyfrowym");
  89. theForm.Editbox3.focus();
  90. return false;
  91. }
  92. var strFilter = /^[-+]?\d*\.?\d*$/;
  93. var chkVal = theForm.Editbox2.value;
  94. if (!strFilter.test(chkVal))
  95. {
  96. alert("podaj poprawny format HWID");
  97. theForm.Editbox2.focus();
  98. return false;
  99. }
  100. if (theForm.Editbox2.value.length < 0)
  101. {
  102. alert("podaj poprawny format HWID");
  103. theForm.Editbox2.focus();
  104. return false;
  105. }
  106. if (theForm.Editbox2.value.length > 0)
  107. {
  108. alert("podaj poprawny format HWID");
  109. theForm.Editbox2.focus();
  110. return false;
  111. }
  112. return true;
  113. }
  114. //-->
  115. </script>
  116. </head>
  117. <body>
  118. <div id="wb_Form1" style="position:absolute;background-color:#F0F0F0;left:40px;top:30px;width:647px;height:271px;">
  119. <form name="form" method="post" action="dodaj.php" enctype="text/plain" accept-charset="UTF-8" id="Form1" onsubmit="return Walidacja(this)">
  120. <input type="hidden" name="login" value="<? echo $_SESSION['login'];?>">
  121. <div style="position:absolute;left:19px;top:17px;width:198px;height:20px;border:1px #C0C0C0 solid;z-index:0">
  122. <select name="technik" size="1" id="Combobox1" style="position:absolute;left:0px;top:0px;width:100%;height:100%;border-width:0px;font-family:Courier New;font-size:13px;">
  123. <option selected value="wybierz osobe">wybierz osobe</option>
  124. <option value="artur">AR</option>
  125. <option value="robert">RL</option>
  126. <option value="norbert">NP</option>
  127. </select>
  128. </div>
  129. <div style="position:absolute;left:19px;top:53px;width:198px;height:20px;border:1px #C0C0C0 solid;z-index:1">
  130. <select name="model" size="1" id="Combobox2" style="position:absolute;left:0px;top:0px;width:100%;height:100%;border-width:0px;font-family:Courier New;font-size:13px;">
  131. <option selected value="wybierz">wybierz model</option>
  132. <option value="A">A</option>
  133. <option value="B">B</option>
  134. <option value="C">C</option>
  135. </select>
  136. </div>
  137. <div style="position:absolute;left:242px;top:17px;width:377px;height:20px;border:1px #C0C0C0 solid;z-index:2">
  138. <select name="opis" size="1" id="Combobox3" style="position:absolute;left:0px;top:0px;width:100%;height:100%;border-width:0px;font-family:Courier New;font-size:13px;">
  139. <option selected value="opis">wybierz powód</option>
  140. <option value="A">A</option>
  141. <option value="B">B</option>
  142. <option value="C">C</option>
  143. </select>
  144. </div>
  145. <div style="position:absolute;left:19px;top:92px;width:119px;height:20px;border:1px #C0C0C0 solid;z-index:3">
  146. <select name="wina" size="1" id="Combobox4" style="position:absolute;left:0px;top:0px;width:100%;height:100%;border-width:0px;font-family:Courier New;font-size:13px;">
  147. <option selected value="czyja wina">Kto</option>
  148. <option value="A">A</option>
  149. <option value="B">B</option>
  150. <option value="C">C</option>
  151. </select>
  152. </div>
  153. <div style="position:absolute;left:19px;top:137px;width:333px;height:20px;border:1px #C0C0C0 solid;z-index:4">
  154. <select name="powod" size="1" id="Combobox5" style="position:absolute;left:0px;top:0px;width:100%;height:100%;border-width:0px;font-family:Courier New;font-size:13px;">
  155. <option selected value="powod">Powod</option>
  156. <option value="A">A</option>
  157. <option value="B">B</option>
  158. <option value="C">C</option>
  159. </select>
  160. </div>
  161. <input name="komentarz" type="text" id="Editbox1" style="position:absolute;left:19px;top:178px;width:590px;height:18px;border:1px #C0C0C0 solid;font-family:Courier New;font-size:13px;z-index:5" name="komentarz" value="tu wpisz komentarz">
  162. <input name="sprawa" type="text" id="Editbox3" style="position:absolute;left:19px;top:226px;width:94px;height:18px;border:1px #C0C0C0 solid;font-family:Courier New;font-size:13px;z-index:6" name="sprawa" value="" maxlength="10">
  163. <input name="hwid" type="text" id="Editbox2" style="position:absolute;left:553px;top:135px;width:54px;height:18px;border:1px #C0C0C0 solid;font-family:Courier New;font-size:13px;z-index:7" name="hwid" value="" maxlength="4">
  164. <div id="wb_Text2" style="margin:0;padding:0;position:absolute;left:19px;top:209px;width:103px;height
    :16px;text-align:left;z-index:8;">
  165. <font style="font-size:13px" color="#000000" face="Arial">numer sprawy</font></div>
  166. <div id="wb_Text1" style="margin:0;padding:0;position:absolute;left:508px;top:140px;width:60px;height
    :16px;text-align:left;z-index:9;">
  167. <font style="font-size:13px" color="#000000" face="Arial">HWID</font></div>
  168. <input type="submit" id="Button1" name="dodaj" value="Dodaj" style="position:absolute;left:169px;top:225px;width:96px;height:25px;font-family:Arial;font-size:13px;z-index:10">
  169. <input type="reset" id="Button2" name="kasuj" value="Kasuj" style="position:absolute;left:283px;top:225px;width:96px;height:25px;font-family:Arial;font-size:13px;z-index:11">
  170. </form>
  171. </div>
  172. </body>
  173. </html>


kod doda.php:

  1. <?php
  2. $dzis = date("Y-m-d H:i:s");
  3. $technik = $_POST['technik'];
  4. $model = $_POST['model'];
  5. $usterka = htmlspecialchars($_POST['opis']);
  6. $wina = $_POST['wina'];
  7. $powod=$_POST['powod'];
  8. $komentarz = htmlspecialchars($_POST['komentarz']);
  9. $sprawa = $_POST['sprawa'];
  10. $hwid = $_POST['hwid'];
  11.  
  12. $con = mysql_connect("host","user","pass");
  13. if (!$con)
  14. {
  15. die('Nie można się połączyć: ' . mysql_error());
  16. }
  17. mysql_select_db("zur", $con);
  18. mysql_set_charset('utf8');
  19.  
  20. $sql="INSERT INTO ber (data, login, technik, model, opis)
  21. VALUES
  22. ('$dzis','$_SESSION[login]','$_POST[technik]','$model','$usterka')";
  23. ?>


Możecie mnie naprowadzić gdzie jest błąd?
NEO.pl
Po co uzywasz dwa razy "name" per input? I gdzie masz walidacje po stronie serwera?
zaworek
Cytat(NEO.pl @ 31.03.2011, 09:42:51 ) *
Po co uzywasz dwa razy "name" per input? I gdzie masz walidacje po stronie serwera?


Walidacja nie jest po stronie serwera tylko w czasie rzeczywistym, odpowiada za to funkcja Walidacja (JavaScript).
Podwójny "name" wygenerował mi automatycznie program WYSIWYG. To nie jest raczej powodem błędów o które pytam.
askone
Według mnie powodem braku danych w tablicy $_POST są nie zamknięte tagi pól input np:
  1. <input type="hidden" name="login" value="<? echo $_SESSION['login'];?>">


spróbuj dla każdego tagu input zmienić na:
  1. <input type="hidden" name="login" value="<? echo $_SESSION['login'];?>"/>


Pozdrawiam
zaworek
Cytat(askone @ 31.03.2011, 10:18:28 ) *
Według mnie powodem braku danych w tablicy $_POST są nie zamknięte tagi pól input np:

spróbuj dla każdego tagu input zmienić na:
  1. <input type="hidden" name="login" value="<? echo $_SESSION['login'];?>"/>


Pozdrawiam


Usunąłem w ogóle ten wiersz. Zmienna $_SESSION['login'] została jedynie w kodzie dodaj.php.
Jest gorzej niż było.
Nie dodaje już nawet daty i loginu chociaż je wyświetla (wywołałem te zmienne przez echo).

  1. echo $dzis; //pojawia się
  2. echo $_SESSION[login]; //pojawia się
  3.  
  4. $sql="INSERT INTO ber (data, login, technik, model, usterka)
  5. VALUES
  6. ('$dzis','$_SESSION[login]','$_POST[technik]','$model','$usterka')";
askone
  • Zamknij poprawnie każdy z tagów input jaki masz w formularzu - usunąłeś tylko jeden pozostało pozostałe są też źle zamknięte
  • Sprawdź dane wysyłane przez formularz - możesz to zrobić w Firebugu lub poprzez dodanie w kodzie dodaj.php var_dump($_POST)


edit:
Wcale mnie nie dziwi, że wyświetlają Ci się dane o użytkowniku i o aktualnej dacie. Przecież użytkownika pobierasz z danych sesyjnych, a nie z $_POST, Datę natomiast wyliczasz - więc to że akurat te dane się wyświetlają oznacza tylko, iż masz poprawnie podaną nazwę pliku php do obsługi formularza.

Pozdrawiam
zaworek
Zamknięcie wszystkich 5 inputów nie przyniosło żadnej zmiany.
Teraz kod wygląda tak:

  1. <?php
  2. if(isset($_SESSION['zalogowany'])) {
  3. }
  4. else{
  5. echo "<center>Nie jesteś zalogowany!<br>";
  6. echo "<a href='logowanie.php'>Zaloguj się</a></center>";
  7. break;
  8. }
  9. ?>
  10. <html>
  11. <head>
  12. <meta http-equiv="Content-Language" content="pl">
  13. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  14. <title>Baza</title>
  15. <style type="text/css">
  16. body
  17. {
  18. background-color: #ffffff;
  19. color: #000000;
  20. }
  21. </style>
  22. <script type="text/javascript">
  23. <!--
  24. function Walidacja(theForm)
  25. {
  26. if (theForm.Combobox1.selectedIndex < 0)
  27. {
  28. alert("Wybierz osobę");
  29. theForm.Combobox1.focus();
  30. return false;
  31. }
  32. if (theForm.Combobox1.selectedIndex == 0)
  33. {
  34. alert("Wybierz osobę");
  35. theForm.Combobox1.focus();
  36. return false;
  37. }
  38. if (theForm.Combobox2.selectedIndex < 0)
  39. {
  40. alert("wybierz model");
  41. theForm.Combobox2.focus();
  42. return false;
  43. }
  44. if (theForm.Combobox2.selectedIndex == 0)
  45. {
  46. alert("wybierz model");
  47. theForm.Combobox2.focus();
  48. return false;
  49. }
  50. if (theForm.Combobox3.selectedIndex < 0)
  51. {
  52. alert("proszę wybrać powód");
  53. theForm.Combobox3.focus();
  54. return false;
  55. }
  56. if (theForm.Combobox3.selectedIndex == 0)
  57. {
  58. alert("proszę wybrać powód");
  59. theForm.Combobox3.focus();
  60. return false;
  61. }
  62. if (theForm.Combobox4.selectedIndex < 0)
  63. {
  64. alert("proszę wybrać czyja wina");
  65. theForm.Combobox4.focus();
  66. return false;
  67. }
  68. if (theForm.Combobox4.selectedIndex == 0)
  69. {
  70. alert("proszę wybrać czyja wina");
  71. theForm.Combobox4.focus();
  72. return false;
  73. }
  74. if (theForm.Editbox3.value == "")
  75. {
  76. alert("podaj numer w formacie 10 cyfrowym");
  77. theForm.Editbox3.focus();
  78. return false;
  79. }
  80. if (theForm.Editbox3.value.length < 10)
  81. {
  82. alert("podaj numer w formacie 10 cyfrowym");
  83. theForm.Editbox3.focus();
  84. return false;
  85. }
  86. if (theForm.Editbox3.value.length > 10)
  87. {
  88. alert("podaj numer w formacie 10 cyfrowym");
  89. theForm.Editbox3.focus();
  90. return false;
  91. }
  92. var strFilter = /^[-+]?\d*\.?\d*$/;
  93. var chkVal = theForm.Editbox2.value;
  94. if (!strFilter.test(chkVal))
  95. {
  96. alert("podaj poprawny format HWID");
  97. theForm.Editbox2.focus();
  98. return false;
  99. }
  100. if (theForm.Editbox2.value.length < 0)
  101. {
  102. alert("podaj poprawny format HWID");
  103. theForm.Editbox2.focus();
  104. return false;
  105. }
  106. if (theForm.Editbox2.value.length > 0)
  107. {
  108. alert("podaj poprawny format HWID");
  109. theForm.Editbox2.focus();
  110. return false;
  111. }
  112. return true;
  113. }
  114. //-->
  115. </script>
  116. </head>
  117. <body>
  118. <div id="wb_Form1" style="position:absolute;background-color:#F0F0F0;left:40px;top:30px;width:647px;height:271px;">
  119. <form name="form" method="post" action="dodaj.php" enctype="text/plain" accept-charset="UTF-8" id="Form1" onsubmit="return Walidacja(this)">
  120. <div style="position:absolute;left:19px;top:17px;width:198px;height:20px;border:1px #C0C0C0 solid;z-index:0">
  121. <select name="technik" size="1" id="Combobox1" style="position:absolute;left:0px;top:0px;width:100%;height:100%;border-width:0px;font-family:Courier New;font-size:13px;">
  122. <option selected value="wybierz osobe">wybierz osobe</option>
  123. <option value="artur">AR</option>
  124. <option value="robert">RL</option>
  125. <option value="norbert">NP</option>
  126. </select>
  127. </div>
  128. <div style="position:absolute;left:19px;top:53px;width:198px;height:20px;border:1px #C0C0C0 solid;z-index:1">
  129. <select name="model" size="1" id="Combobox2" style="position:absolute;left:0px;top:0px;width:100%;height:100%;border-width:0px;font-family:Courier New;font-size:13px;">
  130. <option selected value="wybierz">wybierz model</option>
  131. <option value="A">A</option>
  132. <option value="B">B</option>
  133. <option value="C">C</option>
  134. </select>
  135. </div>
  136. <div style="position:absolute;left:242px;top:17px;width:377px;height:20px;border:1px #C0C0C0 solid;z-index:2">
  137. <select name="opis" size="1" id="Combobox3" style="position:absolute;left:0px;top:0px;width:100%;height:100%;border-width:0px;font-family:Courier New;font-size:13px;">
  138. <option selected value="opis">wybierz powód</option>
  139. <option value="A">A</option>
  140. <option value="B">B</option>
  141. <option value="C">C</option>
  142. </select>
  143. </div>
  144. <div style="position:absolute;left:19px;top:92px;width:119px;height:20px;border:1px #C0C0C0 solid;z-index:3">
  145. <select name="wina" size="1" id="Combobox4" style="position:absolute;left:0px;top:0px;width:100%;height:100%;border-width:0px;font-family:Courier New;font-size:13px;">
  146. <option selected value="czyja wina">Kto</option>
  147. <option value="A">A</option>
  148. <option value="B">B</option>
  149. <option value="C">C</option>
  150. </select>
  151. </div>
  152. <div style="position:absolute;left:19px;top:137px;width:333px;height:20px;border:1px #C0C0C0 solid;z-index:4">
  153. <select name="powod" size="1" id="Combobox5" style="position:absolute;left:0px;top:0px;width:100%;height:100%;border-width:0px;font-family:Courier New;font-size:13px;">
  154. <option selected value="powod">Powod</option>
  155. <option value="A">A</option>
  156. <option value="B">B</option>
  157. <option value="C">C</option>
  158. </select>
  159. </div>
  160. <input name="komentarz" type="text" id="Editbox1" style="position:absolute;left:19px;top:178px;width:590px;height:18px;border:1px #C0C0C0 solid;font-family:Courier New;font-size:13px;z-index:5" value="tu wpisz komentarz"/>
  161. <input name="sprawa" type="text" id="Editbox3" style="position:absolute;left:19px;top:226px;width:94px;height:18px;border:1px #C0C0C0 solid;font-family:Courier New;font-size:13px;z-index:6" value="" maxlength="10"/>
  162. <input name="hwid" type="text" id="Editbox2" style="position:absolute;left:553px;top:135px;width:54px;height:18px;border:1px #C0C0C0 solid;font-family:Courier New;font-size:13px;z-index:7" value="" maxlength="4"/>
  163. <div id="wb_Text2" style="margin:0;padding:0;position:absolute;left:19px;top:209px;width:103px;height
    :16px;text-align:left;z-index:8;">
  164. <font style="font-size:13px" color="#000000" face="Arial">numer sprawy</font></div>
  165. <div id="wb_Text1" style="margin:0;padding:0;position:absolute;left:508px;top:140px;width:60px;height
    :16px;text-align:left;z-index:9;">
  166. <font style="font-size:13px" color="#000000" face="Arial">HWID</font></div>
  167. <input type="submit" id="Button1" name="dodaj" value="Dodaj" style="position:absolute;left:169px;top:225px;width:96px;height:25px;font-family:Arial;font-size:13px;z-index:10"/>
  168. <input type="reset" id="Button2" name="kasuj" value="Kasuj" style="position:absolute;left:283px;top:225px;width:96px;height:25px;font-family:Arial;font-size:13px;z-index:11"/>
  169. </form>
  170. </div>
  171. </body>
  172. </html>


var_dump($_POST) pokazuje array(0) { }
nospor
wywal te
enctype="text/plain"
z <form>
zaworek
Cytat(nospor @ 31.03.2011, 11:58:09 ) *
wywal te
enctype="text/plain"
z <form>



Jest już lepiej. Teraz var_dump($_POST) pokazuje:

array(9) { ["technik"]=> string(5) "artur" ["model"]=> string(1) "A" ["opis"]=> string(1) "A" ["wina"]=> string(1) "A" ["powod"]=> string(5) "powod" ["komentarz"]=> string(18) "tu wpisz komentarz" ["sprawa"]=> string(10) "1111111111" ["hwid"]=> string(0) "" ["dodaj"]=> string(5) "Dodaj" }


niestety w bazie brak rekordu, kod dodaj.php

  1. <?php
  2. $dzis = date("Y-m-d H:i:s");
  3. $technik = $_POST['technik'];
  4. $model = $_POST['model'];
  5. $usterka = htmlspecialchars($_POST['opis']);
  6. $wina = $_POST['wina'];
  7. $powod=$_POST['powod'];
  8. $komentarz = htmlspecialchars($_POST['komentarz']);
  9. $sprawa = $_POST['sprawa'];
  10. $hwid = $_POST['hwid'];
  11.  
  12. var_dump($_POST);
  13.  
  14. $con = mysql_connect("10.134.1.27","quiz","12345");
  15. if (!$con)
  16. {
  17. die('NIe można się połączyć: ' . mysql_error());
  18. }
  19. mysql_select_db("zur", $con);
  20. mysql_set_charset('utf8');
  21.  
  22. echo $dzis;
  23. echo $_SESSION[login];
  24.  
  25. $sql="INSERT INTO ber (data, login, technik, model, usterka)
  26. VALUES
  27. ('$dzis','$_SESSION[login]','$_POST[technik]','$model','$usterka')";
  28.  
  29. ?>
nospor
No bo ty tylko napisales zapytanie

$sql="INSERT INTO ber (data, login, technik, model, usterka)
VALUES
('$dzis','$_SESSION[login]','$_POST[technik]','$model','$usterka')";

A musisz je jeszcze wykonać....

mysql_query($sql) or die(mysql_error());
zaworek
Rzeczywiście, nie zauważyłem tego.
Przy okazji zapytam czy jest prosta metoda aby po dodaniu danych przekierowywało spowrotem do formularza?


Dziękuję za pomoc @nospor.
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.