ajax+php实例动态二级联菜单效果

 更新时间:2016年11月25日 16:03  点击:2228
很多朋友都是用js来实现级联菜单了,那样有一个不好就是更新可能要修改源码,现在提供的这款ajax+php是一个实时的,不好之处在于耗费服务器资源了。

main.php
<script language="javascript" src="initajax.js"></script><!--InitAjax()-->
<script>
<!--

function getoption(select1,target)
{
    if(select1.value!=0){
        //select1是提交数据的来源的select菜单名
        var url = "getoption.php?pid="+select1.value;//取得xml的url
        //alert(url);
        var ajax = InitAjax();
        var i = 0;
        ajax.open("GET", url, true);
        ajax.onreadystatechange = function() {
            //如果执行是状态正常,那么就把返回的内容赋值给指定的地方
            if (ajax.readyState == 4 && ajax.status == 200) {
                var obj = ajax.responseXML;
                var properties = obj.getElementsByTagName("property");
                var name,value;
                target.options.length = 1;
                for (var i=0,x=1;i<properties.length;i++,x++) {
                    name = properties[i].getElementsByTagName("name")[0].firstChild.nodeValue;
                    value = properties[i].getElementsByTagName("value")[0].firstChild.nodeValue;
                    target.options[x] = new Option();
                    target.options[x].text = name;
                    target.options[x].value = value;
                }
            }
        }
        ajax.send(null);
    }
}


<form method="post" name="form" action="index.php">
<select name="level1" onchange="getoption(document.form.level1,document.form.level2);"/>
<option selected="ture" value="0">===选择===</option>
<?
if ($nrows>0){
    for ($i=0;$i<$nrows;$i++){
        echo "<option value="{$results[ID][$i]}">{$results[NAME][$i]}</option>";
    }
}
?>
</select>
<select name="level2" onchange="getoption(document.form.level2,document.form.level3);">
<option selected="ture" value="0">===选择===</option>
</select>

iniajax.js:
function InitAjax()
{
    var ajax=false;
    try {
        ajax = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            ajax = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            ajax = false;
        }
    }
    if (!ajax && typeof XMLHttpRequest!='undefined') {
        ajax = new XMLHttpRequest();
    }
    return ajax;
}

getoption.php:
<?php
if($pid=$_GET["pid"])
{
    header("Content-type: text/xml;charset=GB2312");
    echo "<?xml version="1.0" encoding="GB2312"?>";
    include("./oracle.inc");
    $sql="select * from AJAXTEST where PARENTID = $pid";
    //echo $sql;
    $stmt=ociparse($handle,$sql);
    ociexecute($stmt);
    ocicommit($handle);
    ocilogoff();
    $nrows=ocifetchstatement($stmt,$results);
    echo "<properties>";
    //echo "<row>{$nrows}</row>";
    for ($i=0;$i<$nrows;$i++){
    echo "<property>";
    echo "<value>{$results[ID][$i]}</value>";
    echo "<name>{$results[NAME][$i]}</name>";
    echo "</property>";
    }
    echo "</properties>";
}
?>

在二年前我就接触过了wap网站的制作了,今天 3g出来了现在我们来看看关于用php写wap站点时要注意的一些小细节吧。

(1) 使用“<?”和“?>”来包含PHP编写的WML程序行,格式为:

<?

……(程序行);

?>

(2) 其他WML标签和语句行一律使用PHP的echo关键字来声明,每个WML行的后面加上换行符“n”(根据需要,也可加多个)。其基本格式为:

echo("……(WML标签和语句行)n");

例如,下面的语句就是PHP编写WML语句行的典型例子:

echo("<?xml version="1.0"?>n");

而且,echo语句中的“WML标签和语句行”可以连写,以节省程序代码行。例如,下面的一行语句就连写了WML的3行标签语句:

echo ("<wml> <card> <p>");

3) 文件最后保存时采用的扩展名为“.php”或“.php3”,而不是“.wml”等扩展名。

4) 程序行语句均以分号( ; )结尾,这是与ASP编写WML程序不同的地方。

5) 声明脚本语言。这是对PHP编程的继承,向编译器声明当前程序采用的脚本语言为PHP,格式为:

<script language="PHP">

不过这一句可以省略,因为编译器能够自动识别PHP的脚本程序。

6) 使用PHP的header关键字来声明WML的文件类型,基本格式为:

header("Content-type: text/vnd.wap.wml");

