Pomoc - Szukaj - U¿ytkownicy - Kalendarz
Pe³na wersja: [php] Maly problem z wstawianiem zmiennych
Forum PHP.pl > Forum > Przedszkole
eXido
Witam,

Ponizej jest kod na którym pracuje, nic wielkiego, uzytkownik wpisuje pare rzeczy które php potem przekazje MySQLowi:

  1. <html>
  2. <head><title>Add a Hirer!</title>
  3. </head>
  4. <body background="img19.gif">
  5.  
  6. <center>
  7. <p1><B>Add a New Hirer to the Village Hall Booking System!</B></p1>
  8. </center>
  9.  
  10.  
  11. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  12.  
  13. <br><table><tr><td width="200">
  14.  
  15. Title</td><td width="200"><select name="title">
  16. <option>Choose
  17. <option>Doctor
  18. <option>Father
  19. <option>Master
  20. <option>Miss
  21. <option>Mr
  22. <option>Mrs
  23. <option>Professor
  24. <option>Sister
  25. </select>
  26.  
  27. </td><td width="200"><b>Further Details</b></td></tr>
  28.  
  29. <tr><td width="200">
  30.  
  31. Surname</td><td width="150"><input type="text" name="surname"><br></td><td width="200">Time of Booking:</td>
  32. <td width="200"><select name="Time">
  33. <option selected>Choose
  34. <Option>Morning
  35. <Option>Afternoon
  36. <Option>Evening
  37. <Option>Evening Extension
  38. </select>
  39. </td></tr><tr><td width="200">Forename</td><td width="200"><input type="text" name="forename"></td>
  40. <td width="200">Type of Booking:</td><td width="200"><select name="Type">
  41. <option selected>Choose
  42. <option>Chess Club
  43. <option>Cubs & Scouts
  44. <option>Golden Wedding Anniversary
  45. <option>Guides & Brownies
  46. <option>Line Dancing
  47. <option>Play Group
  48. <option>Silver Wedding Anniversary
  49. <option>Women's Institute
  50. <option>18th Birthday Party
  51. <option>Other
  52. </select>
  53. </td></tr><tr><td width="200">Street Number</td><td width="200"><input type="text" name="street_number"></td>
  54. <td width="200">Date:</td><td width="200">
  55.  
  56. <select name="DateNumber">
  57. <option selected>1
  58. <option>2
  59. <option>3
  60. <option>4
  61. <option>5
  62. <option>6
  63. <option>7
  64. <option>8
  65. <option>9
  66. <option>10
  67. <option>11
  68. <option>12
  69. <option>13
  70. <option>14
  71. <option>15
  72. <option>16
  73. <option>17
  74. <option>18
  75. <option>19
  76. <option>20
  77. <option>21
  78. <option>22
  79. <option>23
  80. <option>24
  81. <option>25
  82. <option>26
  83. <option>27
  84. <option>28
  85. <option>29
  86. <option>30
  87. <option>31
  88. <option>32
  89. </select>
  90.  
  91. <select name="DateMonth">
  92. <option selected>January
  93. <option>February
  94. <option>March
  95. <option>April
  96. <option>May
  97. <option>June
  98. <option>July
  99. <option>August
  100. <option>September
  101. <option>October
  102. <option>November
  103. <option>December
  104. </select>
  105.  
  106. <select name="DateYear">
  107. <option selected>2005
  108. <option>2006
  109. <option>2007
  110. </select>
  111.  
  112. </td></tr><tr><td width="200">Street Name</td><td width="200"><input type="text" name="street_name"></td>
  113. <td width="200">Day Of Week:</td><td width="200"><select name="Day_of_week">
  114. <option selected>Choose
  115. <option>Monday
  116. <option>Tuesday
  117. <option>Wednesday
  118. <option>Thursday
  119. <option>Friday
  120. <option>Saturday
  121. <option>Sunday
  122. </select>
  123. </td></tr><tr><td width="200">Town/City</td><td width="200"><input type="text" name="town_city"></td>
  124. <td width="200">Regular Customer:</td><td width="200"><select name="Regular">
  125. <option selected>Choose
  126. <option>Yes
  127. <option>No
  128. </select>
  129. </td></tr><tr><td width="200">County</td><td width="200"><input type="text" name="county"></td>
  130. <td width="200">Paid:</td><td width="200"><select name="Paid">
  131. <option selected>Choose
  132. <option>Yes
  133. <option>No
  134. </select>
  135. </td></tr><tr><td width="200">Post Code</td><td width="200"><input type="text" name="PostCode">
  136. </td></tr><tr><td width="200">Home Tel. No.</td><td width="200"><input type="text" name="home_tel">
  137. </td></tr><tr><td width="200">Mobile Tel. No.</td><td width="200"><input type="text" name="mobile_tel">
  138. </td></tr><tr><td width="200">Email</td><td width="200"><input type="text" name="email">
  139. </td></tr> 
  140.  
  141.  
  142. </table>
  143.  
  144. <br><br><input type="submit" value="Submit"><br><br>
  145. </form>
  146. <font color="orange"><font size="4"><B>
  147. <?php
  148.  
  149. $Time = $_REQUEST['Time'];
  150. $Price = $_REQUEST['Price'];
  151. $Regular = $_REQUEST['Regular'];
  152. $Paid = $_REQUEST['Paid'];
  153. $Type = $_REQUEST['Type'];
  154. $Day_of_week = $_REQUEST['Day_of_week'];
  155.  
  156.  
  157. if ($Type == 'Golden Wedding Anniversary' OR $Type == 'Silver Wedding Anniversary' OR $Type == '18th Birthday Party' AND $Day_of_week == 'Friday' OR $Day_of_week == 'Saturday' AND $Time == 'Evening') {
  158. $Price="10.00";
  159. echo "Your booking qualifies for our special rate of 10.00 pounds including the e
    vening extension!"
    ;
  160.  
  161. }
  162.  
  163.  
  164. elseif ($Time == 'Morning') {
  165. $Price="12.00";
  166. echo "The price is 12.00 pounds.";
  167.  
  168. }
  169.  
  170. elseif ($Time == 'Afternoon') {
  171. $Price="12.00";
  172. echo "The price is 12.00 pounds.";
  173.  
  174. }
  175.  
  176. elseif ($Time == 'Evening') {
  177. $Price="15.00";
  178. echo "The price is 15.00 pounds.";
  179.  
  180. }
  181.  
  182. elseif ($Time == 'Evening Extension') {
  183. $Price="5.00";
  184. echo "The price is 5.00 pounds.";
  185.  
  186. }
  187.  
  188.  
  189.  
  190. else {
  191.  
  192. echo "The price will be quoted based on your selection.";
  193.  
  194. }
  195.  
  196.  
  197. if ($Regular == 'Yes') {
  198. $Regular="Yes";
  199. }
  200. else {
  201. $Regular="No";
  202. }
  203.  
  204. if ($Paid == 'Yes') {
  205. $Paid="Yes";
  206. }
  207. else {
  208. $Paid="No";
  209. }
  210.  
  211.  
  212. ?>
  213. <br>
  214. <?php
  215.  
  216. $dbcnx = @mysql_connect('localhost', 'anglopol_admin', 'pass');
  217. if (!$dbcnx) {
  218. exit('<p>Unable to connect to the database server at this time.</p>');
  219. }
  220.  
  221. if (!@mysql_select_db('anglopol_VillageHall')) {
  222. exit('<p>Unable to locate the Village Hall database at this time.</p>');
  223. }
  224.  
  225.  
  226. if (isset($_POST['title'])) {
  227.  
  228.  
  229. $title = $_POST['title'];
  230. $surname = $_POST['surname'];
  231. $forename = $_POST['forename'];
  232. $street_number = $_POST['street_number'];
  233. $street_name = $_POST['street_name'];
  234. $town_city = $_POST['town_city'];
  235. $county = $_POST['county'];
  236. $PostCode = $_POST['PostCode'];
  237. $Home_Tel = $_POST['home_tel'];
  238. $Mobile_Tel = $_POST['mobile_tel'];
  239. $email = $_POST['email'];
  240. $Time = $_POST['Time'];
  241. $Type = $_POST['Type'];
  242. $DateNumber = $_POST['DateNumber'];
  243. $DateMonth = $_POST['DateMonth'];
  244. $DateYear = $_POST['DateYear'];
  245. $Price = $_POST['Price'];
  246. $Regular = $_POST['Regular'];
  247. $Paid = $_POST['Paid'];
  248.  
  249. $sql = "INSERT INTO Hirer SET
  250. title='$title',
  251. surname='$surname',
  252. forename='$forename',
  253. street_number='$street_number',
  254. street_name='$street_name',
  255. town_city='$town_city',
  256. county='$county',
  257. PostCode='$PostCode',
  258. Home_Tel='$Home_Tel',
  259. Mobile_Tel='$Mobile_Tel',
  260. Email='$email'
  261. Time='$Time',
  262. Type='$Type',
  263. DateNumber='$DateNumber',
  264. DateMonth='$DateMonth',
  265. DateYear='$DateYear',
  266. Day_of_week='$Day_of_week',
  267. Price='$Price',
  268. Regular='$Regular',
  269. Paid='$Paid'";
  270.  
  271. if (@mysql_query($sql)) {
  272.  
  273. echo '<p>Your Hirer & Booking Details have been added.</p>';
  274. } else {
  275. echo '<p>Error submitting hirer details: ' .
  276. mysql_error() . '</p>';
  277. }
  278. }
  279.  
  280. $HirerID = mysql_insert_id();
  281. ?>
  282.  
  283.  
  284. <br><a href="mainpage.php"> Back to Main Page</a>
  285.  
  286.  
  287. </body>
  288. </html>


