• 27-08-2023, 12:15:05
    #1
    Kullanmakta olduğumuz xml aktarım sisteminde iki sorunu düzeltebilecek birini arıyorum kodumuz bu şekilde, KADIN > İç Giyim > Çorap bu kategoriyi alabiliyorum ve otomatik olarak ekliyor ancak Çocuk > Kız Çocuk > Çorap alması gereken kategoriyi de Kadın kategorisi altındaki çorap kısmına ekliyor kategorinin sadece başlığını kontrol ediyor ilk sorun bu birde stok sayısı 0 gelen ürünlerin durumunu 0 olarak gönderecek. Teliflerinizi buradan yada pm ile iletebilirsiniz.

    <?php
    include 'control/dbase.php';
    if(isset($_GET['id'])){
        if($_GET['id'] > 0){
            $query = $db->query("SELECT * FROM xml_aktar WHERE id = '{$_GET['id']}' LIMIT 1", PDO::FETCH_ASSOC);
        }else if($_GET['id'] == 0){
            $query = $db->query("SELECT * FROM xml_aktar", PDO::FETCH_ASSOC);
        }
        if($query->rowCount()){
            function RecurseXML($xml,$parent,$aranan,$urun_id){
               global $db;
     
               $urun_kontrol = $db->query("SELECT dil FROM urun WHERE id = '{$urun_id}' LIMIT 1")->fetch(PDO::FETCH_ASSOC);
     
               foreach($xml as $key=>$value){
                  if(RecurseXML($value,$parent.".".$key,$aranan,$urun_id) == 0){
                    $bol = explode('|', $aranan);
                    foreach($bol as $ara){
                        if(!empty($ara)){
                            if(strstr($key, $ara)){
                                if($bol[0] == $key){
                                    $varyant = $value;
                                }else if($bol[1] == $key){
                                    $alt_varyant = $value;
                                }else if($bol[2] == $key){
                                    $stok = $value;
                                }else if($bol[3] == $key){
                                    $fiyat = $value;
                                }
                                if(!empty($stok) AND !empty($alt_varyant) AND !empty($varyant)){
                                    $varyant_kontrol = $db->query("SELECT * FROM urun_varyant WHERE urun_id = '{$urun_id}' LIMIT 1")->fetch(PDO::FETCH_ASSOC);
                                    if($varyant_kontrol){
                                        $varyant_id = $varyant_kontrol['id'];
                                    }else{
                                        $ekle = $db->prepare("INSERT INTO urun_varyant SET dil = ?, urun_id = ?, baslik = ?");
                                        $ekle = $ekle->execute(array($urun_kontrol['dil'],$urun_id,$varyant));
                                        $varyant_id = $db->lastInsertId();
                                    }
                                    if(!isset($fiyat)){
                                        $fiyat = 0;
                                    }
                                    $ekle = $db->prepare("INSERT INTO urun_varyant_secenek SET dil = ?, urun_id = ?, urun_vayant_id = ?, baslik = ?");
                                    $ekle = $ekle->execute(array($urun_kontrol['dil'],$urun_id,$varyant_id,$alt_varyant));
                                    $alt_varyant_id = $db->lastInsertId();
                                    $varyant_key = $alt_varyant_id.'-';
                                    $ekle = $db->prepare("INSERT INTO urun_varyant_secenek_fiyat_stok SET dil = ?, urun_id = ?, varyant_key = ?, fiyat = ?, stok = ?");
                                    $ekle = $ekle->execute(array($urun_kontrol['dil'],$urun_id,$varyant_key,$fiyat,$stok));
                                }
                            }
                        }
                    }
                  }
               }
            }
            function RecurseXMLimg($xml,$parent,$aranan,$urun_id){
               global $db;
               $urun_kontrol = $db->query("SELECT dil FROM urun WHERE id = '{$urun_id}' LIMIT 1")->fetch(PDO::FETCH_ASSOC);
               foreach($xml as $key=>$value){
                  if(RecurseXMLimg($value,$parent.".".$key,$aranan,$urun_id) == 0){
                    $bol = explode('|', $aranan);
                    foreach($bol as $ara){
                        if(!empty($ara)){
                            if(strstr($key, $ara)){
                                $value = trim($value);
                                $value = explode('?',$value);
                                $value = $value[0];
                                $izinli_formatlar = array('jpg','jpeg','JPG','JPEG','png','PNG','svg','gif');
                                $format = end(explode('.', $value));
                                if(in_array($format,$izinli_formatlar)){
                                    $resim_adi = time().'-'.uniqid().'.'.$format;
                                    copy($value,'upload/'.$resim_adi);
                                    $ekle = $db->prepare("INSERT INTO urun_resim SET dil = ?, urun_id = ?, resim = ?, sira = ?");
                                    $ekle = $ekle->execute(array($urun_kontrol['dil'],$urun_id,$resim_adi,1));
                                }
                            }
                        }
                    }
                  }
               }
            }
            function RecurseXMLkategori($xml,$parent,$aranan,$dil){
               global $db;
               $kategori_kontrol = $db->query("SELECT baslik FROM kategori WHERE dil = '{$dil}' AND baslik = '{$aranan}' LIMIT 1")->fetch(PDO::FETCH_ASSOC);
               if($kategori_kontrol){
                   return $kategori_kontrol['baslik'];
               }else{
                    foreach($xml as $key=>$value){
                        if(!empty($aranan)){
                            if(strstr($key, $aranan)){
                                return $value;
                            }else{
                                foreach($value as $key=>$value){
                                    if(!empty($aranan)){
                                        if(strstr($key, $aranan)){
                                            return $value;
                                        }else{
                                            foreach($value as $key=>$value){
                                                if(!empty($aranan)){
                                                    if(strstr($key, $aranan)){
                                                        return $value;
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
               }
              
            }
            function xml_baglan($link){
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL,$link);
                curl_setopt($ch, CURLOPT_FAILONERROR,1);
                curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
                curl_setopt($ch, CURLOPT_TIMEOUT, 15);
                $result = curl_exec($ch);          
                curl_close($ch);
                return $result;
            }
            foreach( $query as $kontrol ){
                
                $xml = new SimpleXMLElement(xml_baglan($kontrol['xml_link']));
                if($xml->{$kontrol['agac']}){
                    foreach ($xml->{$kontrol['agac']} as $urun) {
     
                        $kategori_bol = explode('|', $kontrol['kategori_id']);
                        $baslik = $urun->{$kontrol['baslik']};
                        $kisa_aciklama = $urun->{$kontrol['kisa_aciklama']};
                        $stok_kodu = $urun->{$kontrol['stok_kodu']};
                        $stok = $urun->{$kontrol['stok']};
                        $marka = $urun->{$kontrol['marka_id']};
                        $gelis_fiyat = $urun->{$kontrol['gelis_fiyat']};
                        $piyasa_fiyat = $urun->{$kontrol['piyasa_fiyat']};
                        $fiyat = $urun->{$kontrol['fiyat']};
                        $kargo_fiyat = $urun->{$kontrol['kargo_fiyat']};
                        $kdv = $urun->{$kontrol['kdv']};
                        $aciklama = $urun->{$kontrol['aciklama']};
                        $kategori[0] = RecurseXMLkategori($urun,'',$kategori_bol[0],$urun_kontrol['dil']);
                        $kategori[1] = RecurseXMLkategori($urun,'',$kategori_bol[1],$urun_kontrol['dil']);
                        $kategori[2] = RecurseXMLkategori($urun,'',$kategori_bol[2],$urun_kontrol['dil']);
                        $kategori[3] = RecurseXMLkategori($urun,'',$kategori_bol[3],$urun_kontrol['dil']);
                        $resim[0] = $urun->{$kontrol['resim1']};
                        $resim[1] = $urun->{$kontrol['resim2']};
                        $resim[2] = $urun->{$kontrol['resim3']};
                        $resim[3] = $urun->{$kontrol['resim4']};
                        $resim[4] = $urun->{$kontrol['resim5']};
     
                        $kategori_sayisi = 3;
     
                        if(empty($kategori[0])){
                            if(!empty($kontrol['agac_kategori']) AND !empty($kontrol['agac_kategori_ayirac'])){
                                $agac_kategori_bol = explode($kontrol['agac_kategori_ayirac'],$urun->{$kontrol['agac_kategori']});
                                $kategori_sayisi = 0;
                                foreach($agac_kategori_bol as $akb){
                                    if(!empty($akb)){
                                        $kategori[$kategori_sayisi] = $akb;
                                        $kategori_sayisi++;
                                    }
                                }
                            }
                        }
     
     
     
                        if($fiyat == ''){ $fiyat = 0; }
                        if($piyasa_fiyat == ''){ $piyasa_fiyat = 0; }
                        if($stok == ''){ $stok = 0; }
     
                        if($baslik != '' AND $stok_kodu != ''){
                            $urun_kontrol = $db->query("SELECT id FROM urun WHERE dil = '{$kontrol['dil']}' AND stok_kodu = '{$stok_kodu}' LIMIT 1")->fetch(PDO::FETCH_ASSOC);
                            if($urun_kontrol){
                                $guncelle = $db->prepare("UPDATE urun SET fiyat = ?, piyasa_fiyat = ?, stok = ? WHERE stok_kodu = ? LIMIT 1");
                                $guncelle = $guncelle->execute(array($fiyat,$piyasa_fiyat,$stok,$stok_kodu));
     
                               $db->exec("DELETE FROM urun_varyant WHERE urun_id = '{$urun_kontrol['id']}'");
                               $db->exec("DELETE FROM urun_varyant_secenek WHERE urun_id = '{$urun_kontrol['id']}'");
                               $db->exec("DELETE FROM urun_varyant_secenek_fiyat_stok WHERE urun_id = '{$urun_kontrol['id']}'");
                                RecurseXML($urun,'',$kontrol['varyant_baslik'].'|'.$kontrol['alt_varyant_baslik'].'|'.$kontrol['alt_varyant_stok'].'|'.$kontrol['alt_varyant_fiyat'],$urun_kontrol['id']);
                            }else{
     
                                $kategori_id = 0;
                                for ($i = 0; $i <= $kategori_sayisi; $i++) {
                                    if($kategori[$i] != ''){
                                        $guncel_kategori = $kategori[$i];
                                        $kategori_kontrol = $db->query("SELECT id FROM kategori WHERE dil = '{$kontrol['dil']}' AND baslik = '{$guncel_kategori}' LIMIT 1")->fetch(PDO::FETCH_ASSOC);
                                        if($kategori_kontrol){
                                            $kategori_id = $kategori_kontrol['id'];
                                        }else{
                                            $ekle = $db->prepare("INSERT INTO kategori SET dil = ?, baslik = ?, link = ?, kisa_aciklama = ?, aciklama = ?, popup_resim = ?, popup_link = ?, aktif = ?, sira = ?, ust_kategori = ?, ust_menude_goster = ?, alt_menude_goster = ?");
                                            $ekle = $ekle->execute(array($kontrol['dil'],$guncel_kategori,sef($guncel_kategori),$guncel_kategori,'','','',1,999,$kategori_id,0,0));
                                            $kategori_id = $db->lastInsertId();
                                        }
                                    }
                                }
     
                                $marka_id = 0;
                                if($marka != ''){
                                    $marka_kontrol = $db->query("SELECT * FROM marka WHERE dil = '{$kontrol['dil']}' AND baslik = '{$marka}' LIMIT 1")->fetch(PDO::FETCH_ASSOC);
                                    if($marka_kontrol){
                                        $marka_id = $marka_kontrol['id'];
                                    }else{
                                        $ekle = $db->prepare("INSERT INTO marka SET dil = ?, baslik = ?, resim = ?");
                                        $ekle = $ekle->execute(array($kontrol['dil'],$marka,'bos.png'));
                                        $marka_id = $db->lastInsertId();
                                    }
                                }
     
                                if($kisa_aciklama == ''){ $kisa_aciklama = $baslik; }
                                if($kargo_fiyat == ''){ $kargo_fiyat = 0; }
                                if($kdv == ''){ $kdv = 18; }
     
                                $ekle = $db->prepare("INSERT INTO urun SET dil = ?, baslik = ?, link = ?, kisa_aciklama = ?, stok_kodu = ?, stok = ?, marka_id = ?, gelis_fiyat = ?, piyasa_fiyat = ?, fiyat = ?, kargo_fiyat = ?, kdv = ?, aciklama = ?, kur_tipi = ?, goruntulenme = ?, durum = ?, kategori_id = ?, etiket = ?");
                                $ekle = $ekle->execute(array($kontrol['dil'],$baslik,sef($baslik),$kisa_aciklama,$stok_kodu,$stok,$marka_id,$gelis_fiyat,$piyasa_fiyat,$fiyat,$kargo_fiyat,$kdv,$aciklama,$kontrol['kur_tipi'],0,1,$kategori_id,0));
     
                                $urun_id = $db->lastInsertId();
                                RecurseXMLimg($urun,'',$kontrol['resim1'].'|'.$kontrol['resim2'].'|'.$kontrol['resim3'].'|'.$kontrol['resim4'].'|'.$kontrol['resim5'],$urun_id);
     
                                RecurseXML($urun,'',$kontrol['varyant_baslik'].'|'.$kontrol['alt_varyant_baslik'].'|'.$kontrol['alt_varyant_stok'].'|'.$kontrol['alt_varyant_fiyat'],$urun_id);
     
                            }
                        }
                    }
                }else{
                    echo '<b>İçeriğe ulaşılamadı.</b>';
                }
            }
        }else{
            die('<meta http-equiv="refresh" content="0;URL='.$site.'">');
        }
    }else{
        die('<meta http-equiv="refresh" content="0;URL='.$site.'">');
    }
    ?>
  • 27-08-2023, 12:16:45
    #2
    Hocam baştan temiz bir şekilde yazdırmak isterseniz iletişime geçebilirsiniz.
  • 27-08-2023, 12:18:45
    #3
    canyucel adlı üyeden alıntı: mesajı görüntüle
    Hocam baştan temiz bir şekilde yazdırmak isterseniz iletişime geçebilirsiniz.
    Hocam maalesef sıfırdan yazdıracak kadar bütçem yok başka bir işte inş.
  • 28-08-2023, 08:54:38
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Hala aktifse porfildeki whatsapptan iletişime geçebilirsiniz