上述格式是专为WAP浏览器识别而采取的书写格式。如果开发中用户想使用普通的浏览器,如IE浏览器来测试程序效果,则可在该语句的前面加上双斜线(//),格式为:

// header("Content-type: text/vnd.wap.wml");

这样,基于PC的浏览器将忽略程序中无法理解的WML标签,这时当前的程序实际上成为了HTML页面。当想在WAP设备或者模拟器上测试的时候,只需要去掉“//”,当前页面就会自动变成WML页面。

php 图片上传源码下载[gif,jpg]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
<!--
body,td,th {
 font-size: 12px;
 color: #FFFFFF;
}
body {
 background-color: #999;
 margin-left: 0px;
 margin-top: 0px;
}
a:link {
 color: #FFFFFF;
}
a:visited {
 color: #FFFFFF;
}
a:active {
 color: #FFFFFF;
}
-->
</style></head>

<body>
<?php
    $dest_folder   =  "/picture/";
 if(!file_exists($dest_folder)){
        mkdir($dest_folder);
 }
 foreach ($_FILES["pictures"]["error"] as $key => $error) {
     if ($error == UPLOAD_ERR_OK) {
  $houzhui=substr($_FILES["pictures"]["name"][$key],-4);
  if ($_FILES["pictures"]["size"][$key]<=1024*100) //100K
  {
  if ($houzhui==".jpg" or $houzhui==".gif")
  {
         $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
         $name    = date("ymdhs")."_".mt_rand(10000,99999).$houzhui;
         $uploadfile = $dest_folder.$name;
         move_uploaded_file($tmp_name, $uploadfile);
  echo "<script>
  parent.img.value="".$uploadfile."";
  parent.sm1.disabled=false;
  </script>
  <div align=center>贴图上传成功。[<a href=upload.htm onclick="parent.sm1.disabled=true;">重新上传</a>]</div>";   
}
else
echo "<script>alert('对不起,您上传文件格式不对!请上传.gif或.jpg格式的图片文件!');history.go(-1);</script>";    
}
else
echo "<script>alert('对不起,您上传的文件太大了!请上传文件大小小于100k的图片文件!');history.go(-1);</script>"; 
  }
 }
?>
</body>
</html>

本代码的功能是把你要上传的图片保存到服务器,然后再把当前图重按比例生成一个小的缩略图哦。

 if($_FILES['image']['size']){
     if($_FILES['image']['type'] == "image/pjpeg"){
      $im = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
      $n_bmp.='.jpg';
     }elseif($_FILES['image']['type'] == "image/x-png"){
      $im = @imagecreatefrompng($_FILES['image']['tmp_name']);
      $n_bmp.='.png';
     }elseif($_FILES['image']['type'] == "image/gif"){
      $im = @imagecreatefromgif($_FILES['image']['tmp_name']);
      $n_bmp.='.gif';
     }  
    ResizeImage($im,8888,8888,$n_bmp);    
       ImageDestroy ($im);
    $n_tag =1;
      
   }
    
function Uploadfile($str){
   
   $save_path = './product/';//文件保存目录路径
   
   $ext_arr   = array('rar','zip','jpg','gif','png','bmp');//定义允许上传的文件扩展名
   
   $max_size  = 1000000;//最大文件大小
   
   $file_rand ='';
   
   $file_ext  ='';
   
   @mkdir($save_path, 0777); //更改目录权限    
   
   if ($_FILES[$str]['name']) {//有上传文件时
    
    $file_name = $_FILES[$str]['name'];//原文件名
    
    $tmp_name = $_FILES[$str]['tmp_name'];//服务器上临时文件名
    
    $file_size = $_FILES[$str]['size'];//文件大小
    
    if (@is_dir($save_path) === false) {//检查目录
     alert("上传目录不存在。",'');
    }
    
    if (@is_writable($save_path) === false) {//检查目录写权限
     alert("上传目录没有写权限。",'');
    }
    
    if (@is_uploaded_file($tmp_name) === false) {//检查是否已上传
     alert("临时文件可能不是上传文件。",'');
    }
    
    if ($file_size > $max_size) {//检查文件大小
     alert("上传文件大小超过限制。",'');
    }
    
    $temp_arr = explode(".", $file_name);//获得文件扩展名
    $file_ext = array_pop($temp_arr);
    $file_ext = trim($file_ext);
    $file_ext = strtolower($file_ext);
    $file_rand= md5(date("Y-m-d"));
    if (in_array($file_ext, $ext_arr) === false) {//检查扩展名
     alert("上传文件扩展名是不允许的扩展名。",'');
    }
    
    if (move_uploaded_file($tmp_name, $save_path.$file_rand.'.'.$file_ext) === false) {//移动文件
     alert("上传文件失败。",'');
    }    
   } 
  return $save_path.$file_rand.'.'.$file_ext;
 }
 
 
 function ResizeImage($im,$maxwidth,$maxheight,$name){
   $width = imagesx($im);
   $height = imagesy($im);
  if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){
   if($maxwidth && $width > $maxwidth){
   $widthratio = $maxwidth/$width;
   $RESIZEWIDTH=true;
   }
   if($maxheight && $height > $maxheight){
   $heightratio = $maxheight/$height;
   $RESIZEHEIGHT=true;
   }
  if($RESIZEWIDTH && $RESIZEHEIGHT){
  if($widthratio < $heightratio){
   $ratio = $widthratio;
   }else{
   $ratio = $heightratio;
   }
  }elseif($RESIZEWIDTH){
   $ratio = $widthratio;
  }elseif($RESIZEHEIGHT){
   $ratio = $heightratio;
  }
  $newwidth = $width * $ratio;
  $newheight = $height * $ratio;
  if(function_exists("imagecopyresampled")){
  $newim = imagecreatetruecolor($newwidth, $newheight);
  imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  }else{
  $newim = imagecreate($newwidth, $newheight);
  imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  }
  ImageJpeg ($newim,'./product_e/'.$name);
  ImageDestroy ($newim);
  }else{
  ImageJpeg ($im,'./product_e/'.$name);
  }
  }

