web展现mysql_web页面实现LED跑马灯效果(涉及web前端、原生JS、PHP、mysql)
本帖最后由 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)相关推荐
- iOS LED跑马灯效果实现
iOS中实现LED跑马灯效果 实现原理是使用scrollView, 将需要滚动的label添加两次到 scrollView的subView下面, 然后通过滚动scrollView来实现跑马灯效果. 具 ...
- CSS+JavaScript制作文字的LED跑马灯效果
以下是html代码: <head><meta charset="utf-8" /><title>文字跑马灯</title><l ...
- JS 跑马灯效果实现(很好用)
原文地址为: JS 跑马灯效果实现(很好用) 实现跑马灯效果的JS很多,但是很多不好用,下面介绍一个比较好用的. 好用之处在于: 1 支持一个页面多个跑马灯效果 2.支持跑马灯内容的异步加载 关键的实 ...
- js html css 图片跑马灯效果(轮播)
js html css 图片跑马灯效果(轮播) js html css 实现图片跑马灯效果(轮播),效果图如下: 代码: html: <div id="marquee-box" ...
- html网页内容自动滚动实现跑马灯效果
1.效果1 超出div高度,文本自动滚动(像跑马灯一样从下往上滚动) 一个div里面有文字 1.如果文字没超出div高度:文字不用滚动 2.如果文字太多超出了div高度,那些文字就自动滚动 ps:滚动 ...
- HaaS学习笔记 | 基于HaaS Python轻应用的LED跑马灯明细教程
[1]题目要求 [案例]:在HaaS框架下实现LED跑马灯. 蓝蜻蜓ESP32开发板的LED灯电路连接如下: D3灯----GPIO14,高电平点亮,低电平熄灭. ...
- TQ2440+RealViewMDK调试LED跑马灯(成功!)
去年买的TQ2440的开发板,搁了一年,没咋用,今年心血来潮,想学学了,于是又翻开了板子,结果是个伤脑筋的活啊......果然比单片机.AVR的来的难啊,搞了两天,也参考了网上的资料,竟然(居然)才弄 ...
- 手机屏大字滚动_LED跑马灯屏-LED跑马灯屏App下载-
LED跑马灯屏软件是一款模拟LED显示屏应用软件,LED跑马灯软件可轻易实现发光LED跑马灯,使用这款LED跑马灯软件可以随你喜欢自行定义滚动的文字和文字样式. LED跑马灯软件是演唱会电子灯牌.机场 ...
- CC2530基础实验:(1)按键控制LED跑马灯
文章目录 前言 一.实验相关电路图 二.实验相关寄存器 三.源码分析 前言 本实验用于学习CC2530芯片GPIO 的配置方法,Led 驱动电路及开关 Led 的原理,按键的使用,实现简单的人机交互. ...
最新文章
- freertos zynq 移植_Zynq-7000 FreeRTOS(一)系统移植配置
- 如何去除My97 DatePicker控件上右键弹出官网的链接 - 如何debug混淆过的代码
- 记录某项目中的踩坑与解决(持续更新)
- matlab 博客,matlab
- 姚殊清华计算机科学与技术,王道顺(清华大学计算机科学与技术系副教授)_百度百科...
- 一种用css实现图片在父框中等比缩放并垂直居中的办法
- linux ioctl 设备只读,linux – 尝试SSH时设备的ioctl不合适
- Windows Azure VM Role (2) 创建VHDVHD
- Spring-web-HandlerMethodReturnValueHandler
- 「镁客·请讲」南京布塔:用动作捕捉世界的精彩
- KNN算法之图像处理二
- Andorid提高--数据持久化
- SpringAOP的实现原理
- 亲密接触Redis-第一天
- 详解Python曲线拟合
- 堆和栈的区别,有一个64k的字符串,是放到堆上,还是放到栈上,为什么?
- FreeBSD新的JAIL管理工具QJAIL
- 18100出多少取整_电子表格里小数取整用什么公式?
- Glide加载网络图片出现模糊问题
- 汽车租赁系统 ssm
热门文章
- sigmoid函数解决溢出_梯度消失和梯度爆炸及解决方法
- centos7.2 mysql集群_Centos7.2下安装mysql-group-replication数据库集群
- Echarts词云图
- JavaScript实现detectDirectedCycle检测定向循环算法(附完整源码)
- wxWidgets:wxGraphicsRenderer类用法
- boost::log::ipc::reliable_message_queue用法的测试程序
- boost::transform_iterator用法的测试程序
- boost::property_map用法的测试程序
- boost::filesystem模块实现Windows MAX_PATH的测试程序
- Boost:基于Boost的聊天的应用程序