php入门案例,thinkphp3.2.1入门之--简单案例实现

以实现了页面展示包括动态展示大学图片、大学简介、用户评分、用户关注、用户登录

index控制器:/web/App/Home/Controller/IndexController.class.php

/*

* 该部分主要作用是生成大学页面,展示大学信息以及用户评分 关注 留言公共展示,主要: 1.根据url输入参数动态生成大学信息,包括大学图片以及简介等,并将变量输出到对应html模板 2.网站入口页面(首页)index.html关联

*/

namespace Home\Controller;

use Think\Controller;

class IndexController extends Controller {

public function index() {

// $this->show ( 'F:\web\App\Home\Controller\index(控制器)\index方法' );

// 网站首页模板使用,index.html

$this->display ();

}

public function univpage($id) {

//用户登录状态查看 登录为1,未登录为0

session_start ();

$user_id = $_SESSION ["user_id"];

if ($user_id==null) {

$user_state=0;

}

else {

$user_state=1;

}

$this->user_state = $user_state;

// 根据输入id显示学校图片

// 图片路径

$picpath = '/images/' . $id . '.jpg';

// 进行模板变量赋值

$this->picpath = $picpath;

$this->univ_id = $id;

// 实例化模型

$Univ = M ( 'univ_basic_info' );

// 查找相关符合条件字段,使用数组默认为and关系,可添加'_logic'=>'or' 改为或

// 如果getField方法传入多个字段名称的话,默认返回一个关联数组(数组中包含数组),以第一个字段的值为索引

$result = $Univ->where ( array (

'univ_id' => $id

) )->getField ( 'univ_introduce,interest_num,review_num' );

// dump($result);

// 读取数组第一个元素(也就是所有需要元素)

$result = current ( $result );

// dump($result);

$interest_num = $result ["interest_num"];

$univ_introduce = $result ["univ_introduce"];

$review_num = $result ["review_num"];

// echo $univ_introduce;

//用户登录表单控制器方法url

$login_url=U('Userinfo/login_submit');

// 将变量映射到html模板

$this->univ_introduce = $univ_introduce;

$this->interest_num = $interest_num;

$this->review_num = $review_num;

$this->login_url= $login_url;

$this->display ();

}

public function interest() {

// $this->show ( 'F:\web\App\Home\Controller\index(控制器)\index方法' );

$this->display ();

}

public function login() {

// $this->show ( 'F:\web\App\Home\Controller\index(控制器)\index方法' );

$this->display ();

}

}

展示模板:/web/App/Home/View/Index/univpage.html

href="/App/Home/View/Index/review.css">

hello, {$picpath}!

hello, {$univ_introduce}! 关注人数:{$interest_num} 评分人数:{$review_num}

用户状态:{$user_state}

var univ_id = {$univ_id};

/* alert(univ_id); 可以直接在相关的js及ajax调用*/

//用户登录状态参数 js判断此参数弹出登陆界面

var user_state={$user_state};

感觉怎么样?

  • 20
  • value="40">40

  • value="60">60

  • value="80">80

  • value="100">100

id="stars2-input" name="b" value="" size="2">

关注

href="/App/Home/View/Index/login_box.css">

控制五星评分的js+css+php

js:/web/App/Home/View/Index/review.js

var TB = function() {

/*

* 该函数为ajax函数  主要是对实现用户点击评分五星,实现对大学评分

* 1.对浏览器进行判断

* 2.用户点击调用review.php脚本

* 3.传递参数

* */

// alert(univ_id);

var T$ = function(id) {

return document.getElementById(id)

}

var T$$ = function(r, t) {

return (r || document).getElementsByTagName(t)

}

var Stars = function(cid, rid, hid, config) {

var lis = T$$(T$(cid), 'li'), curA;

for ( var i = 0, len = lis.length; i < len; i++) {

lis[i]._val = i;

lis[i].onclick = function() {

// 用户点击五角星时生成相应的分数

score = T$$(this, 'a')[0].getAttribute('value');

T$(rid).innerHTML = '' + (T$(hid).value = score)

+ '分 - ' + config.info[this._val];

curA = T$$(T$(cid), 'a')[T$(hid).value / config.step - 1];

// ajax传递变量至php 保存到mysql

var xmlhttp;

if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome,

// Opera, Safari

xmlhttp = new XMLHttpRequest();

} else {// code for IE6, IE5

xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

}

// 执行数据库操作php脚本

// 注意此处url变量输入只能够使用?不能使用/

var url = "/App/Home/View/Index/review.php?score=" + score

+ "&univ_id=" + univ_id;

//alert(url);// 检验js传值是否成功

xmlhttp.open("GET", url, true);

xmlhttp.send();

};

lis[i].onmouseout = function() {

curA && (curA.className += config.curcss);

}

lis[i].onmouseover = function() {

curA

&& (curA.className = curA.className.replace(

config.curcss, ''));

}

}

};