Ta stronka juz mi wczesniej dzialala w 100%, tyle ze potem dodalem pare dodatkowych informacji które maja znalezc sie w bazie danych, wszystkie te po $_POST['Email'].
I teraz problem, przestalo dzialac i wyrzuca mi taki blad:

  1. <?php
  2.  
  3. Error submitting hirer details: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Time='Choose' Type='Choose' DateNumber='1' DateMonth='January' DateYear=' at line 13
  4.  
  5. ?>


Widze ze cos jest nie tak z tymi nowymi informacjami które dodalem ale siedzie juz nad tym od wczoraj i przegladam caly kod nie widzac co jest nie tak.
Bylbym naprawde wdzieczny gdyby którys ze znawców mógl pokazac w czym problem winksmiley.jpg

Pozdrawiam.
nospor
bo widzisz, pola ktore wymieniasz w zapytaniu, musisz oddzielac przecinkiem, ale akurat o tym zapomniales w pewnym miejscu. w ktorym? o tym juz ci mowi komunikat bledu.

ps: jestes pewien ze ta zabojcza ilosc kodu html ze wszystkimi opcjami selecta jest nam potrzebna?
eXido
Alez ja jestem....chyba sie zaciukam. Taki malutki blad i tyle czasu stracilem. Ale w tym piekno programowania winksmiley.jpg

