2016-05-17 104 views
1

我有一个网络程序,其目标是绘制用户选择的某个窑的数据点。我的问题是,当一个用户想要选择一个新的窑,我怎么能更新所有单独的JSON页数据从他们选择的新表中拉出的地方?我怎样才能有一个PHP查询基于下拉列表选择选择某个表?

这是我的下拉列表creater代码。

<p class="navleft"> 
 
Kiln Number:<br> 
 
<select name="kilns" id="kilns"> 
 
<?php 
 
$sql = "SHOW TABLES FROM history"; 
 
$result = mysqli_query($con,$sql); 
 

 
while($table = mysqli_fetch_array($result)) { // go through each row that was returned in $result 
 
\t echo ("<option value='". $table[0] . "'>" . $table[0] . "</option>"); 
 
} 
 
?> 
 
</select> 
 
</p>

这里是我从一个表中的值选择所有的数据,并把它变成一个JSON文件中的PHP页面。

<?php 
 
$con = mysqli_connect("localhost","KilnAdmin","KilnAdmin","history"); 
 

 
// Check connection 
 
if (mysqli_connect_errno()) 
 
    { 
 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
 
    } 
 

 
mysqli_select_db($con,"history") or die ("no database"); 
 

 
//Fetch Data 
 
$query = "SELECT * FROM k1_history LIMIT 1000"; 
 
$result = mysqli_query($con,$query); 
 

 
if ($result) { 
 
\t $data = array(); 
 
\t while($row = mysqli_fetch_assoc($result)) { 
 
\t \t //$data[] = $row; 
 
     $data[] = array(
 
\t \t \t "date" => $row[ 'Timestamp' ], 
 
\t \t \t "value" => $row[ 'DryBulbFront' ] 
 
\t \t); 
 
    } 
 
\t echo json_encode($data); 
 
} 
 
else { 
 
\t echo "Error"; 
 
} 
 
?>

凡说k1_history,我怎么能得到这从从其他网页保管箱菜单中的用户的选择?

+0

没有真正得到的问题,但不能只是将选定的值保存在db \文件中? – 2016-05-17 21:56:10

+0

你的问题很奇怪,因为上面的代码显示了你不知道如何在脚本之间传递变量的情况下得不到的知识水平。要理解你必须理解表单,动作,服务器变量或ajax。创建一个答案让你理解所有这些概念是非常棘手的。特别考虑到上述事实。你从哪里得到这个代码? –

回答

0

如果我正确理解你想要的东西,那么你需要的是Ajax。

您必须像选择一样填充选择对象,并对每个选择项进行Ajax调用,以处理用户选择的内容.php。在你的情况下,这个.php文件将采用用户选择的表名,运行一个查询并将一些结果返回给html。为了演示目的,我会用一个例子来解释。

让我们在你的.html说你有一个选择是这样的:

Select Value: 
    <select name="kilns" id="kilns"> 
     <option value="1">Option 1</option> 
     <option value="2">Option 2</option> 
     <option value="3">Option 3</option> 
    </select> 

什么在选项的值属性定义就是你要传递给我提到的PHP文件。要做到这一点,你使用Ajax,所以里面的一些script标签必须:

$('#kilns').on('change', function(e) { 
    var data = {'kilns': this.value}; 
    $.ajax({ 
     type: 'POST', 
     url: 'submit.php', 
     data: data, 
     dataType: 'json' 
    }).done(function(msg) { 
     alert(msg); 
    }); 
}); 

这里做的事情是,每次用户选择从select的东西,那么这个函数被调用,其中选择的值(var data = {'kilns': this.value}; )正在通过POST发送到名为submit.php的文件。该submit.php看起来是这样的:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $kilns_error = 0; 

    if (isset($_POST['kilns']) && !empty($_POST['kilns'])) { 
     $kilns = $_POST['kilns']; 
    } else { 
     $kilns = null; 
     $kilns_error = 1; 
    } 

    if ($kilns_error != 1) { 
     echo json_encode($kilns); 
    } 
} 

这里发生的是在我们确认我们确实是一个POST REQUEST,我们检查值是否是未定义或空。在这个简单的检查之后,我们继续到echo json_encode($kilns);,我们返回最初发送给.php脚本的值,这实际上是用户选择的值。

在你的情况下,你必须做的是在.php脚本中实际做一些事情,而不只是返回你调用它的值。此外,请务必传递您通过白名单的值,以确保用户选择实际的表并且不会为您的数据库创建问题,因为只需更改他将要执行的操作的值就很容易选择之前选择它。看看mysqli和PDO的准备好的语句。

+1

非常感谢!完美的作品。 –

+0

我很高兴听到! :)如果答案满足你要求帮助未来访问者的问题,请将此答案标记为解决方案。 –

相关问题