我想很多站长都知道fck这个编辑器吧,fck是一个在线文档编辑器,上传的图片是不会保存到数据库中的,所以我们要想办法把它正则出来,下面是一个正则fck input图像域的代码。

function get_img($str){ 
  $dpath = 'images/img.jpg';
  preg_match('/<input [^>]*>/im',stripslashes(stripslashes($str)), $arr);
  preg_match('/src=(.+?)"/im', $arr[0], $arra); 
  
  if( strlen(@$arra[1])>10 ){
   $dpath = str_replace(""","",@$arra[1]);
  }
     
  return "<img src='$dpath' width='163' height='113' />";
    
 }

本站原创转载注明: www.111cn.net  

[!--infotagslink--]

相关文章

  • Painter绘制红衣喝酒男水粉画效果教程

    今天小编在这里就来给Painter的这一款软件的使用者们来说一说绘制红衣喝酒男水粉画效果的教程,各位想知道具体绘制步骤的使用者,那么下面就快来跟着小编一起看一看教程...2016-09-14
  • ps动态环绕动画效果怎么制作

    ps动态环绕动画效果是现在很多人都非常喜欢的,大多数人还不知道ps动态环绕动画效果怎么制作下面文章就给大家介绍下ps怎么制作科技感十足的动态环绕动画效果,一起来看看...2017-07-06
  • photoshop用各种素材合成闪电侠效果制作教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说说利用各种素材合成闪电侠效果的制作教程,各位想知道具体制作步骤的使用者们,那么下面就快来跟着小编一起看...2016-09-14
  • vue 实现动态路由的方法

    这篇文章主要介绍了vue 实现动态路由的方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-06
  • 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
  • 美图秀秀把普通照片快速转换成卡通效果教程

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下把普通照片快速转换成卡通效果的教程,各位想知道具体制作步骤的使用者们,那么下面就快阿里跟着小编一起看一...2016-09-14
  • JS实现的简洁纵向滑动菜单(滑动门)效果

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

    今天我们来给大家介绍下在Vue开发中我们经常会碰到的一种需求场景,本文主要介绍了Vue动态查询规则生成组件,需要的朋友们下面随着小编来一起学习学习吧...2021-05-27
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • jQuery动态添加与删除tr行实例代码

    最近由于项目的需要,需要动态的添加和删除table中的tr,感觉用JS可以实现,但是在网上找了一下,单纯的自己写JS,感觉太麻烦,而且也不好维护。于是想到了最近学的jQuery。这篇文章给大家用实例介绍了jQuery动态添加与删除tr行的方法,有需要的朋友们可以参考借鉴。...2016-10-20
  • jQuery实现有动画淡出效果的二级折叠菜单代码

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

    这篇文章主要为大家详细介绍了jQuery实现下拉菜单滑动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-09
  • photoshop调出时尚个性青色人像照片效果调色教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说说调出时尚个性青色人像照片效果的调色教程,各位想知道到底该怎么调色的,那么下面就快来跟着小编一起看一看...2016-09-14
  • C#中动态显示当前系统时间的实例方法

    想在网页中动态地显示当前系统的时间,找了好多,不过都是一些停在那里不动的。。。不过皇天不负有心人,终于让我找到了...2020-06-25
  • c#动态调用Webservice的两种方法实例

    这篇文章介绍了c#动态调用Webservice的两种方法实例,有需要的朋友可以参考一下...2020-06-25
  • SQL Server中执行动态SQL

    本文详细讲解了SQLServer中执行动态SQL的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2022-05-19
  • ps怎么制作图片阴影效果

    ps软件是现在很多人比较喜欢的,有着非常不错的使用效果,这次文章就给大家介绍下ps怎么制作图片阴影效果,还不知道制作方法的赶紧来看看。 ps图片阴影效果怎么做方法/...2017-07-06
  • jQuery实现可关闭固定于底(顶)部的工具条菜单效果

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

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