Dzieki za podpowiedz!

Co do tych selectów - chce zeby byla jak najmniejsza szansa ze uzytkownik sie pomyli i wpisze jakas niedobra date - a tak jak dam selecty to nie dosc ze musi wybrac cos poprawnego to jeszcze nie musze potem weryfikowac czy dane sa dobre winksmiley.jpg

Jedna z opcji to Data zamówienia (booking date) w której mam select dla dnia (od 1-32), select na miesiac i potem select na rok. Próbowalem wczesniej miec jedna kolumne na to wszystko w MySQL (rodzaj kolumny "Date") ale jak cokolwiek wprowadzalem do tej kolumny przez forumlarz taki jak ten tu, nic sie nie zapisywalo i w MySQL w kolumnie Date wszystkie daty byly 00-00-0000, mimo iz wprowadzalem wszystkimi mozliwymi formatami ta date.
Jesli móglbys podpowiedziec czemu takie cos nie dzialalo, moze i spróbuje tak bo rzeczywiscie byloby latwiej winksmiley.jpg
nospor
Cytat
a tak jak dam selecty to nie dosc ze musi wybrac cos poprawnego
tja, jasne, szczegolnie jak twoj select pozwala na wybranie 32 dni smile.gif to sie nazywa poprawnosc danych.

