私は実際にPHPを初めて使いました。私は最近、自分のウェブサイトをAPIと統合するために最近勉強を始めました。これまでのところ、とてもうまくいっていますが、私は自分の問題に関する情報を見つけることができませんでした。SimpleXMLを使用して複数のURLを読み込んでデータを整理する
目的:外部APIを使用して「注文」、「商品」、「パッケージ」をプルすること。その後、すべての重要な情報とともに、ログインしたユーザーの注文(過去および現在)のリストのエクスポートを許可します。
効果:情報をプルして投稿します。
どうすればいいですか?APIは「ページ区切り」を使用しており、その制限を超えて進めません。一例として、現在22の注文があります。 APIを呼び出すと、最初の10個が送信され、完全に出力されます。もっと私は "per_page"と "page =#"を末尾に追加することができます。しかし、私は手動でこれを行うことができます。たとえば、私は "per_page = 20"でアドレスをハードコードするとすべて20と表示されます。しかし、問題は私がいつどれくらい引っ張るかを知ることではなく、私は23(1以上あります)何もロードしない。私が現在使用してコードを表示するように
(重要な部分を表示するために大幅に短縮されています):これに伴い
<?php
$packages = 'http://[email protected]/packages.xml';
$products = 'http://[email protected]/products.xml';
$orders = 'http://[email protected]/orders.xml';
$packagelist = new SimpleXMLElement($packages,null,true);
$productlist = new SimpleXMLElement($products,null,true);
$orderslist = new SimpleXMLElement($orders,null,true);
foreach($productlist->children() as $child) {
echo $child->getName().":
";
foreach($child->children() as $subchild) {
echo "<br />--->".$subchild->getName().": ".$subchild."
";
}
}
foreach($orderslist->children() as $child) {
echo $child->getName().":
";
foreach($child->children() as $subchild) {
echo "<br />--->".$subchild->getName().": ".$subchild."
";
}
}
?>
、私は私の反復方法が効率的である場合になど興味があります。それは、注文リストで読み込み、サイトの電子メールアドレスと名前をリストと比較するように設定されています。ヒットした場合は、購入ID番号を取得し、パッケージと製品リストを解析して名前を取得します購入)の:
foreach($orderslist as $child) {
$purchaser = $child->{'buyer-name'};
$email_addy = $child->{'buyer-email'};
$download_url = $child->{'download-url'};
$valid = $child->{'valid-until'};
$expires = date("F j, Y", strtotime("$valid"));
$product_id = $child->{'product-id'};
$package_id = $child->{'package-id'};
if ($email_addy == "$activeEmail" && $purchaser == "$usersName" && ($child->state == "complete" || $child->state == "free")){
foreach($productlist as $testing){
if ($product_id == "{$testing->id}"){
echo "<tr><td>{$testing->name}</td> <td><a href=\"$download_url\">Download</a></td> <td>$expires<br /></td></tr>";
}
}
最後に、私はセットアップを持っている懸念は、システムがより多くの購入を取得するよう、読み込まれているリストは長く、長くなっ保つことです。そうであるように、誰かが自分のアカウントページを訪れるたびに、そのリストを引っ張って最新の情報を入手します。これを処理するより効率的な方法はありますか?
APIドキュメント:事前にhttp://www.digitaldeliveryapp.com/developers/api/introduction
ありがとう!私はあなたが見ることができるように、これは非常に新しいですが、これまでこれまでの素晴らしい学習経験でした!
私はデータベースクエリを使用することを考えていましたが、古い注文の変更が見落とされてしまうことを少し心配しました。たとえば、チャージバックをした場合、システムはX日までアクティブであることを示します。 、等ではありません。 – Bryan
DomDocumentを読んだら、うまくいくと思いますが、必要なURLをすべて引き出すにはどうすればいいですか?(すべてのページが引かれるまで、URLはper_page = 50 && page = 1、page = 2、page = 3など) – Bryan
それは本当ですが、あなたのために、apiが変更日付を提供してくれることを願っています。ページネーションの場合は、ページネーションパラメータをオーバーライドして50をフェッチし、56のオーダーを表示するとページの最後の6を –