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