return {

Stars : Stars

}

}().Stars('stars2', 'stars2-tips', 'stars2-input', {

'info' : [ '极差', '不怎么好', '一般吧', '不错', '非常好' ],

'curcss' : ' current-rating',

'step' : 20

});

css:/web/App/Home/View/Index/review.css

ul,li {

margin: 0;

padding: 0;

border: 0;

}

.shop-rating {

height: 25px;

overflow: hidden;

zoom: 1;

padding: 2px 0;

position: relative;

z-index: 999;

font: 12px Arial;

color: #000;

line-height: 1.2em;

}

.shop-rating span {

height: 23px;

display: block;

line-height: 23px;

float: left;

}

.shop-rating span.title {

width: 125px;

text-align: right;

margin-right: 5px;

}

.shop-rating ul {

float: left;

}

.shop-rating .result {

margin-left: 20px;

padding-top: 2px;

}

.shop-rating .result span {

color: #ff6d02;

}

.rating-level,.rating-level a {

background: url(/images/o_star.png) no-repeat scroll 1000px 1000px;

}

.rating-level {

background-position: 0px 0px;

width: 120px;

height: 23px;

position: relative;

z-index: 1000;

}

.shop-rating .result em {

color: #f60;

font-family: arial;

font-weight: bold;

}

.rating-level li {

display: inline;

}

.rating-level a {

line-height: 23px;

height: 23px;

position: absolute;

top: 0px;

left: 0px;

text-indent: -999em;

*zoom: 1;

outline: none;

}

.rating-level a.one-star {

width: 20%;

z-index: 6;

}

.rating-level a.two-stars {

width: 40%;

z-index: 5;

}

.rating-level a.three-stars {

width: 60%;

z-index: 4;

}

.rating-level a.four-stars {

width: 80%;

z-index: 3;

}

.rating-level a.five-stars {

width: 100%;

z-index: 2;

}

.rating-level .current-rating,.rating-level a:hover {

background-position: 0 -28px

}

.rating-level a.one-star:hover,.rating-level a.two-stars:hover,.rating-level a.one-star.current-rating,.rating-level a.two-stars.current-rating

{

background-position: 0 -116px;

}

.rating-level .three-stars .current-rating,.rating-level .four-stars .current-rating,.rating-level .five-stars .current-rating

{

background-position: 0 -28px;

}

用户关注写入数据库的原生php脚本(js  ajax如何调用thinkphp方法还未明了)

/web/App/Home/View/Index/review.php

/*

* 该部分主要是用户点击五星评分之后,将操作保存如数据库,主要包括:

* 1.获取js ajax传递过来的univ_id 以及分数score参数

* 2.univ_basic_info中增加用户评分数量

* 3.univ_basic_info计算用户评分平均分数

* */

//获取传递过来的变量分数score和大学id

$score = $_GET ["score"];

echo $score;

$id = $_GET ["univ_id"];

//连接数据库

include_once '/web/cnn.php';

mysql_select_db ( "univinfo", $con );

//更新数据库,并计算平均值

$sql = "UPDATE univ_basic_info SET review_num =review_num+1,average_score=('".$score."'

+(review_num-1)*average_score)/review_num WHERE univ_id ='" . $id . "'";

mysql_query ( $sql );

mysql_close ( $con );

控制用户登录对话框弹出的js+css

js

