0

ええと、私の問題は非常に奇妙です。

1) MySQL データベースに保存されている情報を含む XML を取得する PHP スクリプトがあります。

2)このスクリプト(または他のスクリプト)を初めて使用すると、すべての情報が更新されます(その瞬間までに挿入されたすべてのレジストリ)。

3)このスクリプト(または他のスクリプト)を再度使用すると、データベースに新しいレジストリがいくつあっても、最初にスクリプトを使用したときに取得したレジストリのみが表示されます。

*このスクリプトをブラウザでテストしたところ、問題なく動作し、常にデータベースの最新の状態が得られました。

私に何ができる?どうも。

編集:

1) XML パーサーの呼び出し方法:

NSString *strURL = @"localhost/scripts/bringmethexml-x5.php";
NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];

XMLProcessor *processor = [[XMLProcessor alloc]initProcessor];
[processor syncProcessorWithData:dataURL];
NSMutableArray *a = processor.xmlObjects;

2) 私の PHP スクリプト:

<?php
    header("Content-type: text/xml");
    echo "<?xml version=\"1.0\" encoding=\"LATIN-1\"?>";
    echo "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">";
    echo "<plist version=\"1.0\">";

    function getXML($sql="SELECT user FROM database.Posts"){

        $conn   = mysql_connect ("localhost", "user", "password");
        $db     = mysql_select_db("database");
        $result = mysql_query($sql, $conn);
        $column = "";
        echo "<array>";

        while($row = mysql_fetch_assoc($result)){
        $column .= "<dict>";
            foreach ($row as $key => $value){
                $column .= "<key>$key</key>";
                $column .= "<string>$value</string>";
            }
            $column .= "</dict>";
        }

        echo $column;
        echo "</array>";
        echo "</plist>";
    }       
    getXML("SELECT user as USER, msg as MESSAGE, hashtag_1 as ST1, hashtag_2 as ST2, hashtag_3 as ST3, hashtag_4 as ST4, hashtag_5 as ST5, date as DATEPOSTED, coordinate_lat as COORLAT, coordinate_lon as COORLON FROM database.Posts;");
    mysql_close();
?>

3) XML の取得方法:

<?xml version="1.0" encoding="LATIN-1"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <array>
    <dict>
        <key>(key || nome da fileira do db)</key>
            <string>(valor||object)</string>
        <key>(key || nome da fileira do db)</key>
            <string>(valor||object)</string>
    </dict>
    <dict>
        <key>(key || nome da fileira do db)</key>
            <string>(valor||object)</string>
        <key>(key || nome da fileira do db)</key>
            <string>(valor||object)</string>
    </dict>
    </array>
</plist>

4) XMLProcessor は私が作成したパーサーです。NSURL から NSData を取得し、それを文字列に変換し、NSMutableDictionary に収まるように解析します。クラスのリンクは次のとおりです。

http://www66.zippyshare.com/v/7711833/file.html

4

1 に答える 1

1

これを修正する簡単な方法は、実際には何にも使用しないランダム変数を URL に追加することです。

たとえば、http://www.yourwebsite.com/somestuff.xml?random=343453

毎回URLが違うのでキャッシュは使いません。

アンカーを追加して行うこともできます: http://www.yourwebsite.com/somestuff.xml#623764527

これを自動化する関数を次に示します。それを nsstring URLS に適用するだけです

yourURL = [self getUniqueURL:yourURL];


-(NSString*)getUniqueURL:(NSString*)originalURL
{

    NSInteger random = (arc4random() % 100000000) + 1;

    NSString* uniqueURL = [NSString stringWithFormat:@"%@#%d",originalURL,random];

    return uniqueURL;

}
于 2012-08-16T15:21:09.943 に答える