【问题标题】:MySQL queries using PHP, JSON and displaying on HTML使用 PHP、JSON 并在 HTML 上显示的 MySQL 查询
【发布时间】:2014-02-25 11:08:35
【问题描述】:

我是一名“自学成才”的编码员,试图让 php 在 HTML 中工作,以便能够在 phonegap 中为我的 Web 应用程序的移动版本运行它。我按照教程无济于事。 下面附上php文件和html文件的代码。

     <?php
header("Content-Type: application/json");
if(isset($_POST['limit'])){
    $limit = preg_replace('#[^0-9]#', '', $_POST['limit']);


    $dbhost = '';
    $dbuser = '';
    $dbpass = '';
    $db = '';
    $tbl_name="Mindful Tips";

    $conn = mysql_connect($dbhost,$dbuser,$dbpass);
    mysql_select_db($db);

    $i = 0;
    $jsonData = "{";

    $sqlString = "SELECT * FROM $tbl_name ORDER BY RAND() LIMIT $limit";
    $query = mysql_query($sqlString) or die (mysql_error());

    while ($row = mysql_fetch_array($query)) {
        $i++;
        $ID = $row["ID"];
        $Tip = $row["Tip"];
        $jsonData .= '"tip'.$i.'":{ "ID":"'.$ID.'","Tip":"'.$Tip.'" },';
    }
    //$jsonData = chop($jsonData, ",");
    $jsonData .= '"arbitrary":{"itemcount":'.$i.', "returntime":"'.getdate().'"}';
    $jsonData .= '}';
    echo $jsonData;
    }
    ?>

HTML 文件

    <!DOCTYPE HTML>
    <html>
    <head>
    <title>Mindful Tips</title>
    <style type="text/css">
        div#databox {
            padding: 12px;
            background: #F3F3F3;
            border: #CCC 1px solid;
            width:550px;
            height:400px;
        }
    </style>
    <script>
        function onBodyLoad() {
            document.addEventListener("deviceready",onDeviceReady,false);
        }
    </script>
    <script type="text/javascript">
    function ajax_json_data(){
        var databox = document.getElementById("databox");
        var arbitrarybox = document.getElementById("arbitrarybox");
        var hr = new XMLHttpRequest();
        hr.open("POST", "json_mysql_data.php", true);
        hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        hr.onreadystatechange = function() {
            if(hr.readyState == 4 && hr.status == 200) {
                var d = JSON.parse(hr.responseText);
                arbitrarybox.innerHTML = d.arbitrary.returntime;
                databox.innerHTML = "";
                for(var o in d){
                    if(d[o].Tip){
                        databox.innerHTML += '<p>'+d[o].Tip+'</p>';
                    }
                }
            }
        }
        hr.send("limit=1");
        databox.innerHTML = "requesting...";
    }
    </script>
    </head>
    <body onload="onBodyLoad()">
    <script type="text/javascript" src="js/FbLogin.js"></script>
                            <div id="databox"></div>
                            <div id="arbitrarybox"></div>
                            <script type="text/javascript">ajax_json_data();</script>
    </body>
    </html>

任何帮助将不胜感激。

【问题讨论】:

  • 可能想要清理您的数据库详细信息,然后更改您的密码,如果这是您实际使用的内容
  • 不要手动构建 json 输出。构建一个数组,然后使用 json_encode。
  • 另外,可能想告诉我们什么不起作用,以便我们知道要寻找什么
  • SQL 查询未显示在 HTML 页面中。我得到的只是“请求.....”
  • 你在conflit.XML中配置了访问源吗?

标签: php html mysql json cordova


【解决方案1】:

调用json_encode的Javascript代码

<ul></ul>
                            <script type="text/javascript">
                                $(document).ready(function(){
                                                  $.getJSON('http://aam.prettypottery.ie/json_mysql_data.php', function(data) {
                                                            $.each(data, function(key, val) {
                                                                   $('ul').append('<li id="' + key + '">' + val.Tip + '</li>');
                                                                   });
                                                            });

                                                  });
                                </script>

【讨论】:

    【解决方案2】:

    你不需要在php中以这种方式制作JSON数据。

    您可以使用 json_encode() 函数将您的数组转换为 JSON 字符串,然后打印出来。

    代码片段..

    `     <?php
            header("Content-Type: application/json");
    
            if(isset($_POST['limit'])){
    $limit = preg_replace('#[^0-9]#', '', $_POST['limit']);
    
    
    $dbhost = '';
    $dbuser = '';
    $dbpass = '';
    $db = '';
    $tbl_name="Mindful Tips";
    
    $conn = mysql_connect($dbhost,$dbuser,$dbpass);
    mysql_select_db($db);
    
    $i = 0;
    
    
    $sqlString = "SELECT * FROM $tbl_name ORDER BY RAND() LIMIT $limit";
    $query = mysql_query($sqlString) or die (mysql_error());
    $data=array()
    while ($row = mysql_fetch_array($query)) {
    
        $ID = $row["ID"];
        $Tip = $row["Tip"];
        $data[$i]=array($ID,$Tip);
        $i++;
    
    }
    $jsonData=json_encode($data);
    echo $jsonData;
    }
    ?>`
    

    【讨论】:

    • 对不起,你能扩展一下这个功能吗?
    • 这并不完全有效,但我现在有 json_encode 工作......但是,我该如何在 HTML 页面中显示它?
    猜你喜欢
    • 1970-01-01
    • 2019-04-08
    • 2020-03-27
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    相关资源
    最近更新 更多