⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000001.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 4 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;yyh&nbsp;(阿欢&amp;正在努力上进中......),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;MySQL&nbsp;&amp;&nbsp;mSQL&nbsp;Chapter&nbsp;10&nbsp;Perl(2)&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Sat&nbsp;Sep&nbsp;18&nbsp;01:43:47&nbsp;1999)&nbsp;<BR>&nbsp;<BR>This&nbsp;function&nbsp;displays&nbsp;a&nbsp;form&nbsp;allowing&nbsp;the&nbsp;user&nbsp;to&nbsp;choose&nbsp;a&nbsp;subject&nbsp;for&nbsp;the&nbsp;test&nbsp;along&nbsp;with&nbsp;the&nbsp;number&nbsp;of&nbsp;questions&nbsp;and&nbsp;a&nbsp;name.&nbsp;In&nbsp;order&nbsp;to&nbsp;print&nbsp;out&nbsp;a&nbsp;list&nbsp;of&nbsp;available&nbsp;subjects,&nbsp;the&nbsp;table&nbsp;of&nbsp;subjects&nbsp;is&nbsp;queried.&nbsp;When&nbsp;using&nbsp;a&nbsp;SELECT&nbsp;query&nbsp;with&nbsp;DBI,&nbsp;the&nbsp;&nbsp;<BR>query&nbsp;must&nbsp;first&nbsp;be&nbsp;prepared&nbsp;and&nbsp;then&nbsp;executed.&nbsp;The&nbsp;DBI::prepare&nbsp;function&nbsp;is&nbsp;useful&nbsp;with&nbsp;certain&nbsp;database&nbsp;servers&nbsp;which&nbsp;allow&nbsp;you&nbsp;to&nbsp;perform&nbsp;operations&nbsp;on&nbsp;prepared&nbsp;queries&nbsp;before&nbsp;executing&nbsp;them.&nbsp;With&nbsp;MySQL&nbsp;and&nbsp;mSQL&nbsp;however,&nbsp;it&nbsp;simply&nbsp;stores&nbsp;the&nbsp;query&nbsp;&nbsp;<BR>until&nbsp;the&nbsp;DBI::execute&nbsp;function&nbsp;is&nbsp;called.&nbsp;<BR>&nbsp;<BR>The&nbsp;output&nbsp;of&nbsp;this&nbsp;function&nbsp;is&nbsp;sent&nbsp;to&nbsp;the&nbsp;add2&nbsp;function&nbsp;as&nbsp;shown&nbsp;in&nbsp;the&nbsp;following:&nbsp;<BR>&nbsp;<BR>sub&nbsp;add2&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$subject&nbsp;=&nbsp;param('subjects');&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$num&nbsp;=&nbsp;param('num');&nbsp;<BR>&nbsp;&nbsp;&nbsp;$name&nbsp;=&nbsp;param('name')&nbsp;if&nbsp;param('name');&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$out&nbsp;=&nbsp;$dbh-&gt;prepare(&quot;select&nbsp;name&nbsp;from&nbsp;subject&nbsp;where&nbsp;id=$subject&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;$out-&gt;execute;&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;($subname)&nbsp;=&nbsp;$out-&gt;fetchrow_array;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;header,&nbsp;start_html('title'=&gt;&quot;Creating&nbsp;test&nbsp;for&nbsp;$subname&quot;,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'BGCOLOR'=&gt;'white');&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;&lt;&lt;END_OF_HTML;&nbsp;<BR>&lt;H1&gt;Creating&nbsp;test&nbsp;for&nbsp;$subname&lt;/h1&gt;&nbsp;<BR>&lt;h2&gt;$name&lt;/h2&gt;&nbsp;<BR>&lt;p&gt;&nbsp;<BR>&lt;FORM&nbsp;ACTION=&quot;test.cgi&quot;&nbsp;METHOD=POST&gt;&nbsp;<BR>&lt;INPUT&nbsp;TYPE=HIDDEN&nbsp;NAME=&quot;action&quot;&nbsp;VALUE=&quot;add3&quot;&gt;&nbsp;<BR>&lt;INPUT&nbsp;TYPE=HIDDEN&nbsp;NAME=&quot;subjects&quot;&nbsp;VALUE=&quot;$subject&quot;&gt;&nbsp;<BR>&lt;INPUT&nbsp;TYPE=HIDDEN&nbsp;NAME=&quot;num&quot;&nbsp;VALUE=&quot;$num&quot;&gt;&nbsp;<BR>&lt;INPUT&nbsp;TYPE=HIDDEN&nbsp;NAME=&quot;name&quot;&nbsp;VALUE=&quot;$name&quot;&gt;&nbsp;<BR>Enter&nbsp;the&nbsp;point&nbsp;value&nbsp;for&nbsp;each&nbsp;of&nbsp;the&nbsp;questions.&nbsp;The&nbsp;points&nbsp;need&nbsp;not&nbsp;<BR>add&nbsp;up&nbsp;to&nbsp;100.&nbsp;<BR>&lt;p&gt;&nbsp;<BR>END_OF_HTML&nbsp;<BR>&nbsp;&nbsp;&nbsp;for&nbsp;(1..$num)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;qq%$_:&nbsp;&lt;INPUT&nbsp;NAME=&quot;q$_&quot;&nbsp;SIZE=3&gt;&nbsp;%;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(not&nbsp;$_&nbsp;%&nbsp;5)&nbsp;{&nbsp;print&nbsp;&quot;&lt;br&gt;\n&quot;;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;&lt;&lt;END_OF_HTML;&nbsp;<BR>&lt;p&gt;&nbsp;<BR>Enter&nbsp;the&nbsp;text&nbsp;of&nbsp;the&nbsp;test:&lt;br&gt;&nbsp;<BR>&lt;TEXTAREA&nbsp;NAME=&quot;test&quot;&nbsp;ROWS=20&nbsp;COLS=60&gt;&nbsp;<BR>&lt;/textarea&gt;&nbsp;<BR>&lt;p&gt;&nbsp;<BR>&lt;INPUT&nbsp;TYPE=SUBMIT&nbsp;VALUE=&quot;Enter&nbsp;Test&quot;&gt;&nbsp;<BR>&nbsp;&lt;INPUT&nbsp;TYPE=RESET&gt;&nbsp;<BR>&lt;/form&gt;&lt;/body&gt;&lt;/html&gt;&nbsp;<BR>END_OF_HTML&nbsp;<BR>}&nbsp;<BR>In&nbsp;this&nbsp;function,&nbsp;a&nbsp;form&nbsp;for&nbsp;the&nbsp;test&nbsp;is&nbsp;dynamically&nbsp;generated&nbsp;based&nbsp;on&nbsp;the&nbsp;parameters&nbsp;entered&nbsp;in&nbsp;the&nbsp;last&nbsp;form.&nbsp;The&nbsp;user&nbsp;can&nbsp;enter&nbsp;the&nbsp;point&nbsp;value&nbsp;for&nbsp;each&nbsp;question&nbsp;on&nbsp;the&nbsp;test&nbsp;and&nbsp;the&nbsp;full&nbsp;text&nbsp;of&nbsp;the&nbsp;test&nbsp;as&nbsp;well.&nbsp;The&nbsp;output&nbsp;of&nbsp;this&nbsp;function&nbsp;is&nbsp;then&nbsp;&nbsp;<BR>sent&nbsp;to&nbsp;the&nbsp;final&nbsp;function,&nbsp;add3,&nbsp;as&nbsp;shown&nbsp;in&nbsp;the&nbsp;following:&nbsp;<BR>&nbsp;<BR>sub&nbsp;add3&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$subject&nbsp;=&nbsp;param('subjects');&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$num&nbsp;=&nbsp;param('num');&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;$name&nbsp;=&nbsp;param('name')&nbsp;if&nbsp;param('name');&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$qname;&nbsp;<BR>&nbsp;&nbsp;&nbsp;($qname&nbsp;=&nbsp;$name)&nbsp;=~&nbsp;s/'/\\'/g;&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$q1&nbsp;=&nbsp;&quot;insert&nbsp;into&nbsp;test&nbsp;(id,&nbsp;name,&nbsp;subject,&nbsp;num)&nbsp;values&nbsp;(&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'',&nbsp;'$qname',&nbsp;$subject,&nbsp;$num)&quot;;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$in&nbsp;=&nbsp;$dbh-&gt;prepare($q1);&nbsp;<BR>&nbsp;&nbsp;&nbsp;$in-&gt;execute;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;#&nbsp;Retrieve&nbsp;the&nbsp;ID&nbsp;value&nbsp;MySQL&nbsp;created&nbsp;for&nbsp;us&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$id&nbsp;=&nbsp;$in-&gt;insertid;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$query&nbsp;=&nbsp;&quot;create&nbsp;table&nbsp;t$id&nbsp;(&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;INT&nbsp;NOT&nbsp;NULL,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$def&nbsp;=&nbsp;&quot;insert&nbsp;into&nbsp;t$id&nbsp;values&nbsp;(&nbsp;0,&nbsp;&quot;;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$total&nbsp;=&nbsp;0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;@qs&nbsp;=&nbsp;grep(/^q\d+$/,param);&nbsp;<BR>&nbsp;&nbsp;&nbsp;foreach&nbsp;(@qs)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$query&nbsp;.=&nbsp;$_&nbsp;.&nbsp;&quot;&nbsp;INT,\n&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my&nbsp;$value&nbsp;=&nbsp;0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$value&nbsp;=&nbsp;param($_)&nbsp;if&nbsp;param($_);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$def&nbsp;.=&nbsp;&quot;$value,&nbsp;&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$total&nbsp;+=&nbsp;$value;&nbsp;<BR>&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;$query&nbsp;.=&nbsp;&quot;total&nbsp;INT\n)&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;$def&nbsp;.=&nbsp;&quot;$total)&quot;;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$in2&nbsp;=&nbsp;$dbh-&gt;prepare($query);&nbsp;<BR>&nbsp;&nbsp;&nbsp;$in2-&gt;execute;&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$in3&nbsp;=&nbsp;$dbh-&gt;prepare($def);&nbsp;<BR>&nbsp;&nbsp;&nbsp;$in3-&gt;execute;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;#&nbsp;Note&nbsp;that&nbsp;we&nbsp;store&nbsp;the&nbsp;tests&nbsp;in&nbsp;separate&nbsp;files.&nbsp;This&nbsp;is&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;#&nbsp;useful&nbsp;when&nbsp;dealing&nbsp;with&nbsp;mSQL&nbsp;because&nbsp;of&nbsp;its&nbsp;lack&nbsp;of&nbsp;BLOBs.&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;#&nbsp;(The&nbsp;TEXT&nbsp;type&nbsp;provided&nbsp;with&nbsp;mSQL&nbsp;2&nbsp;would&nbsp;work,&nbsp;but&nbsp;<BR>&nbsp;&nbsp;&nbsp;#&nbsp;inefficently.)&nbsp;<BR>&nbsp;&nbsp;&nbsp;#&nbsp;Since&nbsp;we&nbsp;are&nbsp;using&nbsp;MySQL,&nbsp;we&nbsp;could&nbsp;just&nbsp;as&nbsp;well&nbsp;<BR>&nbsp;&nbsp;&nbsp;#&nbsp;stick&nbsp;the&nbsp;entire&nbsp;test&nbsp;into&nbsp;a&nbsp;BLOB.&nbsp;<BR>&nbsp;&nbsp;&nbsp;open(TEST,&quot;&gt;teach/tests/$id&quot;)&nbsp;or&nbsp;die(&quot;A:&nbsp;$id&nbsp;$!&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;TEST&nbsp;param('test'),&nbsp;&quot;\n&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;close&nbsp;TEST;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;header,&nbsp;start_html('title'=&gt;'Test&nbsp;Created',&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'BGCOLOR'=&gt;'white');&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;&lt;&lt;END_OF_HTML;&nbsp;<BR>&lt;H1&gt;Test&nbsp;Created&lt;/h1&gt;&nbsp;<BR>&lt;p&gt;&nbsp;<BR>The&nbsp;test&nbsp;has&nbsp;been&nbsp;created.&nbsp;<BR>&lt;p&gt;&nbsp;<BR>&lt;A&nbsp;HREF=&quot;.&quot;&gt;Go&lt;/a&gt;&nbsp;to&nbsp;the&nbsp;Teacher's&nbsp;Aide&nbsp;home&nbsp;page.&lt;br&gt;&nbsp;<BR>&lt;A&nbsp;HREF=&quot;test.cgi&quot;&gt;Go&lt;/a&gt;&nbsp;to&nbsp;the&nbsp;Test&nbsp;main&nbsp;page.&lt;br&gt;&nbsp;<BR>&lt;A&nbsp;HREF=&quot;test.cgi?action=add&quot;&gt;Add&lt;/a&gt;&nbsp;another&nbsp;test.&nbsp;<BR>&lt;/body&gt;&lt;/html&gt;&nbsp;<BR>END_OF_HTML&nbsp;<BR>}&nbsp;<BR>Here&nbsp;we&nbsp;enter&nbsp;the&nbsp;information&nbsp;about&nbsp;the&nbsp;test&nbsp;into&nbsp;the&nbsp;database.&nbsp;In&nbsp;doing&nbsp;so&nbsp;we&nbsp;take&nbsp;a&nbsp;step&nbsp;beyond&nbsp;the&nbsp;usual&nbsp;data&nbsp;insertion&nbsp;that&nbsp;we&nbsp;have&nbsp;seen&nbsp;so&nbsp;far.&nbsp;The&nbsp;information&nbsp;about&nbsp;the&nbsp;test&nbsp;is&nbsp;so&nbsp;complex&nbsp;that&nbsp;each&nbsp;test&nbsp;is&nbsp;best&nbsp;kept&nbsp;in&nbsp;a&nbsp;table&nbsp;of&nbsp;its&nbsp;own.&nbsp;&nbsp;<BR>Therefore,&nbsp;instead&nbsp;of&nbsp;adding&nbsp;data&nbsp;to&nbsp;an&nbsp;existing&nbsp;table,&nbsp;we&nbsp;have&nbsp;to&nbsp;create&nbsp;a&nbsp;whole&nbsp;new&nbsp;table&nbsp;for&nbsp;each&nbsp;test.&nbsp;First&nbsp;we&nbsp;create&nbsp;an&nbsp;ID&nbsp;for&nbsp;the&nbsp;new&nbsp;test&nbsp;using&nbsp;MySQL&nbsp;auto&nbsp;increment&nbsp;feature&nbsp;and&nbsp;enter&nbsp;the&nbsp;name&nbsp;and&nbsp;ID&nbsp;of&nbsp;the&nbsp;test&nbsp;into&nbsp;a&nbsp;table&nbsp;called&nbsp;test.&nbsp;This&nbsp;&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -