php与js做级联菜单

 更新时间:2016年11月25日 16:12  点击:1244

很多朋友都在问题这个问题,大我都初学者了,今天我就把我自己的写的发出来吧,各位看了别笑啊.先看看php与js混合代码.

<script>
function GetObjId(ObjName)
{
//alert(document.all.tags('select')[i].name);
for(i = 0; i < document.all.tags('select').length; i++)
{
  if (document.all.tags('select')[i].name == ObjName) {return(i);  break;}
}
return(-1);
}

function Do_ToDo_Change(ObjName1, ObjName2, StatInt)
{
//document.forms[0].elements[0].name
var id1, id2, tempstr, tempint
var my_array = new Array();
<?php
$list='';
for($i=1;$i<=12;$i++){
 $osql ="Select * from gx_newtype where gx_masterid=$i";
 $resul =mysql_query($osql) or die(mysql_error());
 while($res =mysql_fetch_array($resul)){  
  $list=$list.$res['id'].'|'.$res['gx_typename'].',';
 }
 ?>
 my_array[<?php echo $i-1; ?>] = '<?php echo $list;?>';
 <?php
 $list='';
}
?>


id1 = GetObjId(ObjName1);
id2 = GetObjId(ObjName2);
tempint = document.all.tags('select')[id2].length;
for(i = 1; i < tempint; i++) {document.all.tags('select')[id2].options[1] = null}
if (document.all.tags('select')[id1].selectedIndex > StatInt - 1)
{
  tempstr = my_array[document.all.tags('select')[id1].selectedIndex - 1].split(",");
  for(i = 1; i <= tempstr.length; i++) {document.all.tags('select')[id2].options[i] = new Option(tempstr[i - 1].substr(tempstr[i - 1].indexOf("|") + 1), tempstr[i - 1].substr(0,tempstr[i - 1].indexOf("|")))}
}
}
</script>

看了上面的代码后有些朋友可能会有些问号?就是这样怎么行呢?js怎么能和php这样放在一起呢,我想如果你真的提出这个问题了,我想你大概不明白,服务器端脚本在客户端脚本之前执行吧?现在明白了吗?

下面来看我们是怎么让它们级联的.

 

<select name="select" id="select" onchange=Do_ToDo_Change('select','select2','1')>
            <?php
    $sql="Select * from fff order by master_order asc";
    $result=mysql_query($sql);
    while($rs =mysql_fetch_array($result)){
     echo("<option value=".$rs['id'].">".$rs['master_name']."</option>");
  }
   ?>
    </select>//这里是一级

<select name="select2"  value="" id="select2">
      <option value="0">--选择子类--</option>
    </select> //这里是子菜单 ,

我们来看看效果图吧:

 

注:原创文章,转载请注明:www.111cn.net

今天我们来讲一下用php制作简单的留言板,首先来分析一下留言板,

第一步:设计数据库.

第二步:设置html页面,就是留言页面,

第三步:php处理页面,保存到数据库.

第四步:留言显示页面.

好了我们先来看看第一步:

CREATE TABLE IF NOT EXISTS `gx_guestbook` (
  `id` int(4) NOT NULL auto_increment,
  `gx_title` varchar(200) default NULL,
  `gx_content` mediumtext,
  `gx_time` datetime default NULL,
  `gx_tel` varchar(20) default NULL,
  `gx_mail` varchar(50) default NULL,
  `gx_object` varchar(100) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=gb2312 AUTO_INCREMENT=10 ;

上面是创建数据库这里就没什么好说了.

再来看第二步设置html留言页面

<div id="guest">
<h4 class="top_line">客户留言</h4>
<ul>
<form action="guest_sava.php"  enctype="multipart/form-data" method="post">
<li><span><input name="myname" type="text" id="myname" size="22" />
</span>你的昵称:</li>
<li><span><input name="mymail" type="text" id="mymail" size="22" />
</span>你的电邮:</li>
<li><span><input name="mytel" type="text" id="mytel" size="22" />
</span>联系电话:</li>
<li><span>
  <textarea name="mycontent" cols="22" rows="7" class="case_matter" id="mycontent"></textarea>
</span>你的留言:</li>
<div style="clear:both; text-align:right; height:30px; padding-top:8px;"><input name="提交" type="submit" value="提交" />&nbsp; &nbsp;&nbsp; &nbsp; <input name="" type="reset" value="重置" />
</div>
</form>
</ul>
</div>

上面就是留言的页面了,效果图

<?php
/*
 * 长文章分页类
 * @package cutpage
 * @author  yytcpt(无影)
 * @version 2008-03-27
 * @copyrigth http://www.d5s.cn/
 */
 class cutpage{
  var $pagestr;  //被切分的内容
  var $pagearr;  //被切分文字的数组格式
  var $sum_word;  //总字数(UTF-8格式的中文字符也包括)
  var $sum_page;  //总页数
  var $page_word;  //一页多少字
  var $cut_tag;  //自动分页符
  var $cut_custom; //手动分页符
  var $ipage;   //当前切分的页数,第几页
  var $url;
  function __construct(){
   $this->page_word = 1000;
   $this->cut_tag = array("</table>", "</div>", "</p>", "<br/>", "”。", "。", ".", "!", "……", "?", ",");
   $this->cut_custom = "{nextpage}";
   $tmp_page = intval(trim($_GET["ipage"]));
   $this->ipage = $tmp_page>1?$tmp_page:1;
  }
  //统计总字数
  function get_page_word(){
   $this->sum_word = $this->strlen_utf8($this->pagestr);
   return $this->sum_word;
  }
  /* 统计UTF-8编码的字符长度
   * 一个中文,一个英文都为一个字
   */
  function strlen_utf8($str){
     $i = 0;
     $count = 0;
     $len = strlen ($str);
     while ($i < $len){
      $chr = ord ($str[$i]);
      $count++;
      $i++;
      if ($i >= $len)
       break;
      if ($chr & 0x80){
       $chr <<= 1;
       while ($chr & 0x80) {
        $i++;
        $chr <<= 1;
       }
      }
     }
     return $count;
  }
  //设置自动分页符号
  function set_cut_tag($tag_arr=array()){
   $this->cut_tag = $tag_arr;
  }
  //设置手动分页符
  function set_cut_custom($cut_str){
   $this->cut_custom = $cut_str;
  }
  function show_cpage($ipage=0){
   $this->cut_str();
   $ipage = $ipage ? $ipage:$this->ipage;
   return $this->pagearr[$ipage];
  }
  function cut_str(){
   $str_len_word = strlen($this->pagestr);  //获取使用strlen得到的字符总数
   $i = 0;
   if ($str_len_word<=$this->page_word){ //如果总字数小于一页显示字数
    $page_arr[$i] = $this->pagestr;
   }else{
    if (strpos($this->pagestr, $this->cut_custom)){
     $page_arr = explode($this->cut_custom, $this->pagestr);
    }else{
     $str_first = substr($this->pagestr, 0, $this->page_word); //0-page_word个文字 cutStr为func.global中的函数
     foreach ($this->cut_tag as $v){
      $cut_start = strrpos($str_first, $v);  //逆向查找第一个分页符的位置
      if ($cut_start){
       $page_arr[$i++] = substr($this->pagestr, 0, $cut_start).$v;
       $cut_start = $cut_start + strlen($v);
       break;
      }
     }
     if (($cut_start+$this->page_word)>=$str_len_word){ //如果超过总字数
      $page_arr[$i++] = substr($this->pagestr, $cut_start, $this->page_word);
     }else{
      while (($cut_start+$this->page_word)<$str_len_word){
       foreach ($this->cut_tag as $v){
        $str_tmp = substr($this->pagestr, $cut_start, $this->page_word);  //取第cut_start个字后的page_word个字符
        $cut_tmp = strrpos($str_tmp, $v);  //找出从第cut_start个字之后,page_word个字之间,逆向查找第一个分页符的位置
        if ($cut_tmp){
         $page_arr[$i++] = substr($str_tmp, 0, $cut_tmp).$v;
         $cut_start = $cut_start + $cut_tmp + strlen($v);
         break;
        }
       } 
      }
      if (($cut_start+$this->page_word)>$str_len_word){
       $page_arr[$i++] = substr($this->pagestr, $cut_start, $this->page_word);
      }
     }
    }
   }
   $this->sum_page = count($page_arr);  //总页数
   $this->pagearr = $page_arr;
  }
  //显示上一条,下一条
  function show_prv_next(){
   $this->set_url();
   if ($this->sum_page>1 and $this->ipage<$this->sum_page){
    $str = "<a href='".$this->url.($this->ipage+1)."'>下一页</a> ";
   }
   if ($this->sum_page>1 and $this->ipage>1){
    $str.= "<a href='".$this->url.($this->ipage-1)."'>上一页</a>";
   }
   return $str;
  }
  function show_page_select(){
   if ($this->sum_page>1){
    $str = " &nbsp; <select onchange=\"location.href=this.options[this.selectedIndex].value\">";
    for ($i=1; $i<=$this->sum_page; $i++){
     $str.= "<option value='".$this->url.$i."' ".(($this->ipage)==$i ? " selected='selected'":"").">第".$i."页</option>";
    }
    $str.= "</select>";
   }
   return $str;
  }
  function show_page_select_wap(){
   if ($this->sum_page>1){
    $str = "<select ivalue='".($this->ipage-1)."'>";
    for ($i=1; $i<=$this->sum_page; $i++){
     $str.= "<option onpick='".$this->url.$i."'>第".$i."节</option>";
    }
    $str.= "</select>";
   }
   return $str;
  }
  function set_url(){
   parse_str($_SERVER["QUERY_STRING"], $arr_url);
   unset($arr_url["ipage"]);
   if (empty($arr_url)){
    $str = "ipage=";
   }else{
    $str = http_build_query($arr_url)."&ipage=";
   }
   $this->url = "http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"]."?".$str;
  }
 }
?>

 

如果您加了新功能,或者是有改进,请与大家一起分享。

长文章分页类,可以手工指定分页符,也可以让程序自动分页。

实例代码:请以UTF-8的文件编码进行测试。

代码:
<?php
    include('cutpage.php');
    header("content-type:text/html;charset=utf-8");//设置页面编码
    //自定义的长文章字符串,可以包含 html 代码,若字符串中有手动分页符 {nextpage} 则优先按手动分页符进行分页
    $content = file_get_contents('text.txt');
    $ipage = $_GET["ipage"]? intval($_GET["ipage"]):1;
    $CP = new cutpage();
    $CP->pagestr = $content;
    $CP->cut_str();
    echo $CP->pagearr[$ipage-1]."<hr/>";
    echo $CP->show_prv_next();
?>

网上经常有关于Socket的问题~教程~可是都非常官方,其实代码我们都知道(F1帮助文档里就有),只是由于没有可测试用的Socket服务器..一直不能做测试跟进一步的研究。闪吧新社区+MT:G,{,P+?B7z
  今天打开已经很久没用的《易语言》,了一个简单的socket服务器..其实我不知道算不算是socket服务器,只是监听端口,接收来自客户端的数据,发送数据到客户端等等。不过在flash的socket例程下连接并发送接收成功,所以应该也算是吧..(ps:易语言,一个中文的编程软件,别笑我,hehe,我不是理科出身的,没什么文化,不过我觉得这个软件对于像我这种只是需要辅助学习flash的前提前下,已经足够了,在这里也当作给易语言做个广告,怎么说也是国人开发的东西)

这个小东东很简单,启动的时候自动监听8080端口,当flash连接上的时候就会显示客户端的ip,当flash发送数据到服务器的时候,就会把接收到的数据广播给所有的客户端(可以做简单的聊天室)

这边随便上传一个Flash的实例..只由Flash的例程修改来的..运行以后会直接连接本机的8080端口,连接成功后给服务器发送一条文本..然后服务器会返回该文本..在"输出"窗口可以看到。

很多seoer都说把文件做成静态这样对搜索引擎是最好的了,但是像我们这些买别人的虚拟空间,是有限的但是又想以静态形式,如果生成真正的静态如果你的网站有1000000篇文件生成静态就要占很大的空间,这样的话增加了我们的费用,所以就出现了伪静态这个名词,伪静态有很多种做法,下面我们来一一讲解一下吧.

第一种就是以aa.php/aaaa_1_.htm这种形式,这种做法的好处就是在我们没有足够的权限时做的,下面看看代码.

$html_id=isset($_SERVER['PATH_INFO'])?$_SERVER['PATH_INFO']:'';//取得地参数
$url =@explode('_',$html_id);//进行处理
$id  =@$url[1];//得到我们所要的数据

例:http://www.111cn.net/show.php/id_3_cn.html

使用上面的方法后$url[1]的值就为3,不过说一个得到值后最好判断处理一下啦,

 

第二种方法:Apache 伪静态

一 打开 Apache 的配置文件 httpd.conf 。
二 将#LoadModule rewrite_module modules/mod_rewrite前面的#去掉
三 在 httpd.conf中添加:
<IfModule mod_rewrite.c>
    RewriteEngine On
    #RewriteCond %{ENV:SCRIPT_URL} (?:index|dispbbs)[-0-9]+\.html
    RewriteRule ^(.*?(?:index|dispbbs))-([-0-9]+)\.html$ $1.php?__is_apache_rewrite=1&__rewrite_arg=$2
</IfModule>

四 要实现asp帖子URL到php帖子的映射,在 第三步的<IfModule mod_rewrite.c>和</IfModule>之间添加:
    RewriteMap tolowercase int:tolower
    RewriteCond %{QUERY_STRING} (?:boardid|page|id|replyid|star|skin)\=\d+ [NC]
    RewriteRule ^(.*(?:index|dispbbs))\.asp$ $1.php?${tolowercase:%{QUERY_STRING}}&__is_apache_rewrite=1

五 保存httpd.conf并重启Apache。

关键字:asp 伪静态   什么是伪静态   iis 伪静态   asp.net 伪静态   php 伪静态 discuz 伪静态   apache 伪静态   phpwind 伪静态   伪静态规则   虚拟主机 伪静态

[!--infotagslink--]

相关文章

  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • jQuery实现非常实用漂亮的select下拉菜单选择效果

    本文实例讲述了jQuery实现非常实用漂亮的select下拉菜单选择效果。分享给大家供大家参考,具体如下:先来看如下运行效果截图:在线演示地址如下:http://demo.jb51.net/js/2015/js-select-chose-style-menu-codes/具体代码如...2015-11-08
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS实现的简洁纵向滑动菜单(滑动门)效果

    本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
  • jQuery实现有动画淡出效果的二级折叠菜单代码

    本文实例讲述了jQuery实现有动画淡出效果的二级折叠菜单代码。分享给大家供大家参考,具体如下:这里介绍jQuery实现有动画淡出效果的二级折叠菜单代码,相当不错,因考虑功能的实现,所以没有怎么美化,不过这样也好,可以给大家更...2015-10-21
  • jQuery实现下拉菜单滑动效果

    这篇文章主要为大家详细介绍了jQuery实现下拉菜单滑动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-09
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • JavaScript时间操作之年月日星期级联操作

    这篇文章主要介绍了JavaScript时间操作之级联日期选择操作,涉及到年、月、日、星期,感兴趣的小伙伴们可以参考一下...2016-01-18
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • jQuery实现可关闭固定于底(顶)部的工具条菜单效果

    本文实例讲述了jQuery实现可关闭固定于底(顶)部的工具条菜单效果。分享给大家供大家参考,具体如下:这是一款可关闭始终在页面底部的工具条菜单,浮动在页面顶部的大家见的比较多了,本款从形式上来说与其它的没什么差别,只是浮...2015-11-08
  • jQuery+PHP+MySQL二级联动下拉菜单实例讲解

    二级联动下拉菜单选择应用在在很多地方,比如说省市下拉联动,商品大小类下拉选择联动。本文将通过实例讲解使用jQuery+PHP+MySQL来实现大小分类二级下拉联动效果。 实现效果:当选择大类时,小类下拉框里的选项内容也随着改...2015-10-30
  • js如何构造elementUI树状菜单的数据结构详解

    由于业务需要,要求实现树形菜单,且菜单数据由后台返回,下面这篇文章主要给大家介绍了关于js如何构造elementUI树状菜单的数据结构的相关资料,需要的朋友可以参考下...2021-05-13
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • Vue.js 递归组件实现树形菜单(实例分享)

    本文主要对介绍利用Vue.js 的递归组件,实现了一个最基本的树形菜单。具有很好的参考价值,下面就跟着小编一起来看下吧...2017-01-09
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • jQuery实现精美的多级下拉菜单特效

    这是一款精美的多级下拉菜单美化,可以完美替代“select”来实现下拉菜单的效果。而且支持多级菜单,有加载等待效果,有层级分类展示。复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "ht...2015-03-15
  • jquery插件实现悬浮的菜单

    这篇文章主要为大家详细介绍了jquery插件实现悬浮的菜单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-04-23
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • JS实现不使用图片仿Windows右键菜单效果代码

    本文实例讲述了JS实现不使用图片仿Windows右键菜单效果代码。分享给大家供大家参考,具体如下:这里演示JS不使用图片仿Windows右键菜单效果,这款代码灵活使用了文鼎字,配合CSS和JS做出了这个和系统右键菜单很相似的东东。...2015-10-23