/web/App/Home/View/Index/login_box.js

var popup_dragging = false;

var popup_target;

var popup_mouseX;

var popup_mouseY;

var popup_mouseposX;

var popup_mouseposY;

var popup_oldfunction;

function popup_display(x) {

var win = window.open();

for ( var i in x)

win.document.write(i + ' = ' + x[i] + '
');

}

function popup_mousedown(e) {

var ie = navigator.appName == "Microsoft Internet Explorer";

if (ie && window.event.button != 1)

return;

if (!ie && e.button != 0)

return;

popup_dragging = true;

popup_target = this['target'];

popup_mouseX = ie ? window.event.clientX : e.clientX;

popup_mouseY = ie ? window.event.clientY : e.clientY;

if (ie)

popup_oldfunction = document.onselectstart;

else

popup_oldfunction = document.onmousedown;

if (ie)

document.onselectstart = new Function("return false;");

else

document.onmousedown = new Function("return false;");

}

function popup_mousemove(e) {

if (!popup_dragging)

return;

var ie = navigator.appName == "Microsoft Internet Explorer";

var element = document.getElementById(popup_target);

var mouseX = ie ? window.event.clientX : e.clientX;

var mouseY = ie ? window.event.clientY : e.clientY;

element.style.left = (element.offsetLeft + mouseX - popup_mouseX) + 'px';

element.style.top = (element.offsetTop + mouseY - popup_mouseY) + 'px';

popup_mouseX = ie ? window.event.clientX : e.clientX;

popup_mouseY = ie ? window.event.clientY : e.clientY;

}

function popup_mouseup(e) {

if (!popup_dragging)

return;

popup_dragging = false;

var ie = navigator.appName == "Microsoft Internet Explorer";

var element = document.getElementById(popup_target);

if (ie)

document.onselectstart = popup_oldfunction;

else

document.onmousedown = popup_oldfunction;

}

function popup_exit(e) {

var ie = navigator.appName == "Microsoft Internet Explorer";

var element = document.getElementById(popup_target);

popup_mouseup(e);

element.style.visibility = 'hidden';

element.style.display = 'none';

}

function popup_show() {

//alert('wewe');

//用过用户登录状态参数为0,表示没有登录则弹出登录窗口

if (user_state == 0) {

element = document.getElementById('popup');

drag_element = document.getElementById('popup_drag');

exit_element = document.getElementById('popup_exit');

element.style.position = "absolute";

element.style.visibility = "visible";

element.style.display = "block";

element.style.left = (document.documentElement.scrollLeft

+ popup_mouseposX - 10)

+ 'px';

element.style.top = (document.documentElement.scrollTop

+ popup_mouseposY - 10)

+ 'px';

drag_element['target'] = 'popup';

drag_element.onmousedown = popup_mousedown;

exit_element.onclick = popup_exit;

}

}

function popup_mousepos(e) {

var ie = navigator.appName == "Microsoft Internet Explorer";

popup_mouseposX = ie ? window.event.clientX : e.clientX;

popup_mouseposY = ie ? window.event.clientY : e.clientY;

}

if (navigator.appName == "Microsoft Internet Explorer")

document.attachEvent('onmousedown', popup_mousepos);

else

document.addEventListener('mousedown', popup_mousepos, false);

if (navigator.appName == "Microsoft Internet Explorer")

document.attachEvent('onmousemove', popup_mousemove);

else

document.addEventListener('mousemove', popup_mousemove, false);

if (navigator.appName == "Microsoft Internet Explorer")

document.attachEvent('onmouseup', popup_mouseup);

else

document.addEventListener('mouseup', popup_mouseup, false);

css:

/web/App/Home/View/Index/login_box.css

@CHARSET "UTF-8";

div.sample_popup {

z-index: +1;

}

div.menu_form_header {

cursor: move

}

div.sample_popup div.menu_form_header {

border: 1px solid black;

border-bottom: 0px;

cursor: default;

width: 200px;

height: 20px;

line-height: 19px;

vertical-align: middle;

background: url('jscss/demoimg/200904/20title.png')

no-repeat;

text-decoration: none;

font-family: "Times New Roman", Serif;

font-weight: 900;

font-size: 13px;

color: #206040;

}

div.sample_popup div.menu_form_body {

border: 1px solid black;

width: 200px;

background: url('jscss/demoimg/200904/logbg.png')

no-repeat left bottom;

}

div.sample_popup img.menu_form_exit {

float: right;

margin: 4px 5px 0px 0px;

cursor: pointer;

}

div.sample_popup table {

border-collapse: collapse;

width: 100%;

}

div.sample_popup th {

width: 1%;

padding: 0px 5px 1px 0px;

text-align: left;

font-family: "Times New Roman", Serif;

font-weight: 900;

font-size: 13px;

color: #004060;

}

div.sample_popup td {

width: 99%;

padding: 0px 0px 1px 0px;

}

div.sample_popup form {

margin: 0px;

padding: 8px 10px 10px 10px;

}

div.sample_popup input.field {

border: 1px solid #808080;

width: 95%;

font-family: Arial, Sans-Serif;

font-size: 12px;

}

div.sample_popup input.btn {

margin-top: 2px;

border: 1px solid #808080;

background-color: #DDFFDD;

font-family: Verdana, Sans-Serif;

font-size: 11px;

}

a {

color: #FF0000;

text-decoration: none;

}

用户点击关注js+php

js /web/App/Home/View/Index/interest.js

function loadXMLDoc()

/*

* 该函数为ajax函数  主要是对实现用户点击关注按钮,实现对大学关注

* 1.对浏览器进行判断

* 2.用户点击调用interest.php脚本

* 3.传递参数

* 4.判断用户是否登录,如果没有登录则弹出登录界面

* */

{

if (user_state==0)

{

// alert("请先登录");

//调用login_box.js当中的方法 统一页面直接调用

popup_show();

}

var xmlhttp;

if (window.XMLHttpRequest)

{// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}

else

{// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.onreadystatechange=function()

{

if (xmlhttp.readyState==4 && xmlhttp.status==200)

{

document.getElementById("interest_state").innerHTML=xmlhttp.responseText;

}

}

//xmlhttp.open("GET","/App/Home/View/Index/js.txt",true);

//var url = "/App/Home/View/Index/interest.php?univ_id=" + univ_id;

var url = "/App/Home/View/Index/interest.php?univ_id=" + univ_id;

xmlhttp.open("GET",url,true);

xmlhttp.send();

}

用户关注操作写入数据库php

/web/App/Home/View/Index/interest.php

/*

* 该部分主要是用户点击页面关注按钮之后,将操作保存如数据库,主要包括: 1.获取js ajax interest.js文件传递过来的大学id参数 2.从session当中判断用户是否登录 3.从seesion当中获取登录用户的id 4.向univ_user_interest添加关注对应数据 5.修改univ_basic_info中大学用户关注数目

*/

// session获取参数

session_start ();

$user_id = $_SESSION ["user_id"];

$univ_id = $_GET ["univ_id"];

// 连接数据库

include_once '/web/cnn.php';

$sql = "SELECT count(*) as count FROM univ_user_interest WHERE univ_id ='" . $univ_id . "'and user_id='" . $user_id . "'";

$result = mysql_query ( $sql );

$row = mysql_fetch_array ( $result );

$ifexist = $row ['count'];

// echo $ifexist;

// 判断用户是否已经关注,如果没有则进行关注

if ($ifexist != 0) {

echo "您已经关注";

} else {

// 添加判断语句 判断where(user_id=$user_id, univ_id=$univ_id)是否已

// 经存在 不存在将用户关注信息添加到数据库

$sql = "INSERT INTO univ_user_interest (user_id, univ_id)

VALUES ('" . $user_id . "', '" . $univ_id . "')";

echo "关注成功";

mysql_query ( $sql );

// 数据表univ_basic_info 当中的关注数量interest_num增加1

$sql = "UPDATE univ_basic_info SET interest_num =interest_num+1 WHERE univ_id ='" . $univ_id . "'";

mysql_query ( $sql );

}

// 断开数据库连接

mysql_close ( $con );

你可能感兴趣的:(php入门案例)