我有一个网站,用户可以在其中将时间序列(日期;系列)输入文本区域。使用 POST 方法将数据发送到服务器。
我有几个不同时间序列的表已经存储在 MySQL 数据库中。用户指定的时间序列和存储在数据库中的时间序列应该结合起来进行统计计算。
我使用explode 将用户输入存储到一个数组中,并希望使用日期作为选择器(WHERE date = $datefromuserinput
)从数据库中选择时间序列。我这里有两个问题:
- 经过多次转换(例如 ),数组的日期格式与 MySQL(ISO、omd)中的日期格式不匹配
strtotime
。 - 另外,MySQL 中的时间序列数据类型是 DECIMAL (15,4) 格式,而 PHP 中的时间序列数据类型是字符串(转换为
float
)。
在尝试寻找解决方案之前,我想知道我的概念是否正确和最好。将用户输入放入 MySQL 表中会使计算速度更快(据我所知)。但是,多个用户可以同时使用该表单,这会导致覆盖 MySQL 中新表中的条目,对吧?我应该将完整的 MySQL 表加载到 PHP 数组中(需要会话)吗?
我已经阅读了许多解决方案,但找不到这些答案。任何提示将不胜感激。
<?php
date_default_timezone_set('UTC');
//session_start();
//$datum = [];
if ($_POST['usersubmit']) {
if ($_POST['userinput1'] !=""){
if ($_POST['separator'] != ""){
if ($_POST['separator'] == comma){
$separatorsign = ",";
}
elseif ($_POST['separator'] == semicolon){
$separatorsign = ";";
}
else {
$separatorsign = "\t";
}
}
$userinput1 = $_POST['userinput1'];
$zeilen= explode("\n", $userinput1);
$daten = array();
foreach($zeilen as $zeile) {
list($datum, $zeitreihe) = explode($separatorsign, $zeile,2);
$datumkonv = strtotime($datum);
$daten[]['datum'] = date('o-m-d',$datumkonv);
$daten[]['zeitreihe'] = $zeitreihe;
}
$con = mysql_connect('localhost','username','pw');
if (!$con)
{
die('Could not connect: ' . mysql_error($con));
}
mysql_select_db("dbname");
$sql = "SELECT series FROM mytimeseries1 WHERE date = $daten[0]['datum']"; //[0] just for trying working with the first row
$result = mysql_query($sql);
$row = mysql_fetch_object($result);
echo "$row->series";//["series"].'<br>';
$row = floatval($row);
$ergebnis = $row + 22;
echo $ergebnis; // $row is 100.5000 but $ergebnis returns 100.5023 ??
mysql_free_result($result);
mysql_close($con);
echo "<pre>";
//print_r ($result);
print_r ($row);
var_dump($row);
var_dump($ergebnis);
}
}
?>
<table width="800">
<tr>
<td width="400">
<form action="test.php" method="post">
<p><textarea style="overflow-y:scroll;resize:none;" name="userinput1" id="userinput1" cols="28" rows="12"></textarea></p>
<p>Separator<br>
<input type="radio" name="separator" value="comma">Comma</p>
<p><input type="radio" name="separator" value="tab">Tab</p>
<p><input type="radio" name="separator" value="semicolon">Semicolon</p>
</td>
<td width="400">
<p>Date Format<br>
<input type="radio" name="dateformat" value="yyyy-mm-dd">YYYY-MM-DD</p>
<p><input type="radio" name="dateformat" value="yyyy-dd-mm">YYYY-DD-MM</p>
<p><input type="radio" name="dateformat" value="dd-mm-yyyy">DD-MM-YYYY</p>
<p><input type="radio" name="dateformat" value="mm-dd-yyyy">MM-DD-YYYY</p>
<p><input type="radio" name="dateformat" value="ddmmyyyy">DD.MM.YYYY</p>
<p><input type="submit" name="usersubmit" value="GO"></p>
</form>
</td>
</tr>
</table>
<?php
编辑:尝试了几个小时后,我认为将用户输入数组上传到 MySQL 中的临时表中更有意义(接受日期格式等)。我不得不将上面代码中的 foreach() 部分更改为:
for($y = 0;$y < count($zeilen);$y++){
list($datum, $zeitreihe) = explode($separatorsign, $zeilen[$y], 2);
$daten[$y]['datum'] = $datum;
$daten[$y]['zeitreihe'] = $zeitreihe;
}