PHP_MySQL教程-第二天while循环与数据库操作

 更新时间:2007年03月18日 00:00:00   作者:  

同样要注意$PATH_INFO的用法。就象我在第一课里讲到的,您可以在HTML代码中的任意位置使用PHP。您也会注意到,表格中的每一个元素都对应着数据库中的一个字段。这种对应关系并不是必须的,这么做只是更直观一些,便于您以后理解这些代码。 
还要注意的是,我在Submit按钮中加入了name属性。这样我在程序中可以试探$submit变量是否存在。于是,当网页被再次调用时,我就会知道调用页面时是否已经填写了表格。 
我应该指出,您不一定要把上面的网页内容写到PHP程序中,再返过来调用程序本身。您完全可以把显示表格的网页和处理表格的程序分开放在两个网页、三个网页甚至更多网页中,悉听尊便。放在一个文件中只是可以使内容更加紧凑而已。 
那好,我们现在加入一些代码,来检查用户在表格中输入的内容。我会把用$HTTP_POST_VARS把所有查询参数变量都显示出来,这只不过是为了证明PHP确实把所有变量都传给了程序。这种方法是一个很有用的调试手段。如果您要想看全部的变量,可以用$GLOBALS。
复制代码 代码如下:

<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结束 
?> 
</body> 
</html>  
程序现在运行正常,那我们现在就可以取到表格输入的内容,并把它们发送给数据库。 
<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{ 

  // 显示表格内容 
  ?> 
  <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结束 
?> 
</body> 
</html>  

您现在已经向数据库中插入数据了。不过还有很多完善的工作要做。如果用户没有填写某一栏怎么办?在需要填入数字的地方填了文字怎么办?或者填错了怎么办? 
别担心。我们一步一步来。

第五页 修改数据 
在个教程中,我都把要执行的SQL语句放到一个变量($sql)中,然后才用mysql_query()来执行数据库查询。在调试时这是很有用的。如果程序出了什么问题,您随时可以把SQL语句的内容显示出来,检查其中的语法错误。 
我们已经学习了如何把数据插入到数据库中。现在我们来学习如何修改数据库中已有的记录。数据的编辑包括两部分:数据显示和通过表格输入把数据返回给数据库,这两部分我们前面都已经讲到了。然而,数据编辑还是有一点点不同,我们必须先在表格中显示出相关的数据。 
首先,我们回过头再看看第一课的程序代码,在网页中显示员工姓名。但是这次,我们要把数据显示在表格中。程序看起来象下面这样:
复制代码 代码如下:

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

  // 查询数据库 
  $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>  

我们刚才是把字段内容写入到相应表格元素中的value属性里,这是相应简单的。我们再往前进一步,使程序可以把用户修改过的内容写回数据库去。同样,我们通过Submit按钮来判断是否处理表格输入内容。还要注意,我们用的SQL语句稍稍有些不同。
复制代码 代码如下:

<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 "谢谢!数据更改完成n"; 
  } else { 

    // 查询数据库 
    $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>  

就是这样。在这个程序中已经包含了我们学过所大多数特性。您也已经看到,我们在一个if()条件判别语句中又加了一个if()语句,来检查多重条件。 
下面,我们要把所有东西全都加在一起,写出一个很好的程序来。

第六页 完整的程序 
在本课结束前,我们要把所有东西加入到一个程序中,使它具有增加、编辑修改、删除记录的功能。这是前面所有内容的一个延伸,也可以作为极好的复习方法。看看下面的程序。 
复制代码 代码如下:

<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')"; 
  } 

  // 向数据库发出SQL命令 
  $result = mysql_query($sql); 

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

    // 删除一条记录 
    $sql = "DELETE FROM employees WHERE id=$id";     
    $result = mysql_query($sql); 

    echo "记录删除成功!<p>"; 
} else { 

  // 如果我们还没有按submit按钮,那么执行下面这部分程序 
  if (!$id) { 

    // 如果不是修改状态,则显示员工列表 
    $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) { 

    // 我们是在编辑修改状态,因些选择一条记录 
    $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> 


这段程序看起来很复杂,但实际上并不难。程序主要有三个部分。第一个if()语句检查我们是否已经按下了那个“输入信息”的数据提交按钮。如果是,程序再检查$id是否存在。如果不存在,那我们就是在增加记录状态,否则,我们是在修改记录状态。 
接下来我们检查变量$delete是否存在。如果存在,我们是要删除记录。注意,第一个if()语句检查的是用POST方法发送来的变量,而这一次我们检查的是GET方法中传递过来的变量。 
最后,程序默认的动作是显示员工列表和表格。同样,我们要检查变量$id是否存在。如果存在,我们就根据它的值检索出相应的记录显示出来。否则,我们会显示一个空的表格。 
现在,我们已经把所学的东西全部都放在一个程序里头了。我们用到了while()循环,用到了if()语句,并且执行了全部的SQL基本操作 - SELECT、INSERT、UPDATE以及DELETE。另外,我们也知道如何在不同的网页之间通过URL和表格输入来互相传递信息。 
在第三课里,我们要学习如何为网页增加智能化处理能力。

相关文章

最新评论