【问题标题】:PHP - sort/order an array by timestampPHP - 按时间戳对数组进行排序/排序
【发布时间】:2015-12-01 20:39:43
【问题描述】:

为什么我从数据库中得到 0 而不是值?如果我给$_POST['dataType'] === 'start',我做错了什么。我从不调用多数据库选择请求。我做错了什么?

更新:

if(isset($_POST['dataType'])){
switch ($_POST['dataType']) {
    case 'start':
        $data_type = 'pictures, videos, audio, documents';
        break;
    case 'picture':
        $data_type = 'pictures';
        break;
    case 'video':
        $data_type = 'videos';
        break;
    case 'audio':
        $data_type = 'audio';
        break;
    case 'document':
        $data_type = 'documents';
        break;
    default:
        $data_type = '';
}


if (!empty($data_type)) {
    $userId = mysqli_real_escape_string($connect, $_SESSION['userId']);
    if ($_POST['dataType'] !== 'start')
        $sql = "SELECT * FROM " . $data_type . " WHERE user_id = " . $userId;
    else {
        $sql_picture = "SELECT * FROM pictures WHERE user_id = " . $userId . " ORDER BY upload_time";
        $sql_videos = "SELECT * FROM videos WHERE user_id = " . $userId . " ORDER BY upload_time";
        $sql_audio = "SELECT * FROM audio WHERE user_id = " . $userId . " ORDER BY upload_time";
        $sql_documents = "SELECT * FROM documents WHERE user_id = " . $userId . " ORDER BY upload_time";
    }

    // Check connection
    if ($connect->connect_error) {
        mysqli_close($connect);
        echo 1;
    }
    else {
        if ($_POST['dataType'] !== 'start'){
            $result = $connect->query($sql);
            if ($result->num_rows > 0) {
                $indexOfSuggests = 0;
                $data = array();
                while ($row = $result->fetch_assoc()) {
                    $id = $row['id'];
                    $user_id = $row['user_id'];
                    $name = $row['name'];
                    $public = $row['public'];
                    $link = $row['link'];
                    $upload_time = $row['upload_time'];
                    $data[$indexOfSuggests] = array($id, $user_id, $name, $public, $link, $upload_time);
                    $indexOfSuggests++;
                }
                $result->free();
                echo json_encode($data);
            }
            else {
                echo 0; // keine ergebnisse
            }
        }
        else {
            $indexOfSuggests = 0;
            $new_index;
            $collectData = array();
            for($i = 0; $i < 4; $i++){
                $indexOfSuggests = $new_index;
                if($i == 0)
                    $sql = $sql_picture;
                else
                    if($i == 1)
                        $sql = $sql_videos;
                    else
                        if($i == 2)
                            $sql = $sql_audio;
                        else
                            if($i == 3)
                                $sql = $sql_documents;

                $result = $connect->query($sql);
                if ($result->num_rows > 0) {
                    $data = array();
                    while ($row = $result->fetch_assoc()) {
                        $id = $row['id'];
                        $user_id = $row['user_id'];
                        $name = $row['name'];
                        $public = $row['public'];
                        $link = $row['link'];
                        $upload_time = $row['upload_time'];
                        $data[$indexOfSuggests] = array($id, $user_id, $name, $public, $link, $upload_time);
                        array_push($collectData, $data[$indexOfSuggests]);
                        $indexOfSuggests++;
                    }
                    $new_index = $indexOfSuggests;
                }
                else {
                    // keine ergebnisse
                }
            }
            echo json_encode($collectData);
        }
    }
}
else {
    header("Location: http://google.com");
}

}

所以我得到了它,但以一种非常不酷的方式。所以我要做的最后一件事是按日期对数组值进行排序。

【问题讨论】:

    标签: php arrays json ajax


    【解决方案1】:

    这是新的修复:)

    <?php
    if (isset($_POST['dataType'])) {
        switch ($_POST['dataType']) {
            case 'start':
                $data_type = 'pictures,videos,audio,documents';
                break;
            case 'picture':
                $data_type = 'pictures';
                break;
            case 'videos':
                $data_type = 'videos';
                break;
            case 'audio':
                $data_type = 'audio';
                break;
            case 'documents':
                $data_type = 'documents';
                break;
            default:
                $data_type = '';
        }
    
        function get_list ($sql,&$list) {
            // Create connection
            $connect = new mysqli($servername, $username, $password, $dbname);
            // Check connection
            if ($connect->connect_error) {
                die(1);
            } else {
                $result = $connect->query($sql);
                while ($row = $result->fetch_assoc()) {
                    $id = $row['id'];
                    $user_id = $row['user_id'];
                    $name = $row['name'];
                    $public = $row['public'];
                    $link = $row['link'];
                    $upload_time = $row['upload_time'];
                    $list[] = array($id, $user_id, $name, $public, $link, $upload_time);
                }
            }
        }
    
        if (!empty($data_type)) {
            $list = array();
            $userId = mysqli_real_escape_string($_SESSION['userId']);
            if ($_POST['dataType'] !== 'start') {
                $sql = "SELECT * FROM " . $data_type . " WHERE user_id = " . $userId;
                get_list($sql,$list);
            } else {
                $data_types = explode(',',$data_type);
                foreach($data_types as $type) {
                    $sql = "SELECT * FROM " . $type . " WHERE user_id = " . $userId;
                    get_list($sql,$list);
                }
            }
    
            if(empty($list))
                die(0);
            else
                echo json_encode($list);
    
        } else {
            header("Location: http://google.com");
        }
    }
    ?>
    

    【讨论】:

    • 请检查更新,它应该可以工作 - 还要仔细检查拼写
    • 工作正常,但我没有从与 sql 相关的数据库中获得任何价值
    • 刚刚更新,我做了多个查询并插入到列表中
    • 致命错误 $result = $connect->query($sql);
    • 为什么 OP 应该“试试这个”?一个好的答案总是会解释所做的事情以及这样做的原因,不仅适用于 OP,而且适用于 SO 的未来访问者。
    猜你喜欢
    • 1970-01-01
    • 2011-08-22
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    相关资源
    最近更新 更多