本帖最后由 yoin 于 2019-11-21 16:24 编辑

产品需求:

LED跑马灯页面展示内容(班级电脑展示)

setLED更改内容(老师电脑更改内容)

LED页面及时更新内容设计思路:

最初想法很简单,想仅用HTML+JS实现。但是还是太年轻了,老师更改内容后如何同步共享到班级电脑就是个问题了。

1.cookie存储班级信息,success!

2.session共享更改内容,failed!

session面向连接的不同电脑不同的链接无法共享

3.共享内容尝试直接写入js文件,failed!

更改的内容只在本地缓存生效,js操作文件,可以读取文件,但是写入操作无法实现(本人水平有限)

4.尝试js操作数据库,failed!

原生js,操作难度很大。JQuery操作相对容易。

5.动用后端语言PHP,success!

加入后端语言的发挥空间就大大提升。比如加入用户验证登录、权限控制等等。

6.js定时器,实现跑马灯效果;定时获取更新内容;

7.ajax异步请求更新内容,在不刷新页面的情况下实现内容更改。

上代码

LED展示页面

[HTML] 纯文本查看 复制代码

滚动提示

.screen{

width: 400px;

height: 80px;

background: #000;

margin: 0 auto;

overflow: hidden;

}

#set{

color:#0f0;

font-size: 20px;

display: block;

}

#scroll{

display: none;

}

#con{

font-size: 70px;

color: #f00;

line-height: 80px;

}

window.onload = function(){

setClass();

getContent();

led();

// var content = getContent();

// led(content);

}

请选择班级:

班级

11

12

13

14

21

22

23

24

31

32

33

34

OK

消息等待中...

LED内容更新页面

[HTML] 纯文本查看 复制代码

设置滚动字幕

设置滚动字幕内容

请选择班级:

班级

11

12

13

14

21

22

23

24

31

32

33

34

请输入内容:

JS代码

[JavaScript] 纯文本查看 复制代码//获取班级

var cFlag = getCookie('class');

var led;

function setClass(){

//如果不存在,写入cookie

if(cFlag==""){

oBtn = document.getElementById('btn');

oFlag = document.getElementById('flag');

oBtn.onclick = function(){

var index = oFlag.selectedIndex;

cFlag = oFlag.options[index].value;

setCookie("class", cFlag, 30);

window.location.reload();

};

}

// 如果存在,显示led div

else{

var oSet = document.getElementById('set');

var oScroll = document.getElementById('scroll');

oSet.style.display = "none";

oScroll.style.display = "block";

}

};

// 获取cookie

function getCookie(c_name) {

if (document.cookie.length > 0) {

c_start = document.cookie.indexOf(c_name + "=");

if (c_start != -1) {

c_start = c_start + c_name.length + 1;

c_end = document.cookie.indexOf(";", c_start);

if (c_end == -1) c_end = document.cookie.length;

return unescape(document.cookie.substring(c_start, c_end));

}

}

return "";

};

//设置cookie的名称、值、有效期