Daj inputa na wpisanie daty w formacie rrrr-mm-dd a potem waliduj. jest mnostwo kodów do walidacji - zaden problem.
Mozesz nawet zrobic kontrolke, w ktorej sie bedzie wybieralo konkretn± date z kalendarza, ale to juz inna bajka (ale skrypty tez sa smile.gif )

Cytat
to jeszcze nie musze potem weryfikowac czy dane sa dobre
I tu jestes w wielkim bledzie. Dane mozna przeslac nie tylko z Twojego formularza. No chyba ze zastosujesz jakies zabezpieczenie `ala token
eXido
Cytat(nospor @ 2006-05-09 13:59:49)
Daj inputa na wpisanie daty w formacie rrrr-mm-dd a potem waliduj. jest mnostwo kodów do walidacji - zaden problem.
Mozesz nawet zrobic kontrolke, w ktorej sie bedzie wybieralo konkretn± date z kalendarza, ale to juz inna bajka (ale skrypty tez sa smile.gif )

A jak taki input by wygladal, zeby bylo tak jak piszesz w formacie rrrr-mm-dd? Czy móglbys wkleic cos co móglbym wstawic?
I jak walidowac?
Jak widac, jestem jeszcze poczatkujacy winksmiley.jpg

Cytat(nospor @ 2006-05-09 13:59:49)
I tu jestes w wielkim bledzie. Dane mozna przeslac nie tylko z Twojego formularza. No chyba ze zastosujesz jakies zabezpieczenie `ala token


