超碰人人人人人,亚洲AV午夜福利精品一区二区,亚洲欧美综合区丁香五月1区,日韩欧美亚洲系列

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

php面試題及答案

admin
2012年4月3日 22:59 本文熱度 2866
基礎(chǔ)題:
1.表單中 get與post提交方法的區(qū)別?
答:get是發(fā)送請(qǐng)求HTTP協(xié)議通過(guò)url參數(shù)傳遞進(jìn)行接收,而post是實(shí)體數(shù)據(jù),可以通過(guò)表單提交大量信息.

2.session與cookie的區(qū)別?
答:session:儲(chǔ)存用戶訪問(wèn)的全局唯一變量,存儲(chǔ)在服務(wù)器上的php指定的目錄中的(session_dir)的位置進(jìn)行的存放
   cookie:用來(lái)存儲(chǔ)連續(xù)訪問(wèn)一個(gè)頁(yè)面時(shí)所使用,是存儲(chǔ)在客戶端,對(duì)于Cookie來(lái)說(shuō)是存儲(chǔ)在用戶WIN的Temp目錄中的。
   兩者都可通過(guò)時(shí)間來(lái)設(shè)置時(shí)間長(zhǎng)短


3.數(shù)據(jù)庫(kù)中的事務(wù)是什么?
答:事務(wù)(transaction)是作為一個(gè)單元的一組有序的數(shù)據(jù)庫(kù)操作。如果組中的所有操作都成功,則認(rèn)為事務(wù)成功,即使只有一個(gè)操作失敗,事務(wù)也不成功。如果所有操作完成,


事務(wù)則提交,其修改將作用于所有其他數(shù)據(jù)庫(kù)進(jìn)程。如果一個(gè)操作失敗,則事務(wù)將回滾,該事務(wù)所有操作的影響都將取消。


簡(jiǎn)述題:
1、用PHP打印出前一天的時(shí)間格式是2006-5-10 22:21:21(2分)
答:echo date('Y-m-d H:i:s', strtotime('-1 days'));


2、echo(),print(),print_r()的區(qū)別(3分)
答:echo是PHP語(yǔ)句, print和print_r是函數(shù),語(yǔ)句沒(méi)有返回值,函數(shù)可以有返回值(即便沒(méi)有用) 
   print()    只能打印出簡(jiǎn)單類型變量的值(如int,string) 
   print_r() 可以打印出復(fù)雜類型變量的值(如數(shù)組,對(duì)象) 
   echo     輸出一個(gè)或者多個(gè)字符串


3、能夠使HTML和PHP分離開(kāi)使用的模板(1分)
答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate


5、使用哪些工具進(jìn)行版本控制?(1分)
答:cvs,svn,vss;


6、如何實(shí)現(xiàn)字符串翻轉(zhuǎn)?(3分)
答:echo strrev($a);


7、優(yōu)化MYSQL數(shù)據(jù)庫(kù)的方法。(4分,多寫多得)
答:
1、選取最適用的字段屬性,盡可能減少定義字段長(zhǎng)度,盡量把字段設(shè)置NOT NULL,例如'省份,性別',最好設(shè)置為ENUM
2、使用連接(JOIN)來(lái)代替子查詢:
   a.刪除沒(méi)有任何訂單客戶:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)
   b.提取所有沒(méi)有訂單客戶:SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)
   c.提高b的速度優(yōu)化:SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid
   WHERE orderinfo.customerid IS NULL
3、使用聯(lián)合(UNION)來(lái)代替手動(dòng)創(chuàng)建的臨時(shí)表
   a.創(chuàng)建臨時(shí)表:SELECT name FROM `nametest` UNION SELECT username FROM `nametest2`
