欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP_MySQL教程-第二天while循環(huán)與數(shù)據(jù)庫操作第2/2頁

 更新時間:2007年03月18日 00:00:00   作者:  

同樣要注意$PATH_INFO的用法。就象我在第一課里講到的,您可以在HTML代碼中的任意位置使用PHP。您也會注意到,表格中的每一個元素都對應(yīng)著數(shù)據(jù)庫中的一個字段。這種對應(yīng)關(guān)系并不是必須的,這么做只是更直觀一些,便于您以后理解這些代碼。 
還要注意的是,我在Submit按鈕中加入了name屬性。這樣我在程序中可以試探$submit變量是否存在。于是,當(dāng)網(wǎng)頁被再次調(diào)用時,我就會知道調(diào)用頁面時是否已經(jīng)填寫了表格。 
我應(yīng)該指出,您不一定要把上面的網(wǎng)頁內(nèi)容寫到PHP程序中,再返過來調(diào)用程序本身。您完全可以把顯示表格的網(wǎng)頁和處理表格的程序分開放在兩個網(wǎng)頁、三個網(wǎng)頁甚至更多網(wǎng)頁中,悉聽尊便。放在一個文件中只是可以使內(nèi)容更加緊湊而已。 
那好,我們現(xiàn)在加入一些代碼,來檢查用戶在表格中輸入的內(nèi)容。我會把用$HTTP_POST_VARS把所有查詢參數(shù)變量都顯示出來,這只不過是為了證明PHP確實把所有變量都傳給了程序。這種方法是一個很有用的調(diào)試手段。如果您要想看全部的變量,可以用$GLOBALS。
復(fù)制代碼 代碼如下:

<html> 
<body> 
<?php 
if ($submit) { 

  // 處理表格輸入 
  while (list($name, $value) = each($HTTP_POST_VARS)) { 
    echo "$name = $value<br>n"; 
  } 
} else{ 

  // 顯示表格 
  ?> 
  <form method="post" action="<?php echo $PATH_INFO?>"> 
  名:<input type="Text" name="first"><br>姓:<input type="Text" name="last"><br>住址:<input type="Text" name="address"><br>職位:<input type="Text" name="position"><br><input type="Submit" name="submit" value="輸入信息"> 
  </form> 
  <?php 
} // end if,if結(jié)束 
?> 
</body> 
</html>  
程序現(xiàn)在運行正常,那我們現(xiàn)在就可以取到表格輸入的內(nèi)容,并把它們發(fā)送給數(shù)據(jù)庫。 
<html> 
<body> 
<?php 
if ($submit) { 

  // 處理表格輸入 
  $db = mysql_connect("localhost", "root"); 
  mysql_select_db("mydb",$db); 
  $sql = "INSERT INTO employees (first,last,address,position) 
  VALUES ('$first','$last','$address','$position')"; 
  $result = mysql_query($sql); 
  echo "Thank you! Information entered.n"; 
} else{ 

  // 顯示表格內(nèi)容 
  ?> 
  <form method="post" action="<?php echo $PATH_INFO?>"> 
  名:<input type="Text" name="first"><br>  姓:<input type="Text" name="last"><br>住址:<input type="Text" name="address"><br>  職位:<input type="Text" name="position"><br><input type="Submit" name="submit" value="輸入信息"> 
  </form> 
  <?php 
} // end if,if結(jié)束 
?> 
</body> 
</html>  

您現(xiàn)在已經(jīng)向數(shù)據(jù)庫中插入數(shù)據(jù)了。不過還有很多完善的工作要做。如果用戶沒有填寫某一欄怎么辦?在需要填入數(shù)字的地方填了文字怎么辦?或者填錯了怎么辦? 
別擔(dān)心。我們一步一步來。

第五頁 修改數(shù)據(jù) 
在個教程中,我都把要執(zhí)行的SQL語句放到一個變量($sql)中,然后才用mysql_query()來執(zhí)行數(shù)據(jù)庫查詢。在調(diào)試時這是很有用的。如果程序出了什么問題,您隨時可以把SQL語句的內(nèi)容顯示出來,檢查其中的語法錯誤。 
我們已經(jīng)學(xué)習(xí)了如何把數(shù)據(jù)插入到數(shù)據(jù)庫中。現(xiàn)在我們來學(xué)習(xí)如何修改數(shù)據(jù)庫中已有的記錄。數(shù)據(jù)的編輯包括兩部分:數(shù)據(jù)顯示和通過表格輸入把數(shù)據(jù)返回給數(shù)據(jù)庫,這兩部分我們前面都已經(jīng)講到了。然而,數(shù)據(jù)編輯還是有一點點不同,我們必須先在表格中顯示出相關(guān)的數(shù)據(jù)。 
首先,我們回過頭再看看第一課的程序代碼,在網(wǎng)頁中顯示員工姓名。但是這次,我們要把數(shù)據(jù)顯示在表格中。程序看起來象下面這樣:
復(fù)制代碼 代碼如下:

