给数据库构建一个展示界面

给mySQL构建一个展示界面

在这里插入图片描述

这是“构建个人小型医学数据库”系列文章的最后一部分。通过之前的工作我们确定了所要收集的各类变量并将其录入到mySQL数据库中。

为了展示MySQL中存储的数据,通过摸索我们最终使用appML、PHP和JavaScript开发一个展示页面。这些技术可以协同工作,以创建一个有用的用户界面,显示相关的数据。

  • appML是一种基于XML和JavaScript的语言,可用于构建Web应用程序和移动应用程序。它提供了一种简单的方法,将数据从服务器传递到客户端,并使用JavaScript将其呈现在Web页面上。
  • PHP是一种服务端脚本语言,可与MySQL等数据库协同工作,用于处理服务器端上的数据。PHP提供了一个强大的API,可用于连接和查询MySQL数据库。
  • JavaScript是一种客户端脚本语言,可用于创建交互式Web应用程序。它可以与appML和PHP协同工作,以创建一个响应式的用户界面。

构建展示页面的必要性在于,让用户可以方便地浏览MySQL数据库中的数据。展示页面可以帮助用户更好地理解数据,了解数据的关联和趋势。同时,展示页面还可以方便用户进行数据分析和决策,提高工作效率和数据利用率。

具体构建板块

一共有三个板块:

1. 文字展示部分

展示数据库建立的目的和过程,最简洁的办法就是使用文字说明,这里使用的是jQuery.js 中的load()将外部的文字导入到html页面,方便后续的维护。还可以搭配一些图片。

2. 图表展示部分(Dashbord)

除了文字展示,我们还可以使用JavaScript库(如Chart.js)来创建图表,以更好地可视化数据。这些图表可以包括柱状图、折线图、饼图等。这里我们使用的是php从mySQL数据库获取数据,并结合plotly.js库来形成图表。这里值得一提的php文件的实现方式,可以同时实现多个query,并一起返回数据,为绘制多个图表提供了数据,供大家参考。

<?php
$count_year = array();
$count_type = array();
$year=array();
$type=array();
$db = new PDO('mysql:host=localhost;dbname=the_info', 'liuyp2080', '819800');

$query = 'SELECT year,SUM(count) AS count_year FROM main group by year';

$query2='SELECT type,SUM(count) AS count_type FROM main group by type';
$result = $db->query($query);
$result2 = $db->query($query2);

while($row = $result->fetch()) {
  $year[] =$row['year'];
  $count_year[]=$row['count_year'];
  };

while ($row = $result2->fetch()) {
    $type[] = $row['type'];
    $count_type[] = $row['count_type'];
  }
$finaldata=array('year'=>$year,
  				'count_year'=>$count_year,
                'count_type'=>$count_type,
  				'type'=>$type);
// Encode data to JSON format
$jsonData = json_encode($finaldata, JSON_UNESCAPED_SLASHES);
echo $jsonData;
?>



3. 表格浏览部分

最后,我们可以使用appML和javascript创建一个表格,并搭配翻页和过滤功能,以便用户浏览MySQL数据库中的内容。这个表格可以包含多个列和行,每个单元格可以显示文本、数字或日期。这一部分是复制w3schools网站的已有的代码,各方面的介绍比较完善,是更好的参考资料。

通过以上步骤,我们可以构建一个功能齐全的展示页面,以帮助用户更好地管理和利用MySQL数据库中的数据。至此,一个相对完整的数据库构建流程已经形成,包括使用设计数据库内容、安装WAMP作为数据库、设置数据库局域网访问,使用内网穿透使数据库可段时间外网访问,以及构建展示界面。

附:展示界面的代码

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <title>医院样本库</title>
    <script src="js/plotly-2.24.1.min.js" charset="utf-8"></script>
    <script src="js/jquery-3.7.0.js"></script>
    <style>
        body {
          background-color: #f0f0f0;
        }
        .w3-container {
            border: 1px solid #dbd6d6;
            padding: 10px;
            margin: 10px 0;
          }
        h1 {
            text-align: center;
        }
      </style>
</head>
<html lang="zh">
<title>样本库展示页面</title>
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<script src="https://www.w3schools.com/appml/2.0.3/appml.js"></script>
<body>
<h1>样本库展示</h1>
<div class='w3-container'><h2>一、文字介绍</h2></div>

<div id='introduction' class="w3-container">
      <p id="p1">样本库介绍</p>
</div>
<div class="w3-container"><h2>二、图片指标</h2></div>
<div class="w3-container" style="display:flex;">
    <div id="count_bar" style="height:300px;width:50%"></div>
    <div id="count2_bar" style="height:300px;width:50%"></div>
</div>
<div class="w3-container"><h2>三、列表浏览</h2></div>

<div class="w3-container" appml-data="appml.php?model=model_db">

<div appml-include-html="inc_listcommands.htm"></div>
<div appml-include-html="inc_filtercommands.htm"></div>
<table class="w3-table-all">
  <tr>
    <th>年份</th>
    <th>类型</th>
    <th>数量</th>
  </tr>
  <tr appml-repeat="records">
    <td>{{year}}</td>
    <td>{{type}}</td>
    <td>{{count}}</td>
  </tr>
</table>
</div>
<script type="text/javascript">
  var url="get_data_from_mysql.php";
  //jquery函数获取php中的数据
  function arrTest(url){
    let year=[],count_year=[],count_type=[],type=[];
    // Use jQuery's AJAX method to send a POST request to the specified URL.
    $.ajax({
      type:"post",
      async:false,
      url:url,
      data:{},
      dataType:"json",
      success:function(result){
        if (result) {
            year.push(result.year);
            count_year.push(result.count_year);
            count_type.push(result.count_type);
            type.push(result.type);
          }
        }
    });
    return [year,count_year,count_type,type];
  };

  //执行函数获取mySql中的数据
  var data=arrTest(url);
  var year=data[0][0];
  var count_year=data[1][0];
  var count_type=data[2][0];
  var type=data[3][0];
  //使用获取的数据进行绘图,指定data和layout
  var  count_bar = document.getElementById('count_bar');
  var plot_data= [
    {
      x:year,
      y:count_year,
      type: 'bar',
    }
  ];
  var layout = {
    title: '样品数量',
    xaxis:{title:'年份'},
    yaxis:{title:'数量'},
  };
  Plotly.newPlot(count_bar, plot_data,layout);
</script>
<script>
    var  count2_bar = document.getElementById('count2_bar');
    var plot_data2= [
      {
        x:type,
        y:count_type,
        type: 'bar',
      }
    ];
    var layout2 = {
      title: '样品类型',
      xaxis:{title:'类型'},
      yaxis:{title:'数量'},
    };
    Plotly.newPlot(count2_bar, plot_data2,layout2);
</script>
<script>$('#p1').load("introduction.txt");</script>
</body>
</html>

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

预测模型的开发与应用研究

文中代码请大家随意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值