v2.5.2
Giriş yap

php'de xml değişkeni saydırma

Anonim
1,226 defa görüntülendi

Xml linkindeki herhangi bir değişkeni php ile saydırıp ekrana nasıl yazdırabilirim?
Mesela bu linkteki(https://kosekayalar-1.dia.com.tr/b2c_xml?key=6ixVFCSWNOO2HnU9Ljct) ürün sayısını php ile yazdırma nasıl yapılır? Veya stoğu "0" olan ürünleri nasıl tespit edip yazdırabilirim.

Cevap yaz
Cevaplar (13)
deman
1315 gün önce

tekrarsız marka sayısını da bu şekilde yaptım;

<?php

$xml = (array) $xml;
$markalar = array();
foreach($xml["product"] as $product){
	foreach ($product->marka as $marka) {
		$markalar[] = $marka;
	}
}
$tekrarsizmarkalar = array_unique($markalar);
$countmarka = 0;
foreach ($tekrarsizmarkalar as $tekrarsizmarka) {
	echo $tekrarsizmarka;
	echo "<br>";
	$countmarka++;
}
echo ("Marka Sayısı: " . $countmarka);

?>

Her markadan kaç ürün var bi de onu saydırabilirsem çok güzel olacak. Cvs => [15] gibi marka yazacak yanında da o markadan kaç ürün olduğu

deman
1315 gün önce

<?php

if($xml){
    $xml = (array) $xml;
    $count = 0;
    foreach($xml["product"] as $product){
	    foreach($product->resimler as $resimler){
	    foreach ($resimler->resim as $resim) {
	    	$count++;
	    }
    }
}
    echo $count;
}else{
    die("Beklenmeyen bir hata oluştu.");
}

?>

bu şekilde yaptığımda oldu, geriye bir sorun kaldı markaları saydırırken sadece tekrarsız markaları nasıl saydırabilirim?

deman
1315 gün önce

bu kod olmuyor, 1 1 1 1 1.... şeklinde yazıyor ekrana. bi de burada resimler değişkeni sayıyor ben resimler içindeki resim değişkenini saydırmam lazım

makifgokce
1315 gün önce
foreach($xml->product as $product){
    $i = 0;
    foreach($product->resimler as $resim){
        $i++;
    }
    echo $i;
}
deman
1316 gün önce

<resim> değişkeni <resimler> altında olduğu için kaç resim olduğunu saydırmayı yapamadım, <resimler> değişkenini saydırıyorum ama ürün sayısıyla aynı sayıyı veriyor normal olarak, onun altındaki <resim> değişkenini saydırmam lazım. yardımcı olur musunuz

deman
1318 gün önce

bu xml ağacında toplam kaç resim olduğunu ve tekrarsız marka sayısını(bi markadan 100 tane ürün olabiliyor bunu 1 olarak hesap edecek) nasıl yazdırabilirim?

deman
1318 gün önce

efe bey kusura bakmayın önceki koda bakarak yaptım çok çok teşekkür ederim yardımlarınız için.

deman
1318 gün önce

efe bey tekrar teşekkür ederim, resmi olmayan veya açıklama yanlış giden ürün sayılarını nasıl görebilirim,
bu kodların yanında toplu olarak ürün sayılarını nasıl yazdırabilirim(resmi olmayan toplam ürün sayısı: 32) gibi?
Bikaç deneme yaptım sizi yormamak için ama 1 1 1 şeklinde yazdı. toplu rakam olarak yazdıramadım

efekoca
1318 gün önce

<?php

if($xml = simplexml_load_file("https://kosekayalar-1.dia.com.tr/b2c_xml?key=6ixVFCSWNOO2HnU9Ljct")){
    $xml = (array) $xml;
    $count = 0;
    foreach($xml["product"] as $item):
        if(count($item->resimler->resim) > 0):
            continue;
        endif;
        echo("Resim içermeyen bir ürün bulundu! <br />");
        echo("<pre>");
        print_r($item);
        echo("</pre>");
        $count++;
    endforeach;
    if($count < 1):
        echo("Resim içermeyen ürün bulunamadı.");
    endif;
}else{
    die("Beklenmeyen bir hata oluştu.");
}

?>

Diğeri ise şu şekildedir:

<?php
if($xml = simplexml_load_file("https://kosekayalar-1.dia.com.tr/b2c_xml?key=6ixVFCSWNOO2HnU9Ljct")){
    $xml = (array) $xml;
    $count = 0;
    $pattern = "/(<([^>]+)>)/iu";
    foreach($xml["product"] as $item):
        if(preg_match($pattern, $item->description)):
            continue;
        endif;
        echo("HTML etiketleri içermeyen bir ürün bulundu! <br />");
        echo("<pre>");
        print_r($item);
        echo("</pre>");
        $count++;
    endforeach;
    if($count < 1):
        echo("HTML etiketleri içermeyen bir ürün bulunamadı.");
    endif;
}else{
    die("Beklenmeyen bir hata oluştu.");
}

?>

deman
1319 gün önce

Efe bey çok teşekkür ediyorum, iki sorum daha olacak;
birincisi: resmi olmayan ürünlerin tespitini nasıl yapabilirim, yani: içi boş <resimler> değişkeninden kaç tane var tespit etmem gerekiyor.
İkincisi: Biz açıklamaları html ile biçimlendirip xml'e aktarıyoruz bazı ürünler html etiketleri olmadan direk yazı olarak aktarılıyor. Onları nasıl tespit ettirebilirim.
Şimdiden çok teşekkür ediyorum.

efekoca
1319 gün önce

<?php

if($xml = simplexml_load_file("https://kosekayalar-1.dia.com.tr/b2c_xml?key=6ixVFCSWNOO2HnU9Ljct")){
    $xml = (array) $xml;
    echo("Toplam ürün sayısı: " . count($xml["product"]));
}else{
    die("Beklenmeyen bir hata oluştu.");
}

?>
İlk isteğiniz, üstteki gibidir. Diğerine gelecek olursak da:
<?php

if($xml = simplexml_load_file("https://kosekayalar-1.dia.com.tr/b2c_xml?key=6ixVFCSWNOO2HnU9Ljct")){
    $xml = (array) $xml;
    $count = 0;
    foreach($xml["product"] as $item):
        if($item->stok_miktari > 0):
            continue;
        endif;
     $count++;
    endforeach;
    echo("Stok miktarı sıfır (0) olan ürün sayısı: " . $count);
}else{
    die("Beklenmeyen bir hata oluştu.");
}

?>

deman
1319 gün önce

emeğiniz için teşekkür ederim ama bu kod ile xml verileri ekrana yazdırılıyor, ben veri sayısını nasıl saydırıp yazdırabiliriz diye sormuştum

makifgokce
1319 gün önce
$context  = stream_context_create(array('ssl' => array('header' => 'Accept: application/xml')));
$url = 'https://kosekayalar-1.dia.com.tr/b2c_xml?key=6ixVFCSWNOO2HnU9Ljct';

$xml = file_get_contents($url, false, $context);
$xml = simplexml_load_string($xml);

foreach($xml->product as $product){
    $stok_kodu = $product->stok_kodu;
    $title = $product->title;
    $description = $product->description;
    $keywords = $product->keywords;
    $stok_miktari = $product->stok_miktari;
    echo "Stok Kodu: $stok_kodu<br>Title: $title<br>Description: $description<br>Keywords: $keywords<br>Stok Miktarı: $stok_miktari";
}