Wiem ale na moje potrzeby (jest to projekt do szkoly, jeszcze nie oczekuja ze bede mial super zabezpieczenia itd) to wystarczy. Ale dobrze ze mówisz, czlowiek codzienniego czegos nowego sie dowiaduje winksmiley.jpg
krzyszbi
witam
ja to robie tak ( raczej bezpieczne - user mo¿e wybraæ tylko date - nie mo¿ejej wpisac )
index.html
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2.  <link rel="stylesheet" type="text/css" href="styl.css">
  3.  <title>Twoja strona</title>
  4.  <script type="text/javascript">
  5. <!-- <![CDATA[
  6. function okno(pole) {
  7.  o = window.open("kalendarz.php?p="+pole, "k", "width=200, height=200,"
  8.   + " left=100,top=25,innerwidth=200,innerheight=200,location=0,status=0,"
  9.   + " directories=0, scrollbars=0, menubar=0, toolbar=0, resizable=1");
  10.  o.focus();
  11.  return false;
  12. }
  13. // ]]> -->
  14. </head>
  15. <form action="skrypt.php" id="f1" method="post">
  16.  <table border="0" width="100%">
  17.   <tr>
  18.    <td>
  19.      Data :
  20.    </td>
  21.    <td>
  22.     <input type="text" name="data" readonly="readonly" />
  23.     </td>
  24.     <td>
  25.        <a href="#" onclick="return okno('data')">
  26.          <img src="pic/b_calendar.png" border="0" alt="Data - wstaw.">
  27.        </a>
  28.        </td>
  29.       <td>
  30.         <input name="sort" type="submit" value="Poka¿">
  31.       </td>
  32.     </tr>
  33.   </table>
  34.  </form>
  35. </body>
  36. </html>

kod kalendarz.php
  1. <? echo '<?xml version="1.0" encoding="ISO-8859-2"?>'; ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  3. "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl"><head>
  5. <meta http-equiv="Content-type" content="text/xml; charset=iso-8859-2" />
  6. <title>Kalendarz</title>
  7. <style type="text/css"><!--
  8. body, td { font-family: arial; font-size: 13px; }
  9. body {margin:0px; padding:0px; }
  10. a { color:black; }
  11. table { width:200px; height:200px; }
  12. .ciemny { background:#f3f3f3; }
  13. .jasny  { background:#FFFFEE; }
  14. .niedziela { background:#FF9999; }
  15. .dzis { font-weight:bold;  }
  16. .center { text-align:center; }
  17. --></style>
  18. </head><body>
  19.  
  20. <?
  21. function kalendarz($ile, $p) {
  22. $znacznik = mktime(0, 0, 0, date("m")+$ile, 1);
  23. $iledni  = date("t", $znacznik);
  24. $start = date("w", $znacznik);
  25. $miesiac = date("m", $znacznik);
  26. $rok = date("Y", $znacznik);
  27. $miesiace = array(
  28. "Styczeñ", "Luty", "Marzec", "Kwiecieñ", "Maj", "Czerwiec",
  29. "Lipiec", "Sierpieñ", "Wrzesieñ", "Paxdziernik", "Listopad", "Grudzieñ"
  30. );
  31.  
  32. echo '<table border="1" cellspacing="0" cellpadding="2"><tr><td>';
  33. echo '<a href="kalendarz.php?ile='.($ile-1).'&amp;p='.$p.'">&lt;&lt;</a>';
  34. echo '</td><td colspan="5" class="ciemny center">';
  35. echo $miesiace[$miesiac-1].' '.$rok.'</td><td align="right">';
  36. echo '<a href="kalendarz.php?ile='.($ile+1).'&amp;p='.$p.'">&gt;&gt;</a>';
  37. echo '</td></tr>';
  38. echo '<tr class="ciemny"><td>Nd</td><td>Pn</td><td>Wt</td><td>¦r</td>
  39. <td>Cz</td><td>Pt</td><td>So</td></tr>';
  40. echo '<tr align="right">';
  41. if ($start>0) echo '<td colspan="'.$start.'" class="ciemny">&nbsp;</td>';
  42. else $pierwszy=true;
  43. for ($i=1;$i<=$iledni;$i++) {
  44. $dzien = date("w", mktime(0, 0, 0, $miesiac, $i, $rok));
  45. if ($dzien==0 and !$pierwszy) echo '</tr><tr align="right">';
  46. if ($dzien==0) $bg = "niedziela"; else $bg = "jasny";
  47. $pierwszy = false;
  48. if (mktime(0, 0, 0, date("m"), date("d"), date("Y"))==
  49. mktime(0, 0, 0, $miesiac, $i, $rok)) $bg .= " dzis";
  50. $d = sprintf("%02d", $i);
  51. echo '<td class="'.$bg.'">';
  52. echo '<a href="#"
  53.  onclick="opener.document.getElementById('f1').'.$p.'.value='';
  54. echo $rok.'-'.$miesiac.'-'.$d.''; window.close();">'.$i.'</a></td>';
  55. }
  56. $koniec=7-($start+$iledni)%7;
  57. if ($koniec<>7) echo '<td colspan="'.$koniec.'" class="ciemny">&nbsp;</td>';
  58. echo '</tr></table>';
  59. }
  60. kalendarz($_GET["ile"], $_GET["p"]);
  61. ?>
  62. </body></html>

daiala - testowalem
i pole $_POST['data'] mo¿na bezpo¶rednio zapisaæ do bazy je¶li format zapisu danego pola todata
jak co¶ nie dziala to daj znaæ

skrypt znale¼iony jaki¶ czas temu na google ale ju¿ nie pamietam gdzie - nie jest mojego autorstwa
nospor
Cytat
A jak taki input by wygladal, zeby bylo tak jak piszesz w formacie rrrr-mm-dd?
Jest to najwyzkleszy w swiecie input type="text" do ktorego mozesz wpisac dowolny text. ty tylko potem ten tekst musisz zwalidowac, czy jest odpowiedniego formatu. Jak pisalem mnostwo tego bylo na forum, na sieci. wystraczy przejrzec.
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.