Eğer bir ürün zaten stok sayısı sıfırlandıysa ve tekrar kontrol ediliyorsa, bu durumu önlemen için verdiğim kodlarla güncelleme yapabilirsin
$dbProducts = [];
$urunListesi = $db->query("SELECT urun_kod FROM urun");
while ($row = $urunListesi->fetch(PDO::FETCH_ASSOC)) {
$dbProducts[] = $row['urun_kod'];
}
// XML dosyasından ürünleri al (örnek veri)
$xml_data = [
["product_id" => 1, "product_name" => "Beyaz Peynir", "stock_quantity" => 0],
// Diğer ürünler...
];
// Veritabanında stokları sıfır olan ürünleri kontrol et
$stokSifirUrunler = [];
foreach ($dbProducts as $dbProduct) {
$sorgu = $db->prepare("SELECT urun_stok FROM urun WHERE urun_kod = ?");
$sorgu->execute([$dbProduct]);
$stok = $sorgu->fetchColumn();
if ($stok == 0) {
$stokSifirUrunler[] = $dbProduct;
}
}
// XML dosyasındaki ürünleri kontrol et ve gerekli işlemleri yap
foreach ($xml_data as $xml_product) {
$urunKod = $xml_product["product_id"];
// Eğer stok sayısı sıfır olan bir ürün varsa, işlem yapma
if (in_array($urunKod, $stokSifirUrunler)) {
continue;
}
// Eğer ürün veritabanında varsa stok sayısını güncelle
if (in_array($urunKod, $dbProducts)) {
$sorgu = $db->prepare("UPDATE urun SET urun_stok = ? WHERE urun_kod = ?");
$sorgu->execute([$xml_product["stock_quantity"], $urunKod]);
} else {
// Eğer ürün veritabanında yoksa, ekleyebilirsiniz
// Örnek: $db->prepare("INSERT INTO urun (urun_kod, urun_stok) VALUES (?, ?)")->execute([$urunKod, $xml_product["stock_quantity"]]);
}
}
echo "Ürün kontrolü tamamlandı.";Bu verdiğim kod, veritabanında stok sayısı sıfır olan ürünleri kontrol eder ve bunları ayrı bir diziye ekler. XML dosyasındaki ürünleri kontrol ederken, bu sıfır stoklu ürünleri kontrol etmez ve böylece mevcut bir sıfır stoklu ürünü tekrar işleme almaz. Bu şekilde, her seferinde stokları sıfırlanan ürünler için tekrar işlem yapmazsınız.