v2.5.2
Giriş yap

SimpleXML'de Parçalı Veri Çekme

mcfearcombat
307 defa görüntülendi ve 2 kişi tarafından değerlendirildi

Alt kısımda vermiş olduğum kod yapısı ile xml'den verileri okuyup veritabanıma kaydetmekteyim. Bu yapıda;

&batch=1$&limit=500

ifadesi ile XML'deki ilk 500 ikinci 500 veriyi okumam mümkün oluyor. Burada yapmak istediğim veri sonlanana kadar 500'lü parçalarda okuma yapmak. Burada batch'e değişken atayıp for ile döndermek mi mantıklı yoksa farklı bir yöntem mi kullanmam gerekir ?

<b> Sorunum : </b> Gelen XML'de 3000 civarında ürün olmasına rağmen sınır koymaksızın okumaya çalışmamda sadece 493 ürün çekiyor, Parça parça okumamda sorun olmuyor tüm ürünleri alabiliyorum, bunu otomatikleştirmek istiyorum. Burada for döngüsünü kullanırken for'un içerisinde dönderince boş veri alıp almayacağından şüpheliyim.

<?php 
 $url = "https://########/index.php?do=catalog/output&pCode=******&batch=1$&limit=500";

    $file = simplexml_load_file($url);




foreach($file as $key => $value){
    $gstockCode = $value->stockCode;
    $gLabel = $value->label;
    $gstatus = $value->status;
    $gbrand = $value->brand;
    $gbrandId = $value->brandId;
    .
    .
    .
    şeklinde devam ediyor.

?>
Cevap yaz
Cevaplar (2)
mcfearcombat
690 gün önce

Üstadım cevabınız için teşekkür ederim ancak burayı uyguladığımda hem hata aldım hem de buranın mantığını anlayamadım. Mantığı anlayarak ilerlemek istiyorum, eğer mümkünse olması gereken akışı özet geçebilmeniz mümkünse çok sevinirim.

mubado
690 gün önce

$dizi[];
$batchs = 1;
function urlChoose($batch){

$url = "https://########/index.php?do=catalog/output&pCode=******&batch='.$batch.'$&limit=500";
$file = simplexml_load_file($url);
 foreach($file as $key => $value){
   $dizi[$key]['gstockCode'] = $value->stockCode;
   $dizi[$key]['gLabel'] = $value->label;
   $dizi[$key]['gstatus'] = $value->status;
   $dizi[$key]['gbrand'] = $value->brand;
   $dizi[$key]['gbrandId'] = $value->brandId;     
}
$batchs++
$foreachs = urlChoose($batchs)

}

urlChoose($batchs);
print_r($dizi);