4、事務(wù)處理:
   a.保證數(shù)據(jù)完整性,例如添加和修改同時(shí),兩者成立則都執(zhí)行,一者失敗都失敗
   mysql_query("BEGIN");
   mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')";
   mysql_query("SELECT * FROM `orderinfo` where customerid=".$id");
   mysql_query("COMMIT");
5、鎖定表,優(yōu)化事務(wù)處理:
   a.我們用一個(gè) SELECT 語(yǔ)句取出初始數(shù)據(jù),通過(guò)一些計(jì)算,用 UPDATE 語(yǔ)句將新值更新到表中。
     包含有 WRITE 關(guān)鍵字的 LOCK TABLE 語(yǔ)句可以保證在 UNLOCK TABLES 命令被執(zhí)行之前,
     不會(huì)有其它的訪問(wèn)來(lái)對(duì) inventory 進(jìn)行插入、更新或者刪除的操作
   mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE");
   mysql_query("SELECT customerid FROM `customerinfo` where id=".$id);
   mysql_query("UPDATE `orderinfo` SET ordertitle='$title' where customerid=".$id);
   mysql_query("UNLOCK TABLES");
6、使用外鍵,優(yōu)化鎖定表
   a.把customerinfo里的customerid映射到orderinfo里的customerid,
     任何一條沒(méi)有合法的customerid的記錄不會(huì)寫到orderinfo里
   CREATE TABLE customerinfo
   (
     customerid INT NOT NULL,
     PRIMARY KEY(customerid) 
   )TYPE = INNODB;
   CREATE TABLE orderinfo
   (
     orderid INT NOT NULL,
     customerid INT NOT NULL,
     PRIMARY KEY(customerid,orderid),
     FOREIGN KEY (customerid) REFERENCES customerinfo
     (customerid) ON DELETE CASCADE  
   )TYPE = INNODB;
   注意:'ON DELETE CASCADE',該參數(shù)保證當(dāng)customerinfo表中的一條記錄刪除的話同時(shí)也會(huì)刪除order
         表中的該用戶的所有記錄,注意使用外鍵要定義事務(wù)安全類型為INNODB;
7、建立索引:
   a.格式:
   (普通索引)->
   創(chuàng)建:CREATE INDEX <索引名> ON tablename (索引字段)
   修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段)
   創(chuàng)表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段))
   (唯一索引)->
   創(chuàng)建:CREATE UNIQUE <索引名> ON tablename (索引字段)
   修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段)
   創(chuàng)表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段))
   (主鍵)->
   它是唯一索引,一般在創(chuàng)建表是建立,格式為:
   CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])
8、優(yōu)化查詢語(yǔ)句
   a.最好在相同字段進(jìn)行比較操作,在建立好的索引字段上盡量減少函數(shù)操作
   例子1:
   SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)
   SELECT * FROM order WHERE orderDate<"2008-01-01";(快)
   例子2:
   SELECT * FROM order WHERE addtime/7<24;(慢)
   SELECT * FROM order WHERE addtime<24*7;(快)
   例子3:
   SELECT * FROM order WHERE title like "%good%";
   SELECT * FROM order WHERE title>="good" and name<"good";


8、PHP的意思(送1分)
答:PHP是一個(gè)基于服務(wù)端來(lái)創(chuàng)建動(dòng)態(tài)網(wǎng)站的腳本語(yǔ)言,您可以用PHP和HTML生成網(wǎng)站主頁(yè)


9、MYSQL取得當(dāng)前時(shí)間的函數(shù)是?,格式化日期的函數(shù)是(2分)
答:now(),date()


10、實(shí)現(xiàn)中文字串截取無(wú)亂碼的方法。(3分)
答:function GBsubstr($string, $start, $length) {
    if(strlen($string)>$length){
     $str=null;
     $len=$start+$length;
     for($i=$start;$i<$len;$i++){
    if(ord(substr($string,$i,1))>0xa0){
     $str.=substr($string,$i,2);
     $i++;
    }else{
     $str.=substr($string,$i,1);
     }
    }
   return $str.'...';
    }else{
   return $string;
   }
}


11、您是否用過(guò)版本控制軟件? 如果有您用的版本控制軟件的名字是?(1分)
12、您是否用過(guò)模板引擎? 如果有您用的模板引擎的名字是?(1分)
答:用過(guò),smarty


13、請(qǐng)簡(jiǎn)單闡述您最得意的開(kāi)發(fā)之作(4分)
答:信息分類


14、對(duì)于大流量的網(wǎng)站,您采用什么樣的方法來(lái)解決訪問(wèn)量問(wèn)題?(4分)
答:確認(rèn)服務(wù)器硬件是否足夠支持當(dāng)前的流量,數(shù)據(jù)庫(kù)讀寫分離,優(yōu)化數(shù)據(jù)表,
   程序功能規(guī)則,禁止外部的盜鏈,控制大文件的下載,使用不同主機(jī)分流主要流量


15、用PHP寫出顯示客戶端IP與服務(wù)器IP的代碼1分)
答:打印客戶端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR');
   打印服務(wù)器IP:echo gethostbyname("www.bolaiwu.com")


16、語(yǔ)句include和require的區(qū)別是什么?為避免多次包含同一文件,可用(?)語(yǔ)句代替它們? (2分)
答:require->require是無(wú)條件包含也就是如果一個(gè)流程里加入require,無(wú)論條件成立與否都會(huì)先執(zhí)行require
  include->include有返回值,而require沒(méi)有(可能因?yàn)槿绱藃equire的速度比include快)
  注意:包含文件不存在或者語(yǔ)法錯(cuò)誤的時(shí)候require是致命的,include不是


