v2.5.2
Giriş yap

PHP XML while döngüsüyle işlem

nyc
455 defa görüntülendi

Merhaba, şöyle bir xml dosyam var <cbc:Name></cbc:Name> while döngüsüne aldım başarıyla tüm bilgileri aldı yalnız bana alttaki TL KDV bölümüde gerekiyor kolon kolon ayırıp aynı tabloda birleştiricem

PHP KODU bu şekilde

    function ara($bas, $son, $yazi)
{
    @preg_match_all('/' . preg_quote($bas, '/') .
    '(.*?)'. preg_quote($son, '/').'/i', $yazi, $m);
    return @$m[1];
}
if(isset($_FILES['dosya'])){
   $hata = $_FILES['dosya']['error'];
   if($hata != 0) {
      echo 'Yüklenirken bir hata gerçekleşmiş.';
   } else {
      $boyut = $_FILES['dosya']['size'];
      if($boyut > (1024*1024*3)){
         echo 'Dosya 3MB den büyük olamaz.';
      } else {
         
         $isim = $_FILES['dosya']['name'];
         $uzanti = explode('.', $isim);
         $uzanti = $uzanti[count($uzanti)-1];
         
            $dosya = $_FILES['dosya']['tmp_name'];
            copy($dosya, 'dosyalar/' . $_FILES['dosya']['name']);
			
            echo '<br>Dosyanız upload edildi!';
			$dosya = $dosya;
			$icerik = file_get_contents($dosya);
			$unvan = ara('<cbc:Name>', '</cbc:Name>', $icerik);
			$adres = ara('<cbc:StreetName>', '</cbc:StreetName>', $icerik);
			$sirketMahalle = ara('<cbc:CitySubdivisionName>', '</cbc:CitySubdivisionName>', $icerik);
			$sirketSehir = ara('<cbc:CityName>', '</cbc:CityName>', $icerik);
			$faturaNo = ara('<cbc:ID>', '</cbc:ID>', $icerik);
			$vergiDairesi = ara('<cac:TaxScheme><cbc:Name>', '</cbc:Name></cac:TaxScheme>', $icerik);
			$vergiNo = ara('<cbc:ID schemeID="VKN">', '</cbc:ID>', $icerik);
			$faturaAciklama = ara('<cac:Item>', '</cac:Item>', $icerik);
			$urunTutar = ara('<cac:Price>', '</cac:Price>', $icerik);
			$toplamTutar = ara('<cbc:PriceAmount currencyID="TRY">', '</cbc:PriceAmount>', $icerik);

			//echo str_replace('<', '&lt;', $icerik);
			echo 
			'<br><br><br><b>Şirket Ünvanı:</b> ' . $unvan[0]
			.'<br><b>Şirket Adres:</b> ' . $adres[0]
			.'<br><b>Şirket Mahalle:</b> ' . $sirketMahalle[0]
			.'<br><b>Şirket Şehir:</b> ' . $sirketSehir[0]
			.'<br><b>Fatura Numarası: </b>' . $faturaNo[0]
			.'<br><b>Vergi Dairesi: </b>' . $vergiDairesi[0]
			.'<br><b>Vergi Numarası: </b>' . $vergiNo[0]
			.'<br><b>Fatura Açıklaması: </b>' . $faturaAciklama[0]
			.'<br><br><b>Fatura Toplam Tutar: </b>' . $toplamTutar[0]. " TL";
			
			foreach ($faturaAciklama as $ftraciklama){
				echo "<br>".$ftraciklama."<br>";
				
				
				
			}
			
					
				  }
			   }
			}

foreach ($faturaAciklama as $ftraciklama){
echo "<br>".$ftraciklama."<br>";

kdv bölümünü ve sayıları örnek "ürün açıklaması, fiyat, kdv" şeklinde yan yana sıralamak için ne yapabilirim

nyc
896 gün önce

** Kendimce birşeyler yaptım şuan istediğim gibi herşeyi alabiliyorum yalnız bir sorun daha çıktı oda şöyle xml dosyamda aynı isimde olan kodlar var aşağıya örnek koyuyorum ben mesela sadece
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="TRY">8660.41</cbc:LineExtensionAmount>

cac:LegalMonetaryTotal altındaki cbc:LineExtensionAmount içindeki bilgiyi almak istiyorum buna nasıl erişim sağlayabilirim sadece cbc:LineExtensionAmount bunu yazdığımda tüm xml deki bunla aynı isimdeki şeyleri getiriyor ben bunu istemiyorum **

    <html>
<head>
<title>XML WRİTER</title>
</head>
<body>

<form action="" method="post" enctype="multipart/form-data">
   <input type="file" name="dosya" />
   <input type="submit" value="Gönder" />
</form>

</body>
</html>

<?php

function ara($bas, $son, $yazi)
{
    @preg_match_all('/' . preg_quote($bas, '/') .
    '(.*?)'. preg_quote($son, '/').'/i', $yazi, $m);
    return @$m[1];
}
if(isset($_FILES['dosya'])){
   $hata = $_FILES['dosya']['error'];
   if($hata != 0) {
      echo 'Yüklenirken bir hata gerçekleşmiş.';
   } else {
      $boyut = $_FILES['dosya']['size'];
      if($boyut > (1024*1024*3)){
         echo 'Dosya 3MB den büyük olamaz.';
      } else {
         
         $isim = $_FILES['dosya']['name'];
         $uzanti = explode('.', $isim);
         $uzanti = $uzanti[count($uzanti)-1];
         
            $dosya = $_FILES['dosya']['tmp_name'];
            copy($dosya, 'dosyalar/' . $_FILES['dosya']['name']);
			
            echo '<br>Dosyanız upload edildi!';
			$dosya = $dosya;
			$icerik = file_get_contents($dosya);
			$tumicerik = ara('Invoice', '</Invoice>', $icerik);
			$unvan = ara('<cbc:Name>', '</cbc:Name>', $icerik);
			$adres = ara('<cbc:StreetName>', '</cbc:StreetName>', $icerik);
			$sirketMahalle = ara('<cbc:CitySubdivisionName>', '</cbc:CitySubdivisionName>', $icerik);
			$sirketSehir = ara('<cbc:CityName>', '</cbc:CityName>', $icerik);
			$faturaNo = ara('<cbc:ID>', '</cbc:ID>', $icerik);
			$vergiDairesi = ara('<cac:TaxScheme><cbc:Name>', '</cbc:Name></cac:TaxScheme>', $icerik);
			$vergiNo = ara('<cbc:ID schemeID="VKN">', '</cbc:ID>', $icerik);
			$faturaAciklama = ara('<cac:Item>', '</cac:Item>', $icerik);
			$urunTutar = ara('<cac:Price>', '</cac:Price>', $icerik);
			$urunKilo = ara('<cbc:InvoicedQuantity unitCode="KGM">', '</cbc:InvoicedQuantity>', $icerik);
			$toplamTutar = ara('<cbc:PriceAmount currencyID="TRY">', '</cbc:PriceAmount>', $icerik);
			
			
			//echo str_replace('<', '&lt;', $icerik);
			echo 
			'<br><br><br><b>Şirket Ünvanı:</b> ' . $unvan[0]
			.'<br><b>Şirket Adres:</b> ' . $adres[0]
			.'<br><b>Şirket Mahalle:</b> ' . $sirketMahalle[0]
			.'<br><b>Şirket Şehir:</b> ' . $sirketSehir[0]
			.'<br><b>Fatura Numarası: </b>' . $faturaNo[0]
			.'<br><b>Vergi Dairesi: </b>' . $vergiDairesi[0]
			.'<br><b>Vergi Numarası: </b>' . $vergiNo[0]
			.'<br><b>Fatura Toplam Tutar: </b>' . $toplamTutar[0]. " TL<br><br>";
			
			$satir=count($faturaAciklama);
			foreach ($tumicerik as $tumIcerikListele){
				for($i=0;$i<=$satir-1;$i++){
				echo "<b>".$i.". Ürün: </b>"."<br><b>Açıklama: </b>".$tumIcerikListele[0].$faturaAciklama[$i].
				"<br><b>Kilo: </b>".$tumIcerikListele[0].$urunKilo[$i].
				"<br><b>Tutar: </b> ".$tumIcerikListele[0].$urunTutar[$i]."<br>";
				
				}
					
			}
			
					
				  }
			   }
			}
?>