1

現在、私のクラスでは、学校用の Android アプリを作成しています。このクラスには実際のミーティングの時間がないので、私のクラスの何人かは私が顔を合わせて話したことがありません. これらの個人の 1 人は、さまざまなフィード用に json と php をプログラミングしています。問題は、彼が私に php ファイルを送ってくれたことです。その中の情報を解析してアプリにフィードを表示する方法が完全にはわかりません。

私は Java と XML にはかなり精通していますが、PHP (現在使用しています) や JSON (約 1 年前に一度使用しました) にはあまり詳しくありません。

だから私は3つの質問があります

1.さまざまなフィードにアクセスできるようにするには、アプリがページを送信するために何が必要ですか?

2.データベースはどこに置くべきですか?

3. このページから送られてくる情報をどのように解析すればよいですか?

参考までに、アプリは今のところ基本的な設計にすぎないため、クラスや心配する必要はありません。

ここにPHPファイルがあります

<?php

$server = "localhost";
$user_name = "web";
$password = "internet";
$db_name = "cptc";

@$db = mysqli_connect($server, $user_name, $password, $db_name);

if (mysqli_connect_errno()) {
    echo 'Error: could not connect to database.  Please try again later.';
    exit ;
}

mysqli_select_db($db, $db_name) or die("could not connect");

$commandType = 'unknown';
$feedURL="";
if (isset($_GET['cmd'])) {
    $commandType = trim($_GET['cmd']);
    $commandType = strtolower($commandType);
}
if ($commandType == 'staff') {

    if (isset($_GET['fname']) && isset($_GET['lname'])) {

        $fname = trim($_GET['fname']);
        $fname = strtolower($fname);
        $lname = trim($_GET['lname']);
        $lname = strtolower($lname);

        $query = "SELECT * FROM staff WHERE fname like '" . $fname . "%' AND '" . $lname . "%'";

    } else if (isset($_GET['lname'])) {
        $commandType = trim($_GET['cmd']);
        $commandType = strtolower($commandType);
        $lname = trim($_GET['lname']);
        $lname = strtolower($lname);
        $query = "SELECT * FROM staff WHERE lname like '" . $lname . "%'";

    } else if (isset($_GET['fname'])) {
        $commandType = trim($_GET['cmd']);
        $commandType = strtolower($commandType);
        $lname = trim($_GET['fname']);
        $lname = strtolower($fname);
        $query = "SELECT * FROM staff WHERE lname like '" . $fname . "%'";
    } else {
        $commandType = trim($_GET['cmd']);
        $commandType = strtolower($commandType);
        $query = "SELECT * FROM " . $commandType;
    }

    $result = mysqli_query($db, $query);

    if (mysqli_num_rows($result)) {

        echo '{"Data":[';

        $first = true;
        $row = mysqli_fetch_assoc($result);

        while ($row = mysqli_fetch_row($result)) {

            if ($first) {
                $first = false;
            } else {
                echo ',';
            }
            echo json_encode($row);
        }
        echo ']}';
    } else {
        echo '[]';
    }
} else if ($commandType == 'event') {
    if (isset($_GET['current']) && isset($_GET['future'])) {
        $current = $_GET['current'];
        $current = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
        $currentDate = date("Y-m-d", $current);

        $future = $_GET['future'];
        $future = mktime(0, 0, 0, date("m"), date("d") + 7, date("Y"));
        $futureDate = date("Y-m-d", $future);
        $userid = 'michael.herrera1977%40gmail.com';
        $magicWord = '200f9cbc38a87ae4f65051f26d19e5a4';
        $feedURL = "http://www.google.com/calendar/feeds/$userid/private-$magicWord/basic?start-min=$currentDate&start-max=$futureDate";

    } else if (isset($_GET['current'])) {
        $current = $_GET['current'];
        $current = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
        $currentDate = date("Y-m-d", $current);
        $userid = 'michael.herrera1977%40gmail.com';
        $magicWord = '200f9cbc38a87ae4f65051f26d19e5a4';
        $feedURL = "http://www.google.com/calendar/feeds/$userid/private-$magicWord/basic?start-min=$currentDate";

    } else if (isset($_GET['future'])) {
        $future = $_GET['future'];
        $future = mktime(0, 0, 0, date("m"), date("d") + 7, date("Y"));
        $futureDate = date("Y-m-d", $future);
        $userid = 'michael.herrera1977%40gmail.com';
        $magicWord = '200f9cbc38a87ae4f65051f26d19e5a4';
        $feedURL = "http://www.google.com/calendar/feeds/$userid/private-$magicWord/basic?start-max=$futureDate";
    }

    // read feed into SimpleXML object
    $xmlSimple = simplexml_load_file($feedURL);

    //gets info based on CMD this will be pulled up if CMD = events
    //if(isset($_GET['events']))

    //put each title and content from each date into the array
    foreach ($xmlSimple->entry as $entry) {
        $title = stripslashes($entry -> title);
        $content = stripslashes($entry -> content);
        $eventsArray[] = array('Title' => $title, 'content' => $content);

    }
    //clean up json string for easy cheesy use and to get the when, where and event seperated
    $json = json_encode($eventsArray);
    $json = str_replace('"content":', '', $json);
    $json = str_replace('\n', '', $json);
    $json = str_replace('"When:', '"When":"', $json);
    $json = str_replace('Where:', '","Where":"', $json);
    $json = str_replace('Event Status: confirmed', '', $json);
    $json = str_replace('Event Description:', '","Event Description":"', $json);
    $json = preg_replace('/\s+/', '%20', $json);

    echo $json;
}
?>

これに同梱されていたhtmlファイルもありましたが、

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>dbphp</title>
        <meta name="author" content="Michael" />
        <!-- Date: 2012-05-03 -->
    </head>
    <body>
        <form action="dbphp.php" method="get" >
            <!--<input type="hidden" name="cmd" value="staff">
            <input type="hidden" name="fname" value="m">
            <input type="hidden" name="lname" value="j"/><br />-->
            <input type="hidden" name="cmd" value="event">
            <input type="hidden" name="current" value="5/10/2012">
            <input type="hidden" name="future" value="5/15/2012"/>
            <input type="submit" name="submit" value="enter staff member" />

        </form>

    </body>
</html>

著者に会えたら本当にいいのですが、運動したくないようです。

皆様のご協力をお願いいたします。ありがとう

4

1 に答える 1

1

これは PHP のみの質問です。API?は PHP ファイルの末尾で引数を使用しているように見えるため、次のようになります。

  1. dbphp.php?cmd=staff&lname=<last_name>&fname=<first_name>
    • テーブルでユーザーを検索しstaffます。
  2. dbphp.php?cmd=<table_name>
    • テーブルからすべてを取り出しtable_nameます。イーク!
  3. dbphp.php?cmd=event?current=<date>&future=<date>
    • michael.herrera1977 の Google カレンダーを参照してください。json の戻り値は、それを返す前に恐ろしく破壊されます

データベースは、PHP と同じサーバー上にありlocalhostます。出力を解析するために、役立つ標準JSONArrayJSONObjectクラスがあります。Google からの JSON 出力が無効になる可能性があるため、コードstr_replaceとコードもすべて削除します。preg_replace

于 2012-05-18T07:59:19.933 に答える