- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家早上好,
在我的 php 文件中,我想从 mysql 数据库获取多个值并以 JSON 进行编码。该查询包括我在 mysql-Select 中计算的值。但是当我调用 php 文件时,计算出的值为“null”。我不知道也不明白为什么。选择是正确的,因为我能够在页面上显示没有 JSON 的结果。也许您在我的代码中发现了错误或者对该习惯有解释。
我的代码如下:
<?php
//--------------------------------------------------------------------------
// Example php script for fetching data from mysql database
//--------------------------------------------------------------------------
$host = "localhost";
$user = "root";
$pass = "";
$databaseName = "Boerse";
$tableName = "prices";
//--------------------------------------------------------------------------
// 1) Connect to mysql database
//--------------------------------------------------------------------------
//include 'DB.php';
$con = mysql_connect($host,$user,$pass);
$dbs = mysql_select_db($databaseName, $con);
//--------------------------------------------------------------------------
// 2) Query database for data
//--------------------------------------------------------------------------
$result = mysql_query("SELECT *
FROM (
SELECT DISTINCT ticker, date_format( date, '%Y-%m-%d %H:%i:%s' ) AS date, concat('$', round( close, 2 )) close, concat('$', round( pxchange, 2 )) pxchange, concat( round( pxpct *100, 2 ) , '%' ) pxpct
FROM (
SELECT
CASE WHEN ticker <> @pxticker
THEN @pxclose := NULL
END , p. * , (
close - @pxclose
) AS pxchange, (
close - @pxclose
) / @pxclose AS pxpct, (
@pxclose := close
), (
@pxticker := ticker
)
FROM prices p
CROSS JOIN (
SELECT @pxclose := NULL , @pxticker := ticker
FROM prices
) AS a
) AS b
ORDER BY date DESC
)inv
LEFT JOIN stocks ON ticker = short
LEFT JOIN stockmarkets ON stockmarkets.id = stocks.stockmarket
WHERE stocks.stockmarket = (
SELECT id
FROM stockmarkets
WHERE marketticker = 'NASDAQ' )
GROUP BY ticker
ORDER BY date DESC"); //query
$array = mysql_fetch_row($result); //fetch result
//--------------------------------------------------------------------------
// 3) echo result as json
//--------------------------------------------------------------------------
echo json_encode($array);
?>
谢谢。
--- 编辑:我得到的 json 字符串 ---我得到以下 JSON 字符串:
["TSLA","2014-03-22 16:06:40","$55.00",null,null,"5","Tesla Motors, Inc.","TSLA","122590000","1","1","1","National Association of Securities Dealers Automated Quotations","NASDAQ","2"]
--- 编辑:更详细的解释我试图得到的---我试图得到的是这样的:http://tradingdesk.finanzen.net/ (网站左侧,表格中自动刷新报价)。
我有一个自己的 MySQL 表,其中包含价格,我想从中获取最新价格并刷新网站表,以便它显示最新价格。
正如我已经提到的:我有一个静态版本并且它可以工作。如果我尝试使用 MySQL、Ajax、HTML 和 PHP 进行刷新,并且不使用 JSON,则刷新后值会消失。如果我在两个或多个市场之间切换,结果就是所选市场之间的闪烁。这就像代码正在处理两个值。
--- 编辑:使用间隔刷新时出现问题的页面代码。
下面的两段代码描述了我之前所做的事情。它显示了我如何获取数据。重要的是当我使用 windows.setInterval 时它如何 react :在第一次刷新发生之前,列表显示(示例):FB - Facebook, Inc - $50, -$x, -x%
但是加载速度很慢。刷新后我才看到FB - Facebook, Inc - 50 美元
如果我在市场之间切换,例如纳斯达克和纽约证券交易所,#stocks-div 正在闪烁。如果没有刷新功能,它工作得很好,但是是静态的。
getuser_exp.php
<?php
if( $_GET["q"] )
{
$q = $_GET['q'];
//$q = 'SP500';
$con = mysqli_connect('localhost','root','','boerse');
if (!$con)
{
die('Could not connect: ' . mysqli_error($con));
}
$sql="SELECT *
FROM (
SELECT DISTINCT ticker, date_format( date, '%Y-%m-%d %H:%i:%s' ) AS date, concat('$', round( close, 2 )) close, concat('$', round( pxchange, 2 )) pxchange, concat( round( pxpct *100, 2 ) , '%' ) pxpct
FROM (
SELECT
CASE WHEN ticker <> @pxticker
THEN @pxclose := NULL
END , p. * , (
close - @pxclose
) AS pxchange, (
close - @pxclose
) / @pxclose AS pxpct, (
@pxclose := close
), (
@pxticker := ticker
)
FROM prices p
CROSS JOIN (
SELECT @pxclose := NULL , @pxticker := ticker
FROM prices
) AS a
) AS b
ORDER BY date DESC
)inv
LEFT JOIN stocks ON ticker = short
LEFT JOIN stockmarkets ON stockmarkets.id = stocks.stockmarket
WHERE stocks.stockmarket = (
SELECT id
FROM stockmarkets
WHERE marketticker = '".$q."' )
GROUP BY ticker
ORDER BY date DESC";
$result = mysqli_query($con,$sql);
if($result === FALSE) {
die(mysql_error()); // TODO: better error handling
}
echo "<table border='0'>
<tr>
<th>ID</th>
<th>Name</th>
<th>Price</th>
<th>Chng</th>
<th>%</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['ticker'] . "</td>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['close'] . "</td>";
echo "<td>" . $row['pxchange'] . "</td>";
echo "<td>" . $row['pxpct'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
}
?>
index.php
<html>
<head>
<script type="text/javascript" charset="utf-8" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>
<script>
$(document).ready(function(){
$(".information").click(function () {
var str = $(this).closest("tr").find("#nr").text();
$(document).ready(function() {
//
window.setInterval(function(){
$.get("getuser_exp.php",
{ q:str },
function(data) { $('.stock').html(data);
} //function data
);
}, 3000);
//
}); //document ready
}); //information click
}); //document ready
//highland charts
var chart; // global
/**
* Request data from the server, add it to the graph and set a timeout to request again
*/
function requestData() {
$.ajax({
url: 'live-server-data.php',
success: function(point) {
var series = chart.series[0],
shift = series.data.length > 20; // shift if the series is longer than 20
console.log(point)
// add the point
chart.series[0].addPoint(eval(point), true, shift);
// call it again after one second
setTimeout(requestData, 1000);
},
cache: false
});
}
$(document).ready(function() {
chart = new Highcharts.Chart({
chart: {
renderTo: 'chart',
defaultSeriesType: 'area',
events: {
load: requestData
}
},
title: {
text: 'Live random data'
},
xAxis: {
type: 'datetime',
tickPixelInterval: 150,
maxZoom: 20 * 1000
},
yAxis: {
minPadding: 0.2,
maxPadding: 0.2,
title: {
text: 'Value',
margin: 80
}
},
series: [{
name: 'Random data',
data: []
}]
});
});
</script>
</head>
<title></title>
<link rel="stylesheet" type="text/css" href="css/style.css">
<body>
<script src="js/highstock.js"></script>
<script src="js/exporting.js"></script>
<?
$con = mysqli_connect('localhost','root','','boerse');
$sql="SELECT marketticker, marketname FROM stockmarkets";
$result = mysqli_query($con,$sql);
?>
<!-- upper navigation -->
<div class="nacon">
<div class="tr">
<div class="td"><a href="index.htm">Introduction</a></div>
<div class="td"><a href="tradingdesk.php?id=1">Stocks</a></div>
<div class="td"><a href="tradingdesk.php?id=2">Bonds</a></div>
<div class="td"><a href="tradingdesk.php?id=3">Forex</a></div>
<div class="td"><a href="wallet.php">Wallet</a></div>
</div>
</div>
<!-- choosing markets -->
<div class="selection">
<div class="markets">
Test
<?
echo "<table>
<thead border='0'>
<tr>
<th>Index</th>
<th>Name</th>
</tr>
</thead>
<tbody border='1'>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td id='nr' class='information'>" . $row['marketticker'] . "</td>";
echo "<td>" . $row['marketname'] . "</td>";
echo "</tr>";
}
echo "</tbody></table>";
date_default_timezone_set('Asia/Tokyo');
$current_time = date('G:i:s');
echo $current_time;
?>
</div>
<!-- choosing stocks -->
<div class="stock" >
</div>
</div>
<!-- chart -->
<div id="chart" style="width:600px;height:300px;">
</div>
<!-- depot -->
<div id="depot">
<ul id="Navigation">
<li><a href="einfuehrung.htm">DEPOTS</a></li>
<li><a href="mehrspaltige.htm">ORDERS</a></li>
<li><a href="fixbereiche.htm">Fixe Bereiche mit CSS-basierten Layouts</a></li>
<li><a href="navigationsleisten.htm">CSS-basierte Navigationsleisten</a></li>
<li><a href="browserweichen.htm">CSS-Browserweichen</a></li>
</ul>
<img src="../../../src/logo.gif" alt="SELFHTML">
<p><a href="../fixbereiche.htm#definieren">zurück</a></p>
</div>
<!-- ordermask -->
<div id="ordermask">
<ul id="Navigation">
<li><a href="einfuehrung.htm">DEPOTS</a></li>
<li><a href="mehrspaltige.htm">ORDERS</a></li>
<li><a href="fixbereiche.htm">Fixe Bereiche mit CSS-basierten Layouts</a></li>
<li><a href="navigationsleisten.htm">CSS-basierte Navigationsleisten</a></li>
<li><a href="browserweichen.htm">CSS-Browserweichen</a></li>
</ul>
<img src="../../../src/logo.gif" alt="SELFHTML">
<p><a href="../fixbereiche.htm#definieren">zurück</a></p>
</div>
<!-- communication -->
<div id="communication">
<ul id="Navigation">
<li><a href="einfuehrung.htm">DEPOTS</a></li>
<li><a href="mehrspaltige.htm">ORDERS</a></li>
<li><a href="fixbereiche.htm">Fixe Bereiche mit CSS-basierten Layouts</a></li>
<li><a href="navigationsleisten.htm">CSS-basierte Navigationsleisten</a></li>
<li><a href="browserweichen.htm">CSS-Browserweichen</a></li>
</ul>
<img src="../../../src/logo.gif" alt="SELFHTML">
<p><a href="../fixbereiche.htm#definieren">zurück</a></p>
</div>
</body>
</html>
--- 编辑这是视频链接link这显示了闪烁问题。
最佳答案
更新
函数.php
//Create a new class - This should be in a separate functions page
class CreateTable {
public $columnArray; // Change this variable name to the same as the
// object at the end of getData
function __construct() {
$this->getData(); // A new instance of the class will run query in getData
}
function getData() {
// Your query here and remove the for loop
for($i=1; $i < 6; ++$i) {
$column[] = 'column' . $i;
}
$this->columnArray = $column; // Change the object name "columnArray"
// to whatever you want.
// this will be your array
}
function displayHTML() {
// basic table
echo '
<table>
<thead>
<tr>
<th>Heading1</th>
<th>Heading2</th>
<th>Heading3</th>
<th>Heading4</th>
<th>Heading5</th>
</tr>
</thead>
<tbody>
<tr>';
// change "columnArray" to the same as the array object name
foreach($this->columnArray as $key => $value) {
echo '<td>' . $value . '</td>';
}
echo '
</tr>
</tbody>
</table>';
}
}
tableGenerate.php - 这将使用 jQuery 加载
include('functions.php');
// Generate a new instance of this class
$display = new CreateTable();
// Give me my table
$display->displayHTML();
displayToUser.php - 这是显示您的内容的主页。 #stage
将加载表格。
<div id="stage">
</div>
jQuery - 显然确保您已连接 jQuery 库:)
var auto_refresh = setInterval(
function ()
{
$('#stage').load('tableGenerate.php').fadeIn('slow');
}, 10000); // refresh every 10000 milliseconds
关于php - 为什么 Json 无法识别 MySQL 计算值/列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22603676/
我正在 csv 上使用 hadoop 来分析一些数据。我使用sql/mysql(不确定)来分析数据,现在陷入了僵局。 我花了好几个小时在谷歌上搜索,却没有找到任何相关的东西。我需要一个查询,在该查询中
我正在为 Bootstrap 网格布局的“简单”任务而苦苦挣扎。我希望在大视口(viewport)上有 4 列,然后在中型设备上有 2 列,最后在较小的设备上只有 1 列。 当我测试我的代码片段时,似
对于这个令人困惑的标题,我深表歉意,我想不出这个问题的正确措辞。相反,我只会给你背景信息和目标: 这是在一个表中,一个人可能有也可能没有多行数据,这些行可能包含相同的 activity_id 值,也可
具有 3 列的数据库表 - A int , B int , C int 我的问题是: 如何使用 Sequelize 结果找到 A > B + C const countTasks = await Ta
我在通过以下功能编写此查询时遇到问题: 首先按第 2 列 DESC 排序,然后从“不同的第 1 列”中选择 只有 Column1 是 DISTINCT 此查询没有帮助,因为它首先从第 1 列中进行选择
使用 Bootstrap 非常有趣和有帮助,目前我在创建以下需求时遇到问题。 “使用 bootstrap 在桌面上有 4 列,在平板电脑上有 2 列,在移动设备上有 1 列”谁能告诉我正确的结构 最佳
我是 R 新手,正在问一个非常基本的问题。当然,我在尝试从所提供的示例中获取指导的同时做了功课here和 here ,但无法在我的案例中实现这个想法,即可能是由于我的问题中的比较维度更大。 我的实
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个 df , delta1 delta2 0 -1 2 0 -1 0 0 0 我想知道如何分配 delt
您好,我想知道是否可以执行以下操作。显然,我已经尝试在 phpMyAdmin 中运行它,但出现错误。也许还有另一种方式来编写此查询。 SELECT * FROM eat_eat_restaurants
我有 2 个列表(标题和数据值)。我想要将数据值列 1 匹配并替换为头文件列 1,以获得与 dataValue 列 1 和标题值列 2 匹配的值 头文件 TotalLoad,M0001001 Hois
我有两个不同长度的文件,file2 是一个很大的引用文件,我从中提取文件 1 的数据。 我有一行 awk,我通常会对其进行调整以在我的文件中进行查找和替换,但它总是在同一列中进行查找和替换。 所以对于
假设我有两个表,如下所示。 create table contract( c_ID number(1) primary key, c_name varchar2(50) not
我有一个带有 varchar 列的 H2 表,其检查约束定义如下: CONSTRAINT my_constraint CHECK (varchar_field <> '') 以下插入语句失败,但当我删
这是最少量的代码,可以清楚地说明我的问题: One Two Three 前 2 个 div 应该是 2 个左列。第三个应该占据页面的其余部分。最后,我将添加选项来隐藏和
在 Azure 中的 Log Analytics 中,我为 VM Heartbeat 选择一个预定义查询,我在编辑器中运行查询正常,但当我去创建警报时,我不断收到警报“查询未返回 TimeGenera
在 Azure 中的 Log Analytics 中,我为 VM Heartbeat 选择一个预定义查询,我在编辑器中运行查询正常,但当我去创建警报时,我不断收到警报“查询未返回 TimeGenera
今天我开始使用 JexcelApi 并遇到了这个:当您尝试从特定位置获取元素时,不是像您通常期望的那样使用sheet.getCell(row,col),而是使用sheet.getCell(col,ro
我有一个包含 28 列的数据库。第一列是代码,第二列是名称,其余是值。 public void displayData() { con.Open(); MySqlDataAdapter
我很沮丧:每当我缩小这个网页时,一切都变得一团糟。我如何将网页居中,以便我可以缩小并且元素不会被错误定位。 (它应该是 2 列,但所有内容都合并为 1)我试过 但由于某种原因,这不起作用。 www.o
我是一名优秀的程序员,十分优秀!