搭建PHP開發環境 php
一、理解BS/CS架構;css
答:B/s:browser/server:服務器與瀏覽器架構的軟件,特色:依靠瀏覽器爲依託,不須要安裝客戶端,打開網頁就能使用的軟件。例如:京東、淘寶、百度html
C/s:client/server:客戶端與服務器架構的軟件,特色:必需要安裝客戶端才能使用的軟件。例如:QQ、酷狗java
二、理解一個網站從請求到響應的交互過程mysql
答:客戶端-->瀏覽器-->服務器-->php-->Mysql 一步步返回linux
說明:當用戶在瀏覽器的地址欄裏輸入域名或者ip時,瀏覽器會承載着這個請求找到指定的服務器,服務器根據請求的語言,調用相對應的服務器端腳本語言,服務器端語言調用數據庫沒數據庫將查詢結果返回給服務器端,服務器再承載着這個結果返回給瀏覽器,插入到頁面的指定位置,從而完成整個響應過程。nginx
三、理解http協議程序員
答:超文本傳輸協議,特色是:無狀態的,是萬維網發佈的一個規則 上網的時候就是:http://域名。web
四、掌握如何搭建WAMP(單獨安裝Apache MySQL PHP);(搭建WAMP環境的步驟)sql
答:
① 在任意一個盤符下新建一個名爲web的文件夾,在裏面分別新建三個文件夾:Apahce、mysql、php。
② 首先安裝Apache,安裝完成後,在瀏覽器的地址欄裏輸入localhost或者是127.0.0.1頁面顯示It works!代表安裝成功
③ 安裝PHP,讓Apache加載php,安裝完成重啓服務器。
④ 安裝MySQL,安裝完成使用命令net start mysql來啓動服務
⑤ 配置php,打開php的錯誤提示,配置默認時區,打開相對應的擴展,配置完成重啓服務,編寫程序輸出hello world!整個安裝完成。
五、掌握Apache與PHP的關係,如何配置可以解析PHP;
答:Apache是一個服務器,在客戶端和服務器端語言之間進行服務的,php是一個服務器端的嵌套在html裏的解釋性腳本語言,它要想在瀏覽器里正常運行必須依靠Apahce做爲支撐,沒有了php,Apahce能正常運行,沒有了php,php代碼在瀏覽器裏是沒法運行的,可是php有自帶的命令行,它是能夠運行的。
在Apache的主配置文件httpd.conf里加上:
PHPIniDir "E:/web/PHP/php.ini"
LoadModule php5_module "E:/web/PHP/php5apache2_2.dll"
這就是Apache加載php
六、掌握如何找到服務器所使用的php.ini所處的位置;
答:編寫程序輸出:phpinfo()函數將php的全部信息打印在了瀏覽器上,其中有一個選項是說明Apache加載的php的配置文件,php的配置文件名是:php.ini
七、掌握如何找到php的擴展目錄,並開啓某些PHP擴展;
答:在php.ini裏有這個選項:extension_dir ,把這個選項的前面的分號去掉,而後再後面寫上php的擴展目錄所在具體路徑,例如:extension_dir = "E:/web/php/ext" 重啓服務器纔會生效
八、瞭解PHP文件標籤,可以編寫一個hellord輸出;
答:<?Php echo 「hello world!」;?> 要想使用php的短標記:修改php.ini裏:short_open_tag,把前面的分號去掉,把參數寫成on,例如:short_open_tag = On 重啓服務器纔會生效
九、瞭解端口的概念,知道(Apache、MySQL)服務器的默認端口;
答:端口就是一個軟件的標記,至關於門牌號。Apache的端口號是:listen 80,mysql的端口號是:port 3306 php沒有本身的端口號默認和服務器保持一致 端口能夠修改,修改後要重啓服務器,並在之後的訪問中加上端口號,例如:http://www.baidu.com:8080
十、理解網站,掌握區分動態網站與靜態網站
答:網站是由html、css、js和服務器端語言以及數據庫進行動態開發的B\S架構的軟件。
靜態網站:只能瀏覽不能進行增刪改查操做的網站;
動態網站:凡是與數據庫交互的網站都是動態網站;
十一、掌握serverroot,servername,DocumentRoot
答:serverroot:服務器所在的目錄
Servername:網站的域名
DocumentRoot:網站存放的根目錄。剛剛安裝完成後,默認的路徑是:盤符:/web/Apache/htdocs,固然這個位置能夠更改
十二、理解客戶端、服務器端、瀏覽器、服務器
答:客戶端:就是用戶上網的終端,也就是誰上網誰就是客戶端
服務器端:就是服務器所在的終端
瀏覽器:就是用戶用來上網的一種工具
服務器:給用戶上網提供服務和給服務器端語言提供運行平臺的終端
PHP基本語法
一、理解PHP的前因後果
答:上網查找前因後果。
Php特色:開源、免費、跨平臺,功能強大,執行效率高。
Php環境分爲:WAMP和LAMP
WAMP:windows+Apache+Mysql+php
LAMP:linux+Apache+Mysql+php
注:php不只僅只支持Apahce做爲服務器還有不少服務器他均可以的,例如:nginx,等。還有數據庫,現今全部的數據庫php都能連上。例如:SQLserver、oracl等。
二、理解PHP與其餘語言(java、asp、.net平臺)的異同(跨平臺、執行效率、開發效率、穩定性、開源、移動互聯)
答:java:uninx+tomcate+oracl+javaee
.net:windows+IIS+SQLserver+ASP
PHP:
WAMP:windows+Apache+Mysql+php
LAMP:linux+Apache+Mysql+php
Php很是強大,主要作web開發,開發起來效率高,用戶體驗好,服務器優化性能好,是當今開發網站首選語言。
三、掌握編寫代碼時正確使用註釋
答:php的單行註釋; // # 多行註釋: /* */
注:寫註釋是一個程序員必備的基本素質,寫註釋能讓代碼一目瞭然,每一個php文件的功能更加清晰的展示給其餘開發者,學會寫註釋能幫助你高新就業!
四、掌握isset()、unset(),empty()
答:此處遇到了函數,函數查手冊,三要素:
① 首先明白函數的功能
② 明白函數有幾個參數
③ 明白函數的返回值
Isset():檢測變量是否被設置,參數只有一個就是變量名,返回值若是設置了,返回true,不然返回false
Unset():銷燬給定的變量,也只有一個參數就是變量名,沒有返回值
Empty():判斷變量是否爲空,若是爲空返回爲true,不然返回false,要是想判斷非空就用:!Empty(變量名)
五、掌握可變變量,變量的引用(值傳遞與地址傳遞)
答:值傳遞就是將一個變量的值賦值給另外一個變量,其中任何一方的改變不會影響另外一方,引用賦值是在直接賦值的基礎上加一個&,這時兩變量就指向了同一內存空間,任何一方的改變都將牽動另外一方。
例如: $b=20; $a=$c=$b; $c=30; echo $a; 結果是:20
例如:$a=10; $b=&$a; $c=&$b; $a++; echo $c; 結果是:11
六、掌握變量的聲明以及命名
答:① 必須由$修飾開頭
② 變量名嚴格區分大小寫
③ 變量能夠是中文,但通常不用
④ 不能包含特殊字符,由字母數字下滑線組成,不能以數字開頭
聲明 :$a=10; $b=」erwerwer」
七、掌握變量的八大類型
答:四種標量數據類型:整型、實型,字符型,布爾型
兩種特殊數據類型:資源、空類型
兩種複合數據類型:數組、對象
八、掌握var_dump()、echo、print_r():
答:echo :輸出一個或者多個的字符串
Print_r():打印關於變量的易於理解的信息。
Var_dump():打印變量的詳細信息
九、掌握在各類變量類型之間進行轉換
答:強制轉換和自動轉換
例如:強制轉換:$a=10; echo (float)$a
例如:自動轉換:$a=10; $a=1.2; var_dump($a) 此時的$a爲浮點型
十、掌握常量的定義和使用
答:define(「 常量名」,」常量值」) 例如:define(「B」,10); echo B; 結果是:10
注:常量一旦被定義不能被修改
例如:define(「A」,10); @define(「A」,20); echo A; 結果是:10
十一、掌握常量和變量的區別
答:常量就是在程序運行過程當中值不能發生改變的量,一旦被定義不能被修改
變量就是在程序運行過程當中值能夠發生改變的量,變量的數據類型根據值作決定
十二、掌握使用各類運算符和表達式 (算術運算符、自增自減運算符、比較運算符、字符串鏈接運算符、邏輯運算符、錯誤控制運算符和表達式)
答:算術運算符:+ - * / % += *= -=
邏輯運算符:! && ||
比較運算符:> < >= <= != == ===
注:雙等號只比較兩邊的值是否相等 三等號:既判斷兩邊的值也判斷兩邊的數據類型
自增自減運算符: ++ --
字符串鏈接運算符: .
錯誤控制運算符: @
表達式: ? :
PHP語言結構
一、php的語言結構有哪些
答:順序結構、選擇結構、循環結構
二、掌握if…else if…else...if的基本語法;
答:if(條件){ 判斷結果} if(判斷條件){確定的結果}...elseif{否認的結果}else{兩個條件都沒成立}
二、掌握switch … case 語法
答:case後面必須有break斷開,不然就會繼續執行,一直到遇到break爲止或者一直到結束
三、掌握for循環
答:for(初值;終值;步長){循環體}
四、掌握特殊控制語句(break continue)
答:break是結束本層循環,continue是結束本次循環進行下一次循環
例如:$a=0;
for($i=1;$i<5;$i++){
If($i==2){
continue;
}
For($j=1;$j<=3;$j++){
If($j==2){
Break;
}
$a++;
}
} echo $a; 結果是:3
五、掌握while/do…while的基本語法;
答:while是先判斷循環條件,再執行循環體,do...while是先執行循環體,再判斷循環條件,當循環條件不成立時,do...while比while多循環一次
例如:$a=3;
Do{
$a++;
}while($a<2);
While{$a<3}{
$a++;
}
Echo $a; 結果是:4
六、靈活運用函數的定義與調用
答:定義函數:function 函數名(形參){函數體 return 返回值} 調用函數:fun(實參)
注意:在函數體內,若是遇到了return 將返回該處的值,下面的代碼將再也不執行
例如:function fun(){
global $a;
$a=1;
$a++;
Return $a;
++$a;
}
fun();
echo $a; 結果是:2
七、靈活運用變量的做用域
答:局部變量(就是在函數體內定義的變量,做用域是整個函數體內部,要想在函數提內部使用全局變量須要加global聲明)全局變量(就是在函數體外定義的變量,做用域是整個php腳本)靜態變量(static定義的變量,他保存的數據是靜態的也就是不變的)
八、掌握參數的傳遞(傳值、傳地址)
答:值傳遞是以形參接收實參的值的方式進行傳遞的,在沒有聲明全局變量的狀況下,形參作出的修改不會影響函數體外實參的值,地址傳遞就是在值傳遞的基礎上加&,此時形參與實參指向同一內存空間,形參作出的修改會直接影響函數體外實參的值,無論有沒有global。
例如:function fun($a,&$b){
Global $a;
$a+=$b;
$b+=$a;
}
Fun(4,5);
Echo $a.’#’.$b; 結果是:9#14
九、簡單運用遞歸函數
答:遞歸就是函數自身調用自身,遞歸精度大,可是耗費資源
例如:求n!
Function fun($n){
If($n==1){
Return 1;
}Else{
Return Fun($n-1)*$n
}
}
Echo fun(5); 結果是:120
十、掌握include require include_once require_once的區別
答:當程序遇到一個致命性錯誤時,include會產生一個警告,而程序繼續執行;require會終止執行;include_once()和require_once()都是僅僅對一個文件包含一次的意思,爲了不屢次包含同一個文件產生的錯誤,咱們用include_once()和require_once()來代替他們
字符串
一、字符串的定義
答:單引號,雙引號,定界符
例如:$a=’aaaaa’; echo $a; 結果是:aaaaa;
$a=」sdsadfsfd」; echo $a; 結果是:sdsadfsfd
$b=10;
$a=」$b 20」; echo $a; 結果是:10 20
$a=10;
定界符格式:<<<大寫的本身隨便定義的格式 字符串 以你本身定義的格式頂頭結尾
$str=<<<HELLO
QWERQWRQWRQ $a WRQWRQWERQWRQWRQWASJFDASJKFGSDOF
HELLO;
echo $str;
二、單引號與雙引號的區別
答:雙引號解析以$開頭的變量名,單引號不解析
三、掌握使用print printf、sprintf輸出字符串;
答:print()輸出字符串 實際上不是一個函數(它是一個語言結構),所以你能夠沒必要使用圓括號來括起它的參數列表。
Printf():輸出格式化字符串 例如:$a=printf(「%d」,17); echo $a 結果是:172
Sprintf():和Printf()一致
五、掌握字符串處理函數(strlen、substr、strpos、trim、ltrim、rtrim)
$a=’qweqweqweqwe’
Strlen(字符串):求字符串長度
Substr(字符串,開始截取的位置,截取的長度【可省,若是省掉就將從開始的位置一直截取到結束】):截取字符串,返回截取後的字符串
例如:有一個url:http://www.php.com/index/ext/index.php.html,回答些列問題:
(1)若是想要獲取到.php,怎麼辦?請你寫出你的解題思路和僞代碼。
$str=」http://www.php.com/index/ext/index.php.html」;
思路:
① 先將這個url變成一個字符串賦值給一個變量
② 查找x最後一次出現的位置,用strrpos查找;
③ 將查找後的返回值做爲截取的第二個參數,也就是截取開始的位置
④ 截取,用substr開始截取,截取的長度爲4
⑤ 返回輸出
代碼:
$index=Substr($str,strrpos($str,」x」)+1,4);
Echo $index;
(2)若是想要獲取.html怎麼辦?寫出你的實現思路和僞代碼。
思路:
思路:
① 先將這個url變成一個字符串賦值給一個變量
② 查找.最後一次出現的位置,用strrpos查找;
③ 將查找後的返回值做爲截取的第二個參數,也就是截取開始的位置
④ 截取,用substr開始截取,不用寫第三個參數,直接截取到最後
⑤ 返回輸出
代碼:
$index=Substr($str,strrpos($str,」.」));
Echo $index;
六、經過結合手冊實現以下功能(看到函數能知道功能,知道需求能查到相關函數):
① 將字符串中的換行替換爲<br/>
答:str_replace(要替換的值,替換成誰,在誰裏替換也就是字符串名):
例如:$a=」hello world!」; echo str_replace(「l」,」Q」,$a); 輸出結果是:heQQo worQd!
② 將全部字母轉換爲大寫(小寫)
答:strtolower():將整個字符串轉換成小寫
例如:$str=」HELLO world!」 echo strtolower($str); 輸出結果是:hello world!
Strtoupper():將整個字符串轉化成大寫
例如:$str=」HELLO world!」 echo strtoupper($str); 輸出結果是:HELLO WORLD!
③ 去除字符串兩端(左側、右側)的空白
答:trim():去除字符串兩端的空白字符
例如:$a=」 aaa 」; echo trim($a); 結果是:沒有空格的aaa
Ltrim():去除字符串左邊的空格
Rtrim():去除字符串右邊的空格
④ 將字符串中每一個單詞的首字母大寫、將字符串的首字母大寫
Ucfirst():將字符串的首字母大寫
Ucwords():將字符串中每一個單詞的首字母大寫
數 組
一、掌握數組的分類
答:根據類型分:關聯數組和索引數組; 根據維度分:一維數組、二維數組、多維數組
定義數組:變量名=array(元素,元素,元素) 或者 $a[]=1; $a[]=4; 不寫下標的聲明也是能夠的,下標就從0開始,只要是帶有[]的變量都是數組
例如:$arr=array(1,2,3,4,5);
二、理解索引數組與關聯數組,鍵名與值;
答:索引數組:數組中元素的下表所有是數字的數組,索引數組的下表默認都是從0開始的
例如:$a=array(「a」,」b」);
或者 $a=array(2,4,5,6);
或者 $a=array(1=>2,2=>3)
或者 $a=array(1=>」wqeqwe」,4=>」weqweqwe」)
關聯數組:數組元素的下表有一個是字符串的數組
例如:$a=array(「a」=>1111,」b」=>222);
或者 $a=array(「a」=>」hello」,」b」=>」world!」)
或者 $a=array(1,2,3,」name」=>」zhangsan」)
鍵、索引、下標都是指的是元素的位置
元素指的是數組中的值
三、掌握數組的增刪改查,例如如如下狀況:
注:凡是涉及數組中的增長、刪除、修改這些操做的時候必需要經過更改數組的下標這個值纔會發生改變,不然無效。
增長:在數組元素增長的時候,若是數組的下標存在,值將會被覆蓋掉
例如:$arr=array(1,2,3,4,5,6)
$arr[] = 'a'; //此時這段代碼會將$arr中的1覆蓋
$arr['y'][] = 10;
$arr['y']['3'] = 20;
刪除:unset(數組名[下標])
從一維數組中刪除一個元素(unset($arr[3]))
從多維數組中刪除一個元素(unset($arr['3']['7']))
修改:注意,若是修改的下標不存在的時候就變成了追加
如何修改一個一維或多維數組中的值$arr['y']['3'] = 20;
四、掌握一維索引數組和一維關聯數組的遍歷(也就是循環輸出)
答:一維索引數組:
$arr=array(1,2,4,5,6,7,8,9);
//$i表明的是數組的下標,要想在循環裏使用某個元素,就用$arr[$i],只寫$i,是沒意義的
//count是統計數組的長度做爲循環的終止條件
For($i=0;$i<count($arr);$i++){
Echo $arr[$i]; //就是將一維索引數組中的元素所有輸出在瀏覽器上
}
一維關聯數組:
$arr=array(「name」=>」zhangsan」,」sex」=>」男」);
//關聯數組的遍歷必須使用foreach,索引數組也可使用foreach
//foreach的格式:
//foreach(數組名 as 鍵的變量名=>值得變量名){ 循環體} 它同屬於循環結構
Foreach($arr as $k=>$v){
Echo $k.「->」.$v; //這就是將數值中的元素輸出,格式是:鍵->值
}
五、掌握二維索引數組和二維關聯數組的遍歷(也就是循環輸出)
答:二維索引數組:(也就是兩層array的索引數組)
$arr=array(array(1,2,4,5,6,7,8,9));
//$i表明的是第一個一維數組的下標,$j表明的是數組中的數組的下標,要想在循環裏使用某個元素,就用$arr[$i][$j],只寫$i,是沒意義的
//count是統計數組的長度做爲循環的終止條件
For($i=0;$i<count($arr);$i++){
For($j=0;$j<count($arr[$i]);$j++){
Echo $arr[$i][$j]; //就是將二維索引數組中的元素所有輸出在瀏覽器上
}
}
二維關聯數組:
$arr=array(array(「name」=>」zhangsan」,」sex」=>」男」),array(「name」=>」lisi」,」sex」=>」男」));
Foreach($arr as $k=>$v){
Foreach($v as $key=>$val){
Echo $key.「->」.$val; //這就是將數值中的元素輸出,格式是:鍵->值
}
}
六、掌握將二維關聯數組或者索引數組放入表格裏
$arr=array(
array("age"=>"17","sex"=>"女"),
array("age"=>"17","sex"=>"男"),
array("age"=>"20","sex"=>"女"),
);
echo "<table border=1>";
foreach($arr as $val){
echo "<tr>";
foreach($val as $v){
echo "<td>";
echo $v;
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
七、從數組中查詢是否存在某個值(鍵)(in_array、array_search、array_key_exists)
in_array():查找某個元素手否存在於數組中
Array_seatch():在數組中搜索給定的值,若是存在將返回鍵名
array_key_exists():判斷數組中的鍵或者索引是否存在於數組中
八、掌握數組與字符串相關函數explode、implode
Explode():將一個字符串根據標記分割成數組
例如:861745122@qq.com 變成 0=>861745122 1=>qq.com
Print_r(Explode(「@」,$str));
Implode():將是一個數組鏈接成字符串
九、掌握看到以下函數知道以下函數的意思,知道需求可以經過手冊查找到相關函數(
array_values():將數組中全部的值返回組成一個索引數組
array_keys():將數組中全部的鍵返回組成一個索引數組
array_flip():將數組中的鍵個值進行交換,鍵名若是存在值將會被替換掉,不存在至關於追加
array_reverse():將數組進行翻轉
Count():計算數組的長度
array_count_values():統計數組中相同元素出現的次數,格式爲:值-->次數
array_unique():去除數組中的重複項,返回去除後的新數組
Sort():將數組進行從低到高排序(正向)
Rsort():將數組進行從高到低排序(逆向)
Ksort():按照數組的鍵名進行排序(正向)
Krsort():按照數組的鍵名進行排序(逆向向)
Asort():將數組進行排序,並保持索引關係
Arsort():將數組進行逆向排序並保持索引關係
array_merge():合併一個或者多個數組
array_rand():隨機從數組中產生一個或者多個鍵組成一個新數組返回
array_sum():計算數組中全部元素的和
Apache服務器配置
一、理解httpd.conf與httpd-vhosts.conf
答:httpd.conf:Apache的主配置文件,httpd-vhosts.conf是配置虛擬主機的文件,要想讓Aapche加載此文件,須要在Apache的主配置文件裏將#Include conf/extra/httpd-vhosts.conf前面的」#「去掉,去掉後Aapche就加載了此文件,能夠在這裏面配置虛擬主機
二、經過修改apache的配置禁止或顯示目錄列表(Options Indexes FollowSymLinks)
答:Options Indexes FollowSymLinks 配置完成的該虛擬主機,在訪問的時候能夠顯示該目錄下的全部文件列表
三、Order、Allow、Deny、DocumentRoot、ServerName的做用
答:AllowOverride None:是否容許域名重寫 ,None不容許 on 容許 容許後會將網站跟木下的.htacess文件生效
Order:訪問 allow 容許deny 禁止 誰在前誰先生效
Allow from all:容許來自一切的訪問
DocumentRoot:網站發佈根目錄
ServerName:設置域名
四、掌握獨立完成虛擬主機的配置過程,並深入理解每一步的做用
答:① 找到:C:\Windows\System32\drivers\etc\hosts文件,打開,修改爲以下格式:
127.0.0.1 (ip) www.a.com (域名)
② 找到Apache的主配置文件,找到:
#Include conf/extra/httpd-vhosts.conf前面的」#「去掉,去掉後Aapche就加載了配置虛擬主機的文件,能夠在conf/extra/httpd-vhosts.conf裏面配置虛擬主機
③ 打開:conf/extra/httpd-vhosts.conf
將文件清空,寫入:
NameVirtualHost *:80 //無論你配置任何虛擬主機,訪問的端口都是80
<VirtualHost *:80> //此虛擬主機
ServerNamelocalhost //訪問的網站域名
documentRoot E:\web\Apache\htdocs //網站的存放根目錄
</VirtualHost>
<Directory "E:\web\Apache\htdocs"> //網站存放的歷史目錄跟documentRoot保持一致
Options Indexes FollowSymLinks //設置該虛擬主機下的特性,訪問時顯示該目錄下的全部文件列表
AllowOverride None //容許或者不容許域名重寫 None 不容許 on 容許
Order allow,deny //訪問 Allow容許一些訪問 Deny 禁止訪問,Allow先生效,deny後生效
Allow from all 容許來自全部的訪問
</Directory>
表單處理
一、掌握表單的寫法(form action method )及常見的表單元素(text、password、hidden、radio、checkbox、select File、submit、button、texteara、reset)
表單標籤:<form></form>
Action:表明表單的提交地址 問:當點擊提交按鈕,頁面跳轉到了哪裏? Action指定的文件裏
Method:表明表單的提交方式 分爲get和post 默認爲get
Get與post 的區別:
Get傳值爲明文傳值,受地址欄長度限制,傳送數據量較小,相對於不安全,在服務器短用$_GET接收傳遞過來的值;
Post傳值爲非明文傳輸,傳送數據量大,相對與安全,在服務器端用$_POST接收傳遞過來的值
文本框:<input type=」text」>
單選按鈕:<input type=」radio」>
如何實現單選按鈕?
答:要給這個input的name屬性起同樣的名字,例如:
<input type=」radio」 name=」sex」 value=」男」>男
<input type=」radio」 name=」sex」 value=」女」>女
複選框:<input type=」checkbox」>
如何實現複選框?
答:要麼將複選框的name設置成數組格式,例如:<input name=」hobby[]」 type=」checkbox」>
要麼把每一個複選框的name設置的都不同
密碼框:<input type=」password」>
隱藏域:<input type=」hidden」> 隱藏域的值不會被顯示在頁面上,可是會隨着表單提交,值被提交到後臺
下拉列表:<select> <option></option> </select>
普通按鈕:<input type=」button」>
重置按鈕:<input type=」reset」>
提交按鈕:<input type=」submit」>
文件上傳域:<input type=」file」>
文本域:<textarea cols=」」rows=」」></textarea>
問題:
1)爲何要給表單的每一個元素起name屬性?用id或者class代替name能夠嗎?爲何?
答:要想在服務器端接收到前臺表單提交過來的值,必需要給表單元素聲明name屬性,不然表單的值將沒法在服務器端獲取。不能用其餘屬性來代替name,服務器只識別name屬性
2)當點擊提交按鈕,頁面沒有發生任何變化,請你解釋是什麼緣由。
答:表單的action屬性未設置,或者提交按鈕的type屬性的值非submit
3)點擊提交按鈕後,頁面顯示404錯誤,這是什麼緣由形成的。
答:action指定的文件不存在,404是未找到文件的錯誤狀態碼
二、掌握服務器端如何經過$_POST和$_GET和$_REQUEST接收客戶端提交的數據
答:在服務器端用$_POST或者$_GET來接受與表單提交方式一致的客戶端數據,簡而言之:若是表單的method屬性設置成post,那麼在服務器端就必須用$_POST或者$_REQUEST來接收表單提交的值;
若是表單的method屬性設置成get,那麼在服務器端就必須用$_GET或者$_REQUEST來接收表單提交的值;
$_POST和$_GET和$_REQUEST是php中的全局預約義數組,他們在使用的時候通常運用於表單,既然是數組,就有鍵和值,鍵就是前臺表單設置的name屬性,值就是該name屬性所對應的value
三、掌握動態拼接option
答:首先定義一個數組,例如:$arr=array(1,2,3,4,5,6,7);
<select name=」city」>
Foreach($arr as $key=>$val){
Echo 「<option value=」$arr[$i]」>」.$arr[$i].」</option>」
}
</select>
文件操做
一、理解(file_exists、copy、unlink、filesize、filemtime)
答:file_exists():判斷給定的文件是否存在
Copy():將一個文件拷貝到另外一個文件裏
Unlink():刪除服務器端的文件
Filesize():獲取文件的大小
Filetime():獲取文件上次修改的時間
二、理解fopen、fgets、fread、fwrite和fclose系列函數對文件進行操做
答:fopen():打開文件,返回一個已經打開的文件資源
Fgets():獲取文件的一行內容,讀取文件
Fread():讀取文件,根據參數決定讀取幾行
Fwrite():將一個字符串寫入文件中
Fclose():關閉文件,釋放fopen後的文件資源流
三、掌握經過file_get_contents讀取文件
答:file_get_contents():將一個文件的內容讀入到一個字符串中去,或者是獲取一個url的內容
四、掌握經過file_put_contents將數據寫入文件
答:file_put_contents():將整個字符串寫入到文件裏
五、掌握相對路徑與據對路徑
答:相對路徑就是相對於上級目錄而言,例如:../a.php
絕對路徑就是直接寫出文件的位置:例如:C:/web/Apche/a/a.php
MySQL簡介與安裝
一、理解MySQL的歷史
二、掌握MySQL的安裝步驟
三、掌握navicat工具
四、掌握MySQL常見的數據類型(整型、浮點型、日期類型、字符串類型)
答:int float date text char和varchar decimal
Char與varchar的區別:
MySQL數據的基本操做
一、建立數據庫:create database 數據庫名
二、查看全部數據庫:show databases
三、打開數據庫:use 數據庫名
四、刪除數據庫:drop database 數據庫名
五、建立表:create table 表名(列名 數據類型 約束,列名 數據類型 約束。。。。。。)
六、查看當前數據庫下全部表:show tables
七、查看當前表結構:desc 表名
八、刪除表:drop table 表名
九、插入數據:insert into 表名(【自增列的值能夠省略不寫不插入】列名,列名。。。。。)values(值1,值2【數據類型爲char、varchar、text要加上單引號】)
十、查看數據:select * 或者是具體的字段名 from 表名 where 條件 十一、修改數據:update 表名 set 字段名=新值 where 條件 若是不加where條件整張表的數據都將會更新
十二、刪除數據:delete from 表名 where 若是不加where條件整張表的數據都將會刪除 也就是清空表
MySQL其餘查詢
一、where子句
Select * from stu where id=1 or id=2 or id=5
Select * from stu where id in (1,2,5)
二、排序order by
order by 排序列 desc(降序)asc(默認的升序)
三、limit限制記錄條數
limit 限制結果集 (若是寫了一個參數,就是從第幾條開始,但不包括那一條,取幾條,若是有兩個參數,第一個參數仍是從哪條開始不包括那條,第二個參數就是取幾條)
四、distinct去掉重複項
Select distinct(列名) from 表名 where 條件
五、列起別名與表起別名
六、內鏈接 inner join ... On
左外鏈接left join ... On
右外鏈接right join ... On
七、模糊查詢語法
like 模糊匹配 %表明有任意多個字符 _表明任意一個字符
八、掌握between…and…
between…and…:在。。。。之間
例如:查詢出學生年齡在18到25之間的學生信息 年齡大於18 而且 小於25
Select * from stu where age between 18 and 25
MySQL存儲引擎和字符集
12.1 存儲引擎概述;
12.2 字符串
【考覈要求】
1.掌握常見的存儲引擎的區別(MyISAM InnoDB MEMORY);
2.瞭解常見的字符集(GB2312,GBK,UNICODE)
PHP操做MySQL
13.1 PHP鏈接MySQL;
13.2 經過PHP對MySQL進行增刪改查;
【考覈要求】
1.掌握在不查閱手冊的狀況下實現經過mysql_***系列函數對MySQL進行CRUD操做(mysql_connect、mysql_select_db、mysql_query、mysql_fetch_array、mysql_fetch_assoc、mysql_fetch_row、mysql_insert_id)
問: 使用mysql系列函數用不用php開啓mysql擴展?
必須用 不然出現 :undefined 。。。警告
問:mysql_connect()能不能鏈接遠程數據庫 ?
能 函數強大 必須能 只要第一個參數寫對了,密碼和用戶名匹配對了,就能鏈接
mysql_connect():打開一個數據庫鏈接,三個參數,第一個參數是數據庫的地址,第二個參數是管理員名,第三個參數是密碼 返回一個數據庫鏈接標識
mysql_select_db():選擇數據庫,有兩個參數 第一個參數是數據庫名稱,第二個參數,mysql_connect返回的數據庫標識
mysql_query():執行sql語句 對select返回的是資源 對於其它類型的 SQL 語句,mysql_query() 在執行成功時返回 TRUE,出錯時返回 FALSE。
mysql_fetch_array():從結果集中取得一行做爲關聯數組,或數字數組,或兩者兼有
例如:mysql_fetch_array($res,MYSQL_NUM) 這將是索引數組
mysql_fetch_array($res,MYSQL_ASSOC) 這將是關聯數組
mysql_fetch_assoc:從結果集中取得一行做爲關聯數組
mysql_fetch_row:從結果集中取得一行做爲索引數組
mysql_insert_id:取得剛剛插入自動增加的id 不須要寫任何參數
CMS項目開發與總結
1、管理員登陸功能的開發思路及僞代碼:
① 先創建一個登陸表單,內容包括用戶名、密碼和登陸按鈕
② 將action地址設置爲將要進行服務器端驗證的文件,method屬性爲post
③ 在這個服務器端驗證的文件進行鏈接數據庫的等操做
④ 書寫規範的sql查詢語句:select *from 表名 where name=$_POST[‘name’]
⑤ 若是詞條語句執行成功那麼說明用戶名存在,緊接着進行判斷密碼,若是失敗說明用戶不存在,提示跳轉進入到註冊頁面
⑥ 由於我是select * 是將全部的字段都查詢出來,那麼只須要將提交過來的密碼與查詢出來的密碼進行匹配,匹配成功則登陸成功,不然登陸失敗,失敗緣由是密碼錯誤,提示跳轉到登錄頁面,從新輸入密碼!
2、搭建後臺主框架並添加功能菜單(frameset):
答:<frameset rows="80,*">
<frame name="top" src="top.php">
<frameset cols="150,*">
<frame name="lower_left" src="left.php">
<frame name="lower_right" src="right.php">
</frameset>
</frameset>
3、新聞添加的思路:
① 組建新聞添加的表單頁面,有新聞標題、內容、所屬分類、添加人員
② 分類不能是靜態的,應該是從數據庫裏面讀出來的拼接成的下拉列表
③ 須要將表單的提交按鈕屬性設置成爲submit,method設置成爲post,action爲進行插入的服務器端的文件名
④ 頁面跳轉到實現添加功能的文件裏,進行一系列驗證,驗證完成後鏈接數據庫,組合sql語句:insert into 表名(列名)values(post提交過來的值),完成插入操做,插入成功跳轉到列表頁面
⑤ 列表頁面的顯示信息須要進行兩表聯合查詢:select * from 新聞表 inner join 分類表 on新聞表.分類id=分類表.id,一張是新聞表一張是分類表
四、刪除新聞的思路:
① 該操做是在新聞列表裏面進行的操做
② 首先要保證有一個a標籤來讓管理員進行點擊,還要注意,要刪除那條新聞要將新聞id傳遞給服務器端,那就須要進行get傳值:<a href=’del.php?Id=剛纔列表所查詢出來的新聞id’>
③ 服務器端用$_GET[‘id’]來獲取剛纔的傳遞過來的id值
④ 進行鏈接數據庫等操做,組合sql語句:delete from 新聞表 where id=$_GET[‘id’]
⑤ 執行sql語句,執行成功跳轉到列表頁面,失敗給出提示
五、修改新聞的思路:
① 該操做是在新聞列表裏面進行的操做,可是須要有一個表單頁面,相似於添加頁面,與添加頁面不一樣的是,文本框裏面會有值
② 首先要保證有一個a標籤來讓管理員進行點擊,還要注意,要修改那條新聞要將新聞id傳遞給服務器端,那就須要進行get傳值:<a href=’update_news.php?Id=剛纔列表所查詢出來的新聞id’>
③ 服務器端用$_GET[‘id’]來獲取剛纔的傳遞過來的id值先進行的操做查詢,將這條記錄的信息查詢出來輸出到頁面的表單裏面,還要注意一會修改的時候須要id,就將id 放到表單裏面的一個隱藏域裏面
④ 用戶點擊保存,服務器端獲得新的數據,驗證非空,鏈接數據庫等操做
⑤ 組合sql語句,進行update操做:update 表名 set 字段名=新值($_POST新提交過來的),字段名=新值($_POST新提交過來的),。。。。。。修改完成跳轉到列表頁面
六、搜索新聞的思路
七、
① 在新聞列表頁面寫一個搜索框,和一個分類的下拉菜單(動態讀取的),搜索按鈕
② 點擊搜索按鈕,仍提交到顯示列表的php文件裏
判斷提交過來的文本框裏的值,若是有,將這些信息組裝成以一個where條件
④ 執行sql語句:
select news.id,title,content,fenlei.name,user_name,add_time,click from news inner join fenlei on news.fenlei_id=fenlei.id order by news.id where (title like 「%提交過來的文本框裏面的值%」or content like 「%提交過來的文本框裏面的值%」) and news.fenlei_id=提交過來的下拉框裏面的值
⑤ 執行完成,從新輸出表單
7、首頁導航功能開發(導航即展現新聞分類)
答:① 創建一個前臺主頁,要有一個導航欄
② 由於導航是從數據庫裏面動態讀出來的,因此要用php操做mysql讀取分類表中的數據
拼寫sql語句:select * from 分類表 而後執行sql語句
④ 讀出數據後,將數據循環到ul的列表中去
8、首頁最新新聞功能開發
① 在前臺頁面上創建一個最新新聞的模塊,也就是一個ul列表
② 最新新聞是從數據庫裏面讀出來的,因此要用php操做mysql讀取新聞表中的數據
③ 由於是最新新聞,確定是添加時間最新的,因此查詢的條件就應該是根據添加時間降序排列
④ 拼寫sql語句:select title,add_time from news order by add_time desc limit 3
⑤ 讀出數據後,將數據循環到ul的列表中去
9、首頁最熱新聞功能的開發
① 在前臺頁面上創建一個最熱新聞的模塊,也就是一個ul列表
② 最熱新聞是從數據庫裏面讀出來的,因此要用php操做mysql讀取新聞表中的數據
由於是最新新聞,確定是點擊量時最多的,因此查詢的條件就應該是根據點擊量降序排列
④ 拼寫sql語句:select id,title,add_time,click from news order by click desc limit 3⑤ 讀出數據後,將數據循環到ul的列表中去