<html> 
<body> 
<?php 
$db = mysql_connect("localhost", "root"); 
mysql_select_db("mydb",$db); 
if ($id) { 

  // 查詢數(shù)據(jù)庫 
  $sql = "SELECT * FROM employees WHERE id=$id"; 
  $result = mysql_query($sql);     
  $myrow = mysql_fetch_array($result); 
  ?> 
  <form method="post" action="<?php echo $PATH_INFO?>"> 
  <input type=hidden name="id" value="<?php echo $myrow["id"] ?>"> 
  名:<input type="Text" name="first" value="<?php echo  
  $myrow["first"] ?>"><br>姓:<input type="Text" name="last" value="<?php echo  
  $myrow["last"] ?>"><br>住址:<input type="Text" name="address" value="<?php echo  
  $myrow["address"] ?>"><br>職位:<input type="Text" name="position" value="<?php echo  
  $myrow["position"] ?>"><br><input type="Submit" name="submit" value="輸入信息"> 
  </form> 
  <?php 
} else { 

  // 顯示員工列表 
  $result = mysql_query("SELECT * FROM employees",$db); 
  while ($myrow = mysql_fetch_array($result)) { 
    printf("<a href="%s?id=%s">%s %s</a><br>n", $PATH_INFO,  
    $myrow["id"], $myrow["first"], $myrow["last"]); 
  } 

?> 
</body> 
</html>  

我們剛才是把字段內(nèi)容寫入到相應(yīng)表格元素中的value屬性里,這是相應(yīng)簡單的。我們再往前進一步,使程序可以把用戶修改過的內(nèi)容寫回數(shù)據(jù)庫去。同樣,我們通過Submit按鈕來判斷是否處理表格輸入內(nèi)容。還要注意,我們用的SQL語句稍稍有些不同。
復(fù)制代碼 代碼如下:

<html> 
<body> 
<?php 
$db = mysql_connect("localhost", "root"); 
mysql_select_db("mydb",$db); 
if ($id) { 
  if ($submit) { 
    $sql = "UPDATE employees SET first='$first',last='$last', 
    address='$address',position='$position' WHERE id=$id"; 
    $result = mysql_query($sql); 

    echo "謝謝!數(shù)據(jù)更改完成n"; 
  } else { 

    // 查詢數(shù)據(jù)庫 
    $sql = "SELECT * FROM employees WHERE id=$id"; 
    $result = mysql_query($sql);     
    $myrow = mysql_fetch_array($result); 
    ?> 
    <form method="post" action="<?php echo $PATH_INFO?>"> 
    <input type=hidden name="id" value="<?php echo $myrow["id"] ?>"> 

    名:<input type="Text" name="first" value="<?php 
   echo $myrow["first"] ?>"><br>    姓:<input type="Text" name="last" value="<?php echo  
    $myrow["last"] ?>"><br>    住址:<input type="Text" name="address" value="<?php echo  
    $myrow["address"] ?>"><br>    職位:<input type="Text" name="position" value="<?php echo  
    $myrow["position"] ?>"><br>    <input type="Submit" name="submit" value="輸入信息"> 
    </form> 
    <?php 
    } 
} else { 

  // 顯示員工列表 
  $result = mysql_query("SELECT * FROM employees",$db); 
  while ($myrow = mysql_fetch_array($result)) { 
    printf("<a href="%s?id=%s">%s %s</a><br>n", $PATH_INFO,  
    $myrow["id"], $myrow["first"], $myrow["last"]); 
  } 

?> 
</body> 
</html>  

就是這樣。在這個程序中已經(jīng)包含了我們學(xué)過所大多數(shù)特性。您也已經(jīng)看到,我們在一個if()條件判別語句中又加了一個if()語句,來檢查多重條件。 
下面,我們要把所有東西全都加在一起,寫出一個很好的程序來。

第六頁 完整的程序 
在本課結(jié)束前,我們要把所有東西加入到一個程序中,使它具有增加、編輯修改、刪除記錄的功能。這是前面所有內(nèi)容的一個延伸,也可以作為極好的復(fù)習(xí)方法。看看下面的程序。 
復(fù)制代碼 代碼如下:

<html> 
<body> 
<?php 
$db = mysql_connect("localhost", "root"); 
mysql_select_db("mydb",$db); 
if ($submit) { 

  // 如果沒有ID,則我們是在增加記錄,否則我們是在修改記錄 
  if ($id) { 
    $sql = "UPDATE employees SET first='$first',last='$last', 
    address='$address',position='$position' WHERE id=$id"; 
  } else { 
    $sql = "INSERT INTO employees (first,last,address,position)  
    VALUES ('$first','$last','$address','$position')"; 
  } 

  // 向數(shù)據(jù)庫發(fā)出SQL命令 
  $result = mysql_query($sql); 

  echo "記錄修改成功!<p>"; 
} elseif ($delete) { 

    // 刪除一條記錄 
    $sql = "DELETE FROM employees WHERE id=$id";     
    $result = mysql_query($sql); 

    echo "記錄刪除成功!<p>"; 
} else { 

  // 如果我們還沒有按submit按鈕,那么執(zhí)行下面這部分程序 
  if (!$id) { 

    // 如果不是修改狀態(tài),則顯示員工列表 
    $result = mysql_query("SELECT * FROM employees",$db); 
    while ($myrow = mysql_fetch_array($result)) { 
      printf("<a href="%s?id=%s">%s %s</a> n",  
      $PATH_INFO, $myrow["id"], $myrow["first"], $myrow["last"]); 
      printf("<a href="%s?id=%s&delete=yes">(DELETE)</a>< 
     br>", $PATH_INFO, $myrow["id"]); 
    } 
  } 
  ?> 
  <P> 
  <a href="<?php echo $PATH_INFO?>">ADD A RECORD</a> 
  <P> 
  <form method="post" action="<?php echo $PATH_INFO?>"> 
  <?php 
  if ($id) { 

    // 我們是在編輯修改狀態(tài),因些選擇一條記錄 
    $sql = "SELECT * FROM employees WHERE id=$id"; 
    $result = mysql_query($sql); 
    $myrow = mysql_fetch_array($result); 
    $id = $myrow["id"]; 
    $first = $myrow["first"]; 
    $last = $myrow["last"]; 
    $address = $myrow["address"]; 
    $position = $myrow["position"]; 

    // 顯示id,供用戶編輯修改 
    ?> 
    <input type=hidden name="id" value="<?php echo $id ?>"> 
    <?php 
  } 
  ?> 

  名:<input type="Text" name="first" value="<?php echo $first ?>"><br>姓:<input type="Text" name="last" value="<?php echo $last ?>"><br>住址:<input type="Text" name="address" value="<?php echo $address ?>"><br>職位:<input type="Text" name="position" value="<?php echo $position ?>"><br><input type="Submit" name="submit" value="輸入信息"> 
  </form> 
<?php 

?> 
</body> 
</html> 


這段程序看起來很復(fù)雜,但實際上并不難。程序主要有三個部分。第一個if()語句檢查我們是否已經(jīng)按下了那個“輸入信息”的數(shù)據(jù)提交按鈕。如果是,程序再檢查$id是否存在。如果不存在,那我們就是在增加記錄狀態(tài),否則,我們是在修改記錄狀態(tài)。 
接下來我們檢查變量$delete是否存在。如果存在,我們是要刪除記錄。注意,第一個if()語句檢查的是用POST方法發(fā)送來的變量,而這一次我們檢查的是GET方法中傳遞過來的變量。 
最后,程序默認(rèn)的動作是顯示員工列表和表格。同樣,我們要檢查變量$id是否存在。如果存在,我們就根據(jù)它的值檢索出相應(yīng)的記錄顯示出來。否則,我們會顯示一個空的表格。 
現(xiàn)在,我們已經(jīng)把所學(xué)的東西全部都放在一個程序里頭了。我們用到了while()循環(huán),用到了if()語句,并且執(zhí)行了全部的SQL基本操作 - SELECT、INSERT、UPDATE以及DELETE。另外,我們也知道如何在不同的網(wǎng)頁之間通過URL和表格輸入來互相傳遞信息。 
在第三課里,我們要學(xué)習(xí)如何為網(wǎng)頁增加智能化處理能力。

相關(guān)文章

最新評論