- 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/
我在 JavaScript 文件中运行 PHP,例如...... var = '';). 我需要使用 JavaScript 来扫描字符串中的 PHP 定界符(打开和关闭 PHP 的 )。 我已经知道使
我希望能够做这样的事情: php --determine-oldest-supported-php-version test.php 并得到这个输出: 7.2 也就是说,php 二进制检查 test.
我正在开发一个目前不使用任何框架的大型 php 站点。我的大问题是,随着时间的推移慢慢尝试将框架融入应用程序是否可取,例如在创建的新部件和更新的旧部件中? 比如所有的页面都是直接通过url服务的,有几
下面是我的源代码,我想在同一页面顶部的另一个 php 脚本中使用位于底部 php 脚本的变量 $r1。我需要一个简单的解决方案来解决这个问题。我想在代码中存在的更新查询中使用该变量。 $name)
我正在制作一个网站,根据不同的情况进行大量 PHP 重定向。就像这样...... header("Location: somesite.com/redirectedpage.php"); 为了安全起见
我有一个旧网站,我的 php 标签从 因为短标签已经显示出安全问题,并且在未来的版本中将不被支持。 关于php - 如何避免在 php 文件中写入
我有一个用 PHP 编写的配置文件,如下所示, 所以我想用PHP开发一个接口(interface),它可以编辑文件值,如$WEBPATH , $ACCOUNTPATH和 const值(value)观
我试图制作一个登录页面来学习基本的PHP,首先我希望我的独立PHP文件存储HTML文件的输入(带有表单),但是当我按下按钮时(触发POST到PHP脚本) )我一直收到令人不愉快的错误。 我已经搜索了S
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: What is the max key size for an array in PHP? 正如标题所说,我想知道
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我在 MySQL 数据库中有一个表,其中存储餐厅在每个工作日和时段提供的菜单。 表结构如下: i_type i_name i_cost i_day i_start i_
我有两页。 test1.php 和 test2.php。 我想做的就是在 test1.php 上点击提交,并将 test2.php 显示在 div 中。这实际上工作正常,但我需要向 test2.php
我得到了这个代码。我想通过textarea更新mysql。我在textarea中回显我的MySQL,但我不知道如何更新它,我应该把所有东西都放进去吗,因为_GET模式没有给我任何东西,我也尝试_GET
首先,我是 php 的新手,所以我仍在努力学习。我在 Wordpress 上创建了一个表单,我想将值插入一个表(data_test 表,我已经管理了),然后从 data_test 表中获取所有列(id
我有以下函数可以清理用户或网址的输入: function SanitizeString($var) { $var=stripslashes($var); $va
我有一个 html 页面,它使用 php 文件查询数据库,然后让用户登录,否则拒绝访问。我遇到的问题是它只是重定向到 php 文件的 url,并且从不对发生的事情提供反馈。这是我第一次使用 html、
我有一个页面充满了指向 pdf 的链接,我想跟踪哪些链接被单击。我以为我可以做如下的事情,但遇到了问题: query($sql); if($result){
我正在使用 从外部文本文件加载 HTML/PHP 代码 $f = fopen($filename, "r"); while ($line = fgets($f, 4096)) { print $l
我是一名优秀的程序员,十分优秀!