免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123456
最近访问板块 发新帖
楼主: 草上飞2008
打印 上一主题 下一主题

大赛评选结果已出,敬请关注!:PHP编程大赛隆重启动,PHP开发大挑战 [复制链接]

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
51 [报告]
发表于 2010-10-11 10:36 |显示全部楼层
回复 210# starzhestarzhe


    想要奖品是一方面。想看看自己的PHP还会多少是另一方面。重在参与又是一方面。,哈哈。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
52 [报告]
发表于 2010-10-11 13:00 |显示全部楼层
13:有一艘大船准备用来装载货物。所有待装货物都装在货箱中且所有货箱的大小都一样,但货箱的重量都各不相同。设第i 个货箱的重量为wi(1≤i≤n),而货船的最大载重量为c,如何在货船上装入最多的货物。
  1. <?php
  2.    $arrW=array(1=>W1,2=>W2,.....,n=>Wn);  //这个数组存放的是货物的重量(W1,W2,....Wn为具体数值)
  3.    $c = 10000; //总装载量
  4.    function sortArr($arr){
  5.        if (sizeof($arr)<2) return $arr;
  6.        //先将货物从轻到重排序。
  7.        for ($i=1;$i<=sizeof($arr);$i++){
  8.                   for ($j=$i+1;$j<sizeof($arr);$j++){
  9.                              if ($arr[$i]>$arr[$j]){
  10.                                         $temp = $arr[$i];
  11.                                         $arr[$i] = $arr[j];
  12.                                         $arr[$j]=$temp;
  13.                              }
  14.                   }
  15.        }
  16.        return $arr;
  17.    }
  18.    $arrTemp = sortArr($arrW); //排序
  19.    $arrLoad = array();
  20.    $j = 0;
  21.    for ($i = 1;$i<=sizeof($arrTemp);$i++){
  22.               if ($arrTemp[$i] < $c){ //还有可以装载的地方
  23.                   foreach ($arrW as $key=>$value){
  24.                              if ($value == $arrTemp[$i]){ //找到原始的箱号
  25.                                  $arrLoad[$j] = $key . ":" . $value;                                 
  26.                                  break;
  27.                              }
  28.                   }
  29.                   $j = $j + 1;
  30.                   $c = $c - $arrTemp[$i]; //总装载量减少
  31.               }else{
  32.                          break; //已经没有可以装箱的地方
  33.               }
  34.    }
  35.    print_r($arrLoad); //这就是装箱的结果
  36. ?>
复制代码

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
53 [报告]
发表于 2010-10-11 21:17 |显示全部楼层
本帖最后由 renxiao2003 于 2010-10-11 22:45 编辑

16、假设数据库中有两个表table1和table2,这两个表结构相同,都有三个字段id、name和description,分别存放编号、名称和描述。
现在请做一个页面,包含两个下拉菜单,第一个下拉菜单内是table1中的name,第二个下拉菜单内是table2中的name。下拉菜单的默认值是无,当选择了table1中的任意一个name时,出现一个textarea框显示name对应的description。当选择了table2中的任意一个name时,出现一个textarea框显示name对应的description,并且保留上一个下拉菜单的值和textarea中的值。Textarea中的值可修改,需要做到修改第一个textarea的值,然后更改第二个下拉菜单的值后,第一个textarea中的修改值仍然保留。最后是一个提交按钮,只有按下提交按钮,才会把textarea中的数据才会存入数据库。如图:
默认界面:


选择第一个下拉菜单的值:


修改第一个菜单的中描述的值,然后选择第二个菜单的name值

        提交后才会存入数据库:



答:文件说明:
index.php 主页面,当选择下拉列表框时,通过ajax从后台提取数据,不更新画面。
          提交时检查数据是否变化,无变化不允许提交。
ajax.php  通过ajax提取数据(描述)的文件
submit.php 提交更新数据的文件
dbconn.php 连接数据库的文件
dbclose.php 关闭数据库连接文件

详细解答见附件。将附件解压到apache下。注意只有一级16目录。

ajax.php

  1. <?php
  2. /**
  3. * 通过Ajax获取描述数据的文件
  4. */
  5. header('Content-Type:text/html;charset=GB2312'); //设置编码
  6. require_once("dbconn.php");
  7.     $tbl = $_GET["tbl"]; //表序号,1是table1,2是table2
  8.     $id = $_GET["id"]; //id号
  9.     $strsql = "select description from ";
  10.     if ($tbl == 1){
  11.      $strsql = $strsql . "table1 ";
  12.     }
  13.     if ($tbl == 2){
  14.      $strsql = $strsql ."table2 ";
  15.     }
  16.     $strsql = $strsql . " where id = " . $id;
  17.     $result=mysql_db_query($mysql_database, $strsql, $conn);
  18.     if( mysql_num_rows ($result) ){
  19.         $row=mysql_fetch_row($result);
  20.         echo $row[0];
  21.     }else{
  22.      echo "no description";
  23.     }
  24. // 释放资源
  25.     mysql_free_result($result);
  26.     require_once("dbclose.php");
  27. ?>
复制代码
dbclose.php

  1. <?php
  2.     // 关闭连接
  3.     mysql_close();
  4. ?>
复制代码
dbconn.php

  1. <?php
  2.     $mysql_server_name="localhost"; //数据库服务器名称(修改为自己的数据库服务器)
  3.     $mysql_username="root"; // 连接数据库用户名(修改为自己的数据库用户名)
  4.     $mysql_password=""; // 连接数据库密码(修改为自己的数据库密码)
  5.     $mysql_database="wangcc"; // 数据库的名字(修改为自己的数据库名)
  6.    
  7.     // 连接到数据库
  8.     $conn=mysql_connect($mysql_server_name, $mysql_username,
  9.                             $mysql_password);
  10. ?>
复制代码
index.php

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=GB2312">
  4.   <meta http-equiv="Content-Script-Type" content="text/javascript">
  5.   <meta http-equiv="Content-Style-Type" content="text/css">
  6.   <script type="text/javascript" language="javascript">
  7.   /* Create a new XMLHttpRequest object to talk to the Web server */
  8.   var xmlHttp = false;
  9. /*@cc_on @*/
  10. /*@if (@_jscript_version >= 5)
  11. try {
  12.    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
  13. } catch (e) {
  14.    try {
  15.      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  16.    } catch (e2) {
  17.      xmlHttp = false;
  18.    }
  19. }
  20. @end @*/
  21. if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
  22.    xmlHttp = new XMLHttpRequest();
  23. }
  24. function doAjax1(){
  25.    var in1 = document.getElementById("sel1").value;
  26.    if (in1 == "") {
  27.       document.getElementById("div1").style.display="none";
  28.        return ;
  29.    }
  30.    //if ((in1 == null)||(in1 == ""))return;alert("aa");
  31.    var url = "http://localhost/16/ajax.php?tbl=1&id=" + escape(in1) ;
  32.    // Open a connection to the server
  33.    xmlHttp.open("GET", url, true);
  34.    // Setup a function for the server to run when it's done
  35.    xmlHttp.onreadystatechange = updatePage1;
  36.    // Send the request
  37.    xmlHttp.send(null);
  38. }
  39. function doAjax2(){
  40.    var in1 = document.getElementById("sel2").value;
  41.    if (in1 == "") {
  42.       document.getElementById("div2").style.display="none";
  43.        return ;
  44.    }
  45.    //if ((in1 == null)||(in1 == ""))return;alert("aa");
  46.    var url = "http://localhost/16/ajax.php?tbl=2&id=" + escape(in1) ;
  47.    // Open a connection to the server
  48.    xmlHttp.open("GET", url, true);
  49.    // Setup a function for the server to run when it's done
  50.    xmlHttp.onreadystatechange = updatePage2;
  51.    // Send the request
  52.    xmlHttp.send(null);
  53. }
  54. function updatePage1() {
  55.    if (xmlHttp.readyState == 4) {
  56.      var response = xmlHttp.responseText;
  57.      document.getElementById("div1").style.display="";
  58.      document.getElementById("sb1").style.display="";
  59.      document.getElementById("des1").value = response;
  60.      document.getElementById("hdn1").value = response;
  61.    }
  62. }
  63. function updatePage2() {
  64.    if (xmlHttp.readyState == 4) {
  65.      var response = xmlHttp.responseText;
  66.      document.getElementById("div2").style.display="";
  67.      document.getElementById("sb1").style.display="";
  68.      document.getElementById("des2").value = response;
  69.      document.getElementById("hdn2").value = response;
  70.    }
  71. }
  72. /**
  73. * 提交前检查是否为空和是否发生变化
  74. */
  75. function check(){
  76.   var bfirst = false; //第一个变化标志
  77.   var bsecond = false; //第二个变化标志
  78.   if (document.getElementById("div1").style.display == ""){ //第一个描述显示了
  79.    if (trim(document.getElementById("des1").value) == ""){   
  80.     alert("板块描述不能为空");
  81.     document.getElementById("des1").focus();
  82.     return false;
  83.    }
  84.    if (document.getElementById("des1").value == document.getElementById("hdn1").value){ //检查板块是否变更
  85.     bsecond = false;
  86.    }else{
  87.     bsecond = true;
  88.    }
  89.   }
  90.   if (document.getElementById("div2").style.display == ""){ //第二个描述显示了
  91.    if (trim(document.getElementById("des2").value) == ""){
  92.     alert("TAG描述不能为空");
  93.     document.getElementById("des2").focus();
  94.     return false;
  95.    }
  96.    if (document.getElementById("des2").value == document.getElementById("hdn2").value){ //检查TAG是否变更
  97.     bsecond = false;
  98.    }else{
  99.     bsecond = true;
  100.    }
  101.   }
  102.   if ((bsecond)||(bfirst)){
  103.    return true;
  104.   }else{
  105.    alert("板块和TAG描述都没有变更,不能提交!");
  106.    return false;
  107.   }
  108. }
  109. function trim(str){
  110.   return str.replace(/(^\s*)|(\s*$)/g, "");
  111. }
  112.   </script>
  113.      <title>测试</title>
  114. </head>
  115. <body>
  116. <?php
  117.      require_once("dbconn.php");
  118. ?>
  119. <form method="POST" action="./submit.php" onsubmit="return check();">
  120.   <table>
  121.     <tr>
  122.     <td>请选择需要修改 Meta Description 的板块:</td>
  123.     </tr>  
  124.     <tr>
  125.     <td><select id="sel1" name="sel1" onchange="doAjax1();">
  126.     <option value="" selected>无</option>
  127.     <?php
  128.         $strsql = "select id,name from table1";
  129.           $result=mysql_db_query($mysql_database, $strsql, $conn);
  130.           if( mysql_num_rows ($result) ){
  131.                  while ($row=mysql_fetch_row($result)){
  132.               echo '<option value="' . $row[0] . '">' . $row[1] . '</option>';
  133.    
  134.           }
  135.         }
  136.     ?>
  137.     </select>
  138.     </td>
  139.     </tr>
  140.     <tr>
  141.       <td><div id="div1" style="display:none">板块内容关键字:<br>
  142.       <textarea id="des1" name="des1" rows=6 cols=60></textarea></div>
  143.       <input type="hidden" id="hdn1" name="hdn1" >
  144.       </td>
  145.     </tr>  
  146.     <tr>
  147.     <td>请选择需要修改 Meta Description 的TAG:</td>
  148.     </tr>  
  149.     <tr>
  150.     <td><select id="sel2" name="sel2" onchange="doAjax2();">
  151.       <option value="" selected>无</option>
  152.     <?php
  153.         $strsql = "select id,name from table1";
  154.           $result=mysql_db_query($mysql_database, $strsql . $id, $conn);
  155.           if( mysql_num_rows ($result) ){
  156.                  while ($row=mysql_fetch_row($result)){
  157.               echo '<option value="' . $row[0] . '">' . $row[1] . '</option>';
  158.    
  159.           }
  160.         }
  161.     ?>
  162.     </select>
  163.     </td>
  164.     </tr>
  165.     <tr>
  166.       <td><div id="div2" style="display:none">板块内容关键字:<br>
  167.       <textarea id="des2" name="des2" rows=6 cols=60></textarea></div>
  168.       <input type="hidden" name="hdn2" id="hdn2" >
  169.       </td>
  170.     </tr>  
  171.    </table><br>
  172.    <input type=submit value="提交" id="sb1" style="display:none">
  173.    </form>
  174. <?php
  175.   // 释放资源
  176.         mysql_free_result($result);
  177.      require_once("dbclose.php");
  178. ?>
  179.     </body>
  180. </html>
复制代码
submit.php

  1. <?php
  2. /**
  3. * 提交保存数据库
  4. */
  5. $id1=$_POST['sel1'];
  6. $id2=$_POST['sel2'];
  7. $desc1 = $_POST['des1'];  //描述
  8. $desc2 = $_POST['des2'];
  9. $hdn1 = $_POST['hdn1'];   //修改前的描述
  10. $hdn2 = $_POST['hdn2'];
  11. require_once("dbconn.php");
  12. if ($id1){
  13.   if ($desc1 != $hdn1){
  14.    $strsql = "update table1 set description = '" . $desc1 . "' where id=" . $id1;
  15.    mysql_db_query($mysql_database, $strsql, $conn);
  16.   }
  17. }
  18. if ($id2){
  19.   if ($desc2 != $hdn2){
  20.    $strsql = "update table2 set description = '" . $desc2 . "' where id=" . $id2;
  21.    mysql_db_query($mysql_database, $strsql, $conn);
  22.   }
  23. }
  24. echo "提交成功!<br><a href='./index.php'>返回</a>";
  25. require_once("dbclose.php");
  26. ?>
复制代码
创建表和插入数据的语句

  1. create database wangcc;
  2. use wangcc;
  3. create table table1(id int primary key,name varchar(20),description varchar(100));
  4. create table table2(id int primary key,name varchar(20),description varchar(100));
  5. insert into table1 values(1,'科技世界','介绍自然科技');
  6. insert into table1 values(2,'电脑世界','介绍电脑科技');
  7. insert into table2 values(1,'电脑AA世界','介绍电脑AA科技');
  8. insert into table2 values(2,'电脑BB世界','介绍电脑AABB科技');
复制代码

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
54 [报告]
发表于 2010-10-11 21:21 |显示全部楼层
回复 1# 草上飞2008


    功德圆满,全部答完。呵呵。不知道能不能答对20道题目。呵呵。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
55 [报告]
发表于 2010-10-19 16:55 |显示全部楼层
回复 216# 魔法鱼。


    呵呵,强什么啊。都不知道正确与否。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
56 [报告]
发表于 2010-11-25 16:05 |显示全部楼层
该公布结果了。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
57 [报告]
发表于 2010-11-25 16:26 |显示全部楼层
回复 253# starzhestarzhe


    呵呵。直接把钱打我,我把我的给你。呵呵。论坛现在不能换了啊。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
58 [报告]
发表于 2010-11-25 16:41 |显示全部楼层
回复 255# starzhestarzhe


    你直接去取钱。呵呵。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
59 [报告]
发表于 2010-12-02 16:13 |显示全部楼层
呵呵。还没看呢。现在下来看看。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
60 [报告]
发表于 2010-12-02 16:20 |显示全部楼层
回复 263# pincs


    才发现,有好多答案直接采用了我的回答。呵呵。
   特别是后面的题,你倒着往上看。呵呵。
   就是有的题窜了。呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP