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

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.

makifgokce
9 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";
}
deman
9 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

efekoca
9 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
9 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
8 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
8 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

deman
8 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
8 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
6 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

makifgokce
6 gün önce
foreach($xml->product as $product){
    $i = 0;
    foreach($product->resimler as $resim){
        $i++;
    }
    echo $i;
}
deman
6 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

deman
6 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
5 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

Nasıl akıllıca soru sorulur?
Daha hızlı ve kaliteli cevaplar almak için önce nasıl soru sorulacağını bilmeniz gerekir. Eğer bilmiyorsanız bu yazı serisini okuyun.

Cevap yaz