function setCookie(c_name, value, expiredays) {

var exdate = new Date();

exdate.setDate(exdate.getDate() + expiredays);

document.cookie = c_name + "=" + escape(value) +

((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());

};

// led跑马灯运行

function led(){

var oCon = document.getElementById('con');

var i = 0;

led = setInterval(scroll,20);

setInterval(getContent, 5000); // 每隔5秒重新获取一次content

function scroll(){

// getContent(); # 在此处调用该函数会极大的增大CPU负担,因为led定时器调用了scroll,而且是每20毫秒执行一次

if(i<=oCon.offsetWidth){

oCon.style.marginLeft = "-"+i+"px";

i++;

}else{

i = 0;

}

}

};

// ajax 异步从数据库获取led内容

function getContent()

{

// var content;

var xmlhttp;

if (window.XMLHttpRequest)

{

// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码

xmlhttp=new XMLHttpRequest();

}

else

{

// IE6, IE5 浏览器执行代码

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

}

// 异步执行回调函数

xmlhttp.onreadystatechange=function()

{

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

{

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

}

}

xmlhttp.open("GET","get.php?class="+cFlag,true);

xmlhttp.send();

// 同步执行的方法(将open函数的true改为false,注释掉异步回调函数即可)

// if(xmlhttp.status==200){

// content = xmlhttp.responseText;

// }

// return content;

}

数据库连接

[PHP] 纯文本查看 复制代码<?php

try{

//数据库连接

$dbh = new PDO('mysql:host=127.0.0.1;dbname=led','root','xxxxxxxx');

$dbh->exec('set names utf8');

}

catch(PDOException $e){

echo "数据库连接失败:".$e->getMessage();

}

?>

PHP操作数据库

[PHP] 纯文本查看 复制代码<?php

include "dbConn.php";

$class = $_GET['class'];

if($class){

$sql = "select * from leddata where class=$class order by id desc limit 1";

$rst = $dbh->prepare($sql);

$rst->execute();

$data = $rst->fetch();

$content = $data['content'];

echo "$content";

}

$class = $_POST['class'];

if($class){

$content = $_POST['content'];

date_default_timezone_set('PRC');

$date = date('Y-m-d H:i:s');

try{

$sql = "insert into leddata(class,content,addtime) values(:class,:content,:date)";

echo "$sql";

$rst = $dbh->prepare($sql);

$rst->execute(array(':class'=>$class,':content'=>$content,':date'=>$date));

$affectRows = $rst->rowCount();

header("refresh:2;url=setled.php");

echo "插入".$affectRows."条记录,2秒后页面跳转>>>";

}

catch(PDOException $e){

echo "ERROE:".$e->getMessage();

}

}

?>

关于CPU负担,上图

TIM截图20191121084705.jpg (58.51 KB, 下载次数: 0)

2019-11-21 11:04 上传

TIM截图20191121085058.jpg (81 KB, 下载次数: 0)

2019-11-21 11:04 上传

PS:大家有什么更好的思路跟方法,欢迎共同讨论。

很多吾友回复要效果图;

其实效果图就是一个LED跑马灯效果。截图是静态的,所以就没上图,现在加上。

TIM截图20191121162322.jpg (13.71 KB, 下载次数: 0)

2019-11-21 16:24 上传

web展现mysql_web页面实现LED跑马灯效果(涉及web前端、原生JS、PHP、mysql)相关推荐

  1. iOS LED跑马灯效果实现

    iOS中实现LED跑马灯效果 实现原理是使用scrollView, 将需要滚动的label添加两次到 scrollView的subView下面, 然后通过滚动scrollView来实现跑马灯效果. 具 ...

  2. CSS+JavaScript制作文字的LED跑马灯效果

    以下是html代码: <head><meta charset="utf-8" /><title>文字跑马灯</title><l ...

  3. JS 跑马灯效果实现(很好用)

    原文地址为: JS 跑马灯效果实现(很好用) 实现跑马灯效果的JS很多,但是很多不好用,下面介绍一个比较好用的. 好用之处在于: 1 支持一个页面多个跑马灯效果 2.支持跑马灯内容的异步加载 关键的实 ...

  4. js html css 图片跑马灯效果(轮播)

    js html css 图片跑马灯效果(轮播) js html css 实现图片跑马灯效果(轮播),效果图如下: 代码: html: <div id="marquee-box" ...

  5. html网页内容自动滚动实现跑马灯效果

    1.效果1 超出div高度,文本自动滚动(像跑马灯一样从下往上滚动) 一个div里面有文字 1.如果文字没超出div高度:文字不用滚动 2.如果文字太多超出了div高度,那些文字就自动滚动 ps:滚动 ...

  6. HaaS学习笔记 | 基于HaaS Python轻应用的LED跑马灯明细教程

    [1]题目要求     [案例]:在HaaS框架下实现LED跑马灯.       蓝蜻蜓ESP32开发板的LED灯电路连接如下:       D3灯----GPIO14,高电平点亮,低电平熄灭.   ...

  7. TQ2440+RealViewMDK调试LED跑马灯(成功!)

    去年买的TQ2440的开发板,搁了一年,没咋用,今年心血来潮,想学学了,于是又翻开了板子,结果是个伤脑筋的活啊......果然比单片机.AVR的来的难啊,搞了两天,也参考了网上的资料,竟然(居然)才弄 ...

  8. 手机屏大字滚动_LED跑马灯屏-LED跑马灯屏App下载-

    LED跑马灯屏软件是一款模拟LED显示屏应用软件,LED跑马灯软件可轻易实现发光LED跑马灯,使用这款LED跑马灯软件可以随你喜欢自行定义滚动的文字和文字样式. LED跑马灯软件是演唱会电子灯牌.机场 ...

  9. CC2530基础实验:(1)按键控制LED跑马灯

    文章目录 前言 一.实验相关电路图 二.实验相关寄存器 三.源码分析 前言 本实验用于学习CC2530芯片GPIO 的配置方法,Led 驱动电路及开关 Led 的原理,按键的使用,实现简单的人机交互. ...

最新文章

  1. freertos zynq 移植_Zynq-7000 FreeRTOS(一)系统移植配置
  2. 如何去除My97 DatePicker控件上右键弹出官网的链接 - 如何debug混淆过的代码
  3. 记录某项目中的踩坑与解决(持续更新)
  4. matlab 博客,matlab
  5. 姚殊清华计算机科学与技术,王道顺(清华大学计算机科学与技术系副教授)_百度百科...
  6. 一种用css实现图片在父框中等比缩放并垂直居中的办法
  7. linux ioctl 设备只读,linux – 尝试SSH时设备的ioctl不合适
  8. Windows Azure VM Role (2) 创建VHDVHD
  9. Spring-web-HandlerMethodReturnValueHandler
  10. 「镁客·请讲」南京布塔:用动作捕捉世界的精彩
  11. KNN算法之图像处理二
  12. Andorid提高--数据持久化
  13. SpringAOP的实现原理
  14. 亲密接触Redis-第一天
  15. 详解Python曲线拟合
  16. 堆和栈的区别,有一个64k的字符串,是放到堆上,还是放到栈上,为什么?
  17. FreeBSD新的JAIL管理工具QJAIL
  18. 18100出多少取整_电子表格里小数取整用什么公式?
  19. Glide加载网络图片出现模糊问题
  20. 汽车租赁系统 ssm

热门文章

  1. sigmoid函数解决溢出_梯度消失和梯度爆炸及解决方法
  2. centos7.2 mysql集群_Centos7.2下安装mysql-group-replication数据库集群
  3. Echarts词云图
  4. JavaScript实现detectDirectedCycle检测定向循环算法(附完整源码)
  5. wxWidgets:wxGraphicsRenderer类用法
  6. boost::log::ipc::reliable_message_queue用法的测试程序
  7. boost::transform_iterator用法的测试程序
  8. boost::property_map用法的测试程序
  9. boost::filesystem模块实现Windows MAX_PATH的测试程序
  10. Boost:基于Boost的聊天的应用程序