17、如何修改SESSION的生存時(shí)間(1分).
答:方法1:將php.ini中的session.gc_maxlifetime設(shè)置為9999重啟apache
   方法2:$savePath = "./session_save_dir/";
         $lifeTime = 小時(shí) * 秒;
         session_save_path($savePath);
         session_set_cookie_params($lifeTime);
         session_start();
   方法3:setcookie() and session_set_cookie_params($lifeTime);
 
18、有一個(gè)網(wǎng)頁(yè)地址, 比如PHP開(kāi)發(fā)資源網(wǎng)主頁(yè): http://www.phpres.com/index.html,如何得到它的內(nèi)容?($1分)
答:方法1(對(duì)于PHP5及更高版本):
   $readcontents = fopen("http://www.phpres.com/index.html", "rb");
   $contents = stream_get_contents($readcontents);
   fclose($readcontents);
   echo $contents;
   方法2:
   echo file_get_contents("http://www.phpres.com/index.html");


19、在HTTP 1.0中,狀態(tài)碼401的含義是(?);如果返回“找不到文件”的提示,則可用 header 函數(shù),其語(yǔ)句為(?);(2分)
答:狀態(tài)401代表未被授權(quán),header("Location:www.xxx.php");


12、在PHP中,heredoc是一種特殊的字符串,它的結(jié)束標(biāo)志必須?(1分)
答:heredoc的語(yǔ)法是用"<<<"加上自己定義成對(duì)的標(biāo)簽,在標(biāo)簽范圍內(nèi)的文字視為一個(gè)字符串
   例子:
   $str = <<<SHOW
   my name is Jiang Qihui!
   SHOW;


13、談?wù)刟sp,php,jsp的優(yōu)缺點(diǎn)(1分)
答:ASP全名Active Server Pages,是一個(gè)WEB服務(wù)器端的開(kāi)發(fā)環(huán)境, 利用它可以產(chǎn)生和運(yùn)
行動(dòng)態(tài)的、交互的、高性能的WEB服務(wù)應(yīng)用程序。ASP采用腳本語(yǔ)言VB Script(Java script
)作為自己的開(kāi)發(fā)語(yǔ)言。
  PHP是一種跨平臺(tái)的服務(wù)器端的嵌入式腳本語(yǔ)言. 它大量地借用C,Java和Perl語(yǔ)言的語(yǔ)法
, 并耦合PHP自己的特性,使WEB開(kāi)發(fā)者能夠快速地寫出動(dòng)態(tài)生成頁(yè)面.它支持目前絕大多數(shù)數(shù)
據(jù)庫(kù)。還有一點(diǎn),PHP是完全免費(fèi)的,不用花錢,你可以從PHP官方站點(diǎn)(http://www.php.ne
t)自由下載。而且你可以不受限制地獲得源碼,甚至可以從中加進(jìn)你自己需要的特色。
  JSP 是Sun公司推出的新一代站點(diǎn)開(kāi)發(fā)語(yǔ)言,他完全解決了目前ASP,PHP的一個(gè)通?。?BR>腳本級(jí)執(zhí)行(據(jù)說(shuō)PHP4 也已經(jīng)在Zend 的支持下,實(shí)現(xiàn)編譯運(yùn)行).Sun 公司借助自己在Jav
a 上的不凡造詣,將Java 從Java 應(yīng)用程序 和 Java Applet 之外,又有新的碩果,就是Js
p--Java Server Page。Jsp 可以在Serverlet和JavaBean的支持下,完成功能強(qiáng)大的站點(diǎn)
程序。
  三者都提供在 HTML 代碼中混合某種程序代碼、由語(yǔ)言引擎解釋執(zhí)行程序代碼的能力。
但JSP代碼被編譯成 Servlet 并由 Java 虛擬機(jī)解釋執(zhí)行,這種編譯操作僅在對(duì) JSP 頁(yè)面的
第一次請(qǐng)求時(shí)發(fā)生。在 ASP 、PHP、JSP 環(huán)境下, HTML 代碼主要負(fù)責(zé)描述信息的顯示樣式
,而程序代碼則用來(lái)描述處理邏輯。普通的 HTML 頁(yè)面只依賴于 Web 服務(wù)器,而 ASP 、PH
P、JSP 頁(yè)面需要附加的語(yǔ)言引擎分析和執(zhí)行程序代碼。程序代碼的執(zhí)行結(jié)果被重新嵌入到
HTML 代碼中,然后一起發(fā)送給瀏覽器。 ASP 、PHP、 JSP三者都是面向 Web 服務(wù)器的技術(shù)
,客戶端瀏覽器不需要任何附加的軟件支持。


14、談?wù)剬?duì)mvc的認(rèn)識(shí)(1分)
答:由模型(model),視圖(view),控制器(controller)完成的應(yīng)用程序
   由模型發(fā)出要實(shí)現(xiàn)的功能到控制器,控制器接收組織功能傳遞給視圖;


15、寫出發(fā)貼數(shù)最多的十個(gè)人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)
答:SELECT * FROM `members` ORDER BY posts DESC limit 0,10;


16. 請(qǐng)說(shuō)明php中傳值與傳引用的區(qū)別。什么時(shí)候傳值什么時(shí)候傳引用?(2分)
答:按值傳遞:函數(shù)范圍內(nèi)對(duì)值的任何改變?cè)诤瘮?shù)外部都會(huì)被忽略
   按引用傳遞:函數(shù)范圍內(nèi)對(duì)值的任何改變?cè)诤瘮?shù)外部也能反映出這些修改
   優(yōu)缺點(diǎn):按值傳遞時(shí),php必須復(fù)制值。特別是對(duì)于大型的字符串和對(duì)象來(lái)說(shuō),這將會(huì)是一個(gè)代價(jià)很大的操作。
   按引用傳遞則不需要復(fù)制值,對(duì)于性能提高很有好處。


17. 在PHP中error_reporting這個(gè)函數(shù)有什么作用? (1分)
答:設(shè)置錯(cuò)誤級(jí)別與錯(cuò)誤信息回報(bào)


18. 請(qǐng)寫一個(gè)函數(shù)驗(yàn)證電子郵件的格式是否正確 (2分)
答:function checkEmail($email)
  {
    $pregEmail = "/([a-z0-9]*[-_/.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[/.][a-z]{2,3}([/.][a-z]{2})?/i";
    return preg_match($pregEmail,$email); 
  }


19. 簡(jiǎn)述如何得到當(dāng)前執(zhí)行腳本路徑,包括所得到參數(shù)。(2分)
答:$script_name = basename(__file__); print_r($script_name);


21、JS表單彈出對(duì)話框函數(shù)是?獲得輸入焦點(diǎn)函數(shù)是? (2分)
答:彈出對(duì)話框: alert(),prompt(),confirm()
   獲得輸入焦點(diǎn) focus()


22、JS的轉(zhuǎn)向函數(shù)是?怎么引入一個(gè)外部JS文件?(2分)
答:window.location.href,<script type="text/javascript" src="js/js_function.js"></script>


23、foo()和@foo()之間有什么區(qū)別?(1分)
答:@foo()控制錯(cuò)誤輸出


24、如何聲明一個(gè)名為”myclass”的沒(méi)有方法和屬性的類? (1分)
答:class myclass{ }


25、如何實(shí)例化一個(gè)名為”myclass”的對(duì)象?(1分)
答:new myclass()


26、你如何訪問(wèn)和設(shè)置一個(gè)類的屬性? (2分)
答:$object = new myclass();
   $newstr = $object->test;
   $object->test = "info";


27、mysql_fetch_row() 和mysql_fetch_array之間有什么區(qū)別? (1分)
答:mysql_fetch_row是從結(jié)果集取出1行數(shù)組,作為枚舉
   mysql_fetch_array是從結(jié)果集取出一行數(shù)組作為關(guān)聯(lián)數(shù)組,或數(shù)字?jǐn)?shù)組,兩者兼得


28、GD庫(kù)是做什么用的? (1分)
答:gd庫(kù)提供了一系列用來(lái)處理圖片的API,使用GD庫(kù)可以處理圖片,或者生成圖片。
   在網(wǎng)站上GD庫(kù)通常用來(lái)生成縮略圖或者用來(lái)對(duì)圖片加水印或者對(duì)網(wǎng)站數(shù)據(jù)生成報(bào)表。


29、指出一些在PHP輸入一段HTML代碼的辦法。(1分)
答:echo "<a href='index.php'>aaa</a>";


30、下面哪個(gè)函數(shù)可以打開(kāi)一個(gè)文件,以對(duì)文件進(jìn)行讀和寫操作?(1分)
    (a) fget() (b) file_open() (c) fopen() (d) open_file()  [  c  ]


31、下面哪個(gè)選項(xiàng)沒(méi)有將 john 添加到users 數(shù)組中? (1分)
  (a) $users[] = ‘john’;
  (b) array_add($users,’john’);
  (c) array_push($users,‘john’);
  (d) $users ||= ‘john’;  [  a , c  ]


32、下面的程序會(huì)輸入是否?(1分)
  $num = 10;
  function multiply(){
  $num = $num * 10;
  }
  multiply();
  echo $num;
  ?>
    輸出:10


33、使用php寫一段簡(jiǎn)單查詢,查出所有姓名為“張三”的內(nèi)容并打印出來(lái) (2分)
  表名User
  Name Tel Content Date
  張三 13333663366 大專畢業(yè) 2006-10-11
  張三 13612312331 本科畢業(yè) 2006-10-15
  張四 021-55665566 中專畢業(yè) 2006-10-15
  請(qǐng)根據(jù)上面的題目完成代碼:
  $mysql_db=mysql_connect("local","root","pass");
  @mysql_select_db("DB",$mysql_db);
    $result = mysql_query("SELECT * FROM `user` WHERE name='張三'");
    while($rs = mysql_fetch_array($result)){
      echo $rs["tel"].$rs["content"].$rs["date"];
    }   


34、如何使用下面的類,并解釋下面什么意思?(3)
  class test{
     function Get_test($num){
      $num=md5(md5($num)."En");
      return $num;
   }
  }
答:$testnum = "123";
   $object = new test();
   $encrypt = $object->Get_test($testnum);
   echo $encrypt;
   類test里面包含Get_test方法,實(shí)例化類調(diào)用方法多字符串加密


35、寫出 SQL語(yǔ)句的格式 : 插入 ,更新 ,刪除 (4分)
  表名User
  Name Tel Content Date
  張三 13333663366 大專畢業(yè) 2006-10-11
  張三 13612312331 本科畢業(yè) 2006-10-15
  張四 021-55665566 中專畢業(yè) 2006-10-15
  (a) 有一新記錄(小王 13254748547 高中畢業(yè) 2007-05-06)請(qǐng)用SQL語(yǔ)句新增至表中
    mysql_query("INSERT INTO `user` (name,tel,content,date) VALUES
    ('小王','13254748547','高中畢業(yè)','2007-05-06')")


  (b) 請(qǐng)用sql語(yǔ)句把張三的時(shí)間更新成為當(dāng)前系統(tǒng)時(shí)間
    $nowDate = date("Ymd");
    mysql_query("UPDATE `user` SET date='".$nowDate."' WHERE name='張山'");


  (c) 請(qǐng)寫出刪除名為張四的全部記錄
    mysql_query("DELETE FROM `user` WHERE name='張四'");


36、請(qǐng)寫出數(shù)據(jù)類型(int char varchar datetime text)的意思; 請(qǐng)問(wèn)varchar和char有什么區(qū)別(2分)
答:int是數(shù)字類型,char固定長(zhǎng)度字符串,varchar實(shí)際長(zhǎng)度字符串,datetime日期時(shí)間型,text文本字符串
   char的場(chǎng)地固定為創(chuàng)建表設(shè)置的長(zhǎng)度,varchar為可變長(zhǎng)度的字符


38、寫出以下程序的輸出結(jié)果 (1分)
  $b=201;
  $c=40;
    $a=$b>$c?4:5;
  echo $a;
  ?>
答:4


39、檢測(cè)一個(gè)變量是否有設(shè)置的函數(shù)是否?是否為空的函數(shù)是?(2分)
答:isset($str),empty($str);


40、取得查詢結(jié)果集總數(shù)的函數(shù)是?(1分)
答:mysql_num_rows($result);


41、$arr = array('james', 'tom', 'symfony'); 請(qǐng)打印出第一個(gè)元素的值 (1分)
答:echo $array[0];


42、請(qǐng)將41題的數(shù)組的值用','號(hào)分隔并合并成字串輸出(1分)
答:for($i=0;$i<count($array);$i++){ echo $array[$i].",";}


43、$a = 'abcdef'; 請(qǐng)取出$a的值并打印出第一個(gè)字母(1分)
答:echo $a{0} 或 echo substr($a,0,1)


44、PHP可以和sql server/oracle等數(shù)據(jù)庫(kù)連接嗎?(1分)
答:當(dāng)然可以


45、請(qǐng)寫出PHP5權(quán)限控制修飾符(3分)
答:public(公共),private(私用),protected(繼承)


46、請(qǐng)寫出php5的構(gòu)造函數(shù)和析構(gòu)函數(shù)(2分)
答:__construct , __destruct


47、完成以下:
   (一)創(chuàng)建新聞發(fā)布系統(tǒng),表名為message有如下字段 (3分)
  id 文章id
  title 文章標(biāo)題
  content 文章內(nèi)容
  category_id 文章分類id
    hits 點(diǎn)擊量
答:CREATE TABLE 'message'(
   'id' int(10) NOT NULL auto_increment,
   'title' varchar(200) default NULL,
   'content' text,
   'category_id' int(10) NOT NULL,
   'hits' int(20),
   PRIMARY KEY('id');
   )ENGINE=InnoDB DEFAULT CHARSET=utf8;


    (二)同樣上述新聞發(fā)布系統(tǒng):表comment記錄用戶回復(fù)內(nèi)容,字段如下 (4分)
  comment_id 回復(fù)id
  id 文章id,關(guān)聯(lián)message表中的id
  comment_content 回復(fù)內(nèi)容
  現(xiàn)通過(guò)查詢數(shù)據(jù)庫(kù)需要得到以下格式的文章標(biāo)題列表,并按照回復(fù)數(shù)量排序,回復(fù)最高的排在最前面
  文章id 文章標(biāo)題 點(diǎn)擊量 回復(fù)數(shù)量
  用一個(gè)SQL語(yǔ)句完成上述查詢,如果文章沒(méi)有回復(fù)則回復(fù)數(shù)量顯示為0
答:SELECT message.id id,message.title title,IF(message.`hits` IS NULL,0,message.`hits`) hits,
   IF(comment.`id` is NULL,0,count(*)) number FROM message LEFT JOIN
   comment ON message.id=comment.id GROUP BY message.`id`;


  (三)上述內(nèi)容管理系統(tǒng),表category保存分類信息,字段如下 (3分)
  category_id int(4) not null auto_increment;
  categroy_name varchar(40) not null;
  用戶輸入文章時(shí),通過(guò)選擇下拉菜單選定文章分類
  寫出如何實(shí)現(xiàn)這個(gè)下拉菜單
答:function categoryList()
{
    $result=mysql_query("select category_id,categroy_name from category")
            or die("Invalid query: " . mysql_error());
    print("<select name='category' value=''>/n");
    while($rowArray=mysql_fetch_array($result))
    {
       print("<option value='".$rowArray['category_id']."'>".$rowArray['categroy_name']."</option>/n");
    }
    print("</select>");
}


編程題:
1. 寫一個(gè)函數(shù),盡可能高效的,從一個(gè)標(biāo)準(zhǔn) url 里取出文件的擴(kuò)展名
   例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
答案1:
   function getExt($url){
   $arr = parse_url($url);
  
   $file = basename($arr['path']);
   $ext = explode(".",$file);
   return $ext[1];
}
答案2:
    function getExt($url) {
    $url = basename($url);
    $pos1 = strpos($url,".");
    $pos2 = strpos($url,"?");
    if(strstr($url,"?")){
         return substr($url,$pos1 + 1,$pos2 - $pos1 - 1);
    } else {
      return substr($url,$pos1);
    }
}



2. 在 HTML 語(yǔ)言中,頁(yè)面頭部的 meta 標(biāo)記可以用來(lái)輸出文件的編碼格式,以下是一個(gè)標(biāo)準(zhǔn)的 meta 語(yǔ)句
  請(qǐng)使用 PHP 語(yǔ)言寫一個(gè)函數(shù),把一個(gè)標(biāo)準(zhǔn) HTML 頁(yè)面中的類似 meta 標(biāo)記中的 charset 部分值改為 big5
  請(qǐng)注意:
  1. 需要處理完整的 html 頁(yè)面,即不光此 meta 語(yǔ)句
  2. 忽略大小寫
    3. ' 和 " 在此處是可以互換的
    4. 'Content-Type' 兩側(cè)的引號(hào)是可以忽略的,但 'text/html; charset=gbk' 兩側(cè)的不行
  5. 注意處理多余空格


3. 寫一個(gè)函數(shù),算出兩個(gè)文件的相對(duì)路徑
  如 $a = '/a/b/c/d/e.php';
  $b = '/a/b/12/34/c.php';
  計(jì)算出 $b 相對(duì)于 $a 的相對(duì)路徑應(yīng)該是 ../../c/d將()添上
答:function getRelativePath($a, $b) {  
    $returnPath = array(dirname($b));  
    $arrA = explode('/', $a);  
    $arrB = explode('/', $returnPath[0]);  
    for ($n = 1, $len = count($arrB); $n < $len; $n++) {  
        if ($arrA[$n] != $arrB[$n]) {  
            break;  
        }   
    }  
    if ($len - $n > 0) {  
        $returnPath = array_merge($returnPath, array_fill(1, $len - $n, '..'));  
    }  
      
    $returnPath = array_merge($returnPath, array_slice($arrA, $n));  
    return implode('/', $returnPath);  
   }  
   echo getRelativePath($a, $b); 


填空題:
1.在PHP中,當(dāng)前腳本的名稱(不包括路徑和查詢字符串)記錄在預(yù)定義變量__$_SERVER['PHP_SELF']__中;而鏈接到當(dāng)前頁(yè)面的URL記錄在預(yù)定義變量__$_SERVER['HTTP_REFERER']__



2.執(zhí)行程序段<?php echo 8%(-2) ?>將輸出__0__。


3.在HTTP 1.0中,狀態(tài)碼 401 的含義是____;如果返回“找不到文件”的提示,則可用 header 函數(shù),其語(yǔ)句為_(kāi)___。


4.數(shù)組函數(shù) arsort 的作用是__對(duì)數(shù)組進(jìn)行逆向排序并保持索引關(guān)系__;語(yǔ)句 error_reporting(2047)的作用是__報(bào)告所有錯(cuò)誤和警告__。


5.PEAR中的數(shù)據(jù)庫(kù)連接字符串格式是____。


6.寫出一個(gè)正則表達(dá)式,過(guò)慮網(wǎng)頁(yè)上的所有JS/VBS腳本(即把scrīpt標(biāo)記及其內(nèi)容都去掉):preg_replace("/<script[^>].*?>.*?</script>/si", "newinfo", $script);


7.以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語(yǔ)句____動(dòng)態(tài)裝載PHP模塊,然后再用語(yǔ)句____使得Apache把所有擴(kuò)展名為php的文件都作為PHP腳本處理。
  LoadModule php5_module "c:/php/php5apache2.dll" , AddType application/x-httpd-php .php,


8.語(yǔ)句 include 和 require 都能把另外一個(gè)文件包含到當(dāng)前文件中,它們的區(qū)別是____;為了避免多次包含同一文件,可以用語(yǔ)句__require_once||include_once__來(lái)代替它們。


9.類的屬性可以序列化后保存到 session 中,從而以后可以恢復(fù)整個(gè)類,這要用到的函數(shù)是____。


10.一個(gè)函數(shù)的參數(shù)不能是對(duì)變量的引用,除非在php.ini中把__allow_call_time_pass_reference boolean__設(shè)為on.


11.SQL中LEFT JOIN的含義是__自然左外鏈接__。如果 tbl_user記錄了學(xué)生的姓名(name)和學(xué)號(hào)(ID),tbl_score記錄了學(xué)生(有的學(xué)生考試以后被開(kāi)除了,沒(méi)有其記錄)的學(xué)號(hào)(ID)


和考試成績(jī)(score)以及考試科目(subject),要想打印出各個(gè)學(xué)生姓名及對(duì)應(yīng)的的各科總成績(jī),則可以用SQL語(yǔ)句____。


12.在PHP中,heredoc是一種特殊的字符串,它的結(jié)束標(biāo)志必須____。


編程題:
13.寫一個(gè)函數(shù),能夠遍歷一個(gè)文件夾下的所有文件和子文件夾。
答:
function my_scandir($dir)
{
     $files = array();
     if ( $handle = opendir($dir) ) {
         while ( ($file = readdir($handle)) !== false ) {
             if ( $file != ".." && $file != "." ) {
                 if ( is_dir($dir . "/" . $file) ) {
                     $files[$file] = scandir($dir . "/" . $file);
                 }else {
                     $files[] = $file;
                 }
             }
         }
         closedir($handle);
         return $files;
     }
}


14.簡(jiǎn)述論壇中無(wú)限分類的實(shí)現(xiàn)原理。
答:
<?php
/*
數(shù)據(jù)表結(jié)構(gòu)如下:
CREATE TABLE `category` (
 `categoryID` smallint(5) unsigned NOT NULL auto_increment,
 `categoryParentID` smallint(5) unsigned NOT NULL default '0',
 `categoryName` varchar(50) NOT NULL default '',
 PRIMARY KEY (`categoryID`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;


INSERT INTO `category` ( `categoryParentID`, `categoryName`) VALUES
(0, '一級(jí)類別'),
(1, '二級(jí)類別'),
(1, '二級(jí)類別'),
(1, '二級(jí)類別'),
(2, '三級(jí)類別'),
(2, '333332'),
(2, '234234'),
(3, 'aqqqqqd'),
(4, '哈哈'),
(5, '66333666');


*/


//指定分類id變量$category_id,然后返回該分類的所有子類
//$default_category為默認(rèn)的選中的分類
function Get_Category($category_id = 0,$level = 0, $default_category = 0)
{
 global $DB;
 $sql = "SELECT * FROM category ORDER BY categoryID DESC";
 $result = $DB->query( $sql );
 while ($rows = $DB->fetch_array($result))
 {
 $category_array[$rows[categoryParentID]][$rows[categoryID]] = array('id' => $rows[categoryID], 'parent' => $rows[categoryParentID], 'name' => $rows


[categoryName]);
 }
 if (!isset($category_array[$category_id]))
 {
 return "";
 }
 foreach($category_array[$category_id] AS $key => $category)
 {
 if ($category['id'] == $default_category)
 {
 echo "<option selected value=".$category['id']."";
 }else
 {
 echo "<option value=".$category['id']."";
 }


 if ($level > 0)
 {
 echo ">" . str_repeat( " ", $level ) . " " . $category['name'] . "</option>/n";
 }
 else
 {
 echo ">" . $category['name'] . "</option>/n";
 }
 Get_Category($key, $level + 1, $default_category);
 }
 unset($category_array[$category_id]);
}


/*
函數(shù)返回的數(shù)組格式如下所示:
Array
(
 [1] => Array ( [id] => 1 [name] => 一級(jí)類別 [level] => 0 [ParentID] => 0 )
 [4] => Array ( [id] => 4 [name] => 二級(jí)類別 [level] => 1 [ParentID] => 1 )
 [9] => Array ( [id] => 9 [name] => 哈哈 [level] => 2 [ParentID] => 4 )
 [3] => Array ( [id] => 3 [name] => 二級(jí)類別 [level] => 1 [ParentID] => 1 )
 [8] => Array ( [id] => 8 [name] => aqqqqqd [level] => 2 [ParentID] => 3 )
 [2] => Array ( [id] => 2 [name] => 二級(jí)類別 [level] => 1 [ParentID] => 1 )
 [7] => Array ( [id] => 7 [name] => 234234 [level] => 2 [ParentID] => 2 )
 [6] => Array ( [id] => 6 [name] => 333332 [level] => 2 [ParentID] => 2 )
 [5] => Array ( [id] => 5 [name] => 三級(jí)類別 [level] => 2 [ParentID] => 2 )
 [10] => Array ( [id] => 10 [name] => 66333666 [level] => 3 [ParentID] => 5 )
)
*/
//指定分類id,然后返回?cái)?shù)組
function Category_array($category_id = 0,$level=0)
{
 global $DB;
 $sql = "SELECT * FROM category ORDER BY categoryID DESC";
 $result = $DB->query($sql);
 while ($rows = $DB->fetch_array($result))
 {
 $category_array[$rows['categoryParentID']][$rows['categoryID']] = $rows;
 }


 foreach ($category_array AS $key=>$val)
 {
 if ($key == $category_id)
 {
 foreach ($val AS $k=> $v)
 {
 $options[$k] =
 array(
 'id' => $v['categoryID'], 'name' => $v['categoryName'], 'level' => $level, 'ParentID'=>$v['categoryParentID']
 );


 $children = Category_array($k, $level+1);


 if (count($children) > 0)
 {
 $options = $options + $children;
 }
 }
 }
 }
 unset($category_array[$category_id]);
 return $options;
}


?>


 


<?php


class cate
{


        function Get_Category($category_id = 0,$level = 0, $default_category = 0)
        {
             echo $category_id;
             $arr = array(
              '0' => array(
                             '1' => array('id' => 1, 'parent' => 0, 'name' => '1111'),
                             '2' => array('id' => 2, 'parent' => 0, 'name' => '2222'),
                            '4' => array('id' => 4, 'parent' => 0, 'name' => '4444')   
                          ),
              '1' => array(
                              '3' => array('id' => 3, 'parent' => 1, 'name' => '333333'),
                            '5' => array('id' => 5, 'parent' => 1, 'name' => '555555')    
                            ),
                         
              '3' => array(
                            '6' => array('id' => 6, 'parent' => 3, 'name' => '66666'),
                            '7' => array('id' => 7, 'parent' => 3, 'name' => '77777')
                            ),
              '4' => array(
                            '8' => array('id' => 8, 'parent' => 4, 'name' => '8888'),
                            '9' => array('id' => 9, 'parent' => 4, 'name' => '9999')
                            )   
             );


             if (!isset($arr[$category_id]))
             {
                return "";
             }
   
             foreach($arr[$category_id] AS $key => $cate)
             {
                 if ($cate['id'] == $default_category)
                 {
                     $txt = "<option selected value=".$cate['id']."";
                 }else{
                     $txt = "<option value=".$cate['id']."";
                 }
           
                 if ($level > 0)
                 {
                    $txt1 = ">" . str_repeat( "-", $level ) . " " . $cate['name'] . "</option>/n";
                 }else{
                     $txt1 = ">" . $cate['name'] . "</option>/n";
                 }
                 $val = $txt.$txt1;
                 echo $val;
                 self::Get_Category($key, $level + 1, $default_category);
             }
           
        }
       
       
        function getFlush($category_id = 0,$level = 0, $default_category = 0)
        {
           
            ob_start();


            self::Get_Category($category_id ,$level, $default_category);


            $out = ob_get_contents();


            ob_end_clean();
            return $out;
        }   
}
$id =$_GET['id'];
echo "<select>";
$c = new cate();
//$c->Get_Category();
$ttt=  $c->getFlush($id,'0','3');
echo $ttt;
echo "</select>";
?>


該文章在 2012/4/3 22:59:07 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved