Sorunu buldum belki başka arkadaşlarında işine yarar paylaşayım öncelikle php.ini içerisine girip pdo diye arama yapıp tüm pdo yazanların ; kaldırın ardından bağlantınızın aşağıdaki gibi olması gerekiyor:
<?php
$database_path = realpath("databaseadiniz");
$database = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=$database_path; Uid=; Pwd=;");
if($database){
echo "bağlantı var";
}else{
echo "bağlantı yok";
}
** 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('<', '<', $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>";
}
}
}
}
}
?>
Sana bir iki tane örnek yazıyım istediğini alıp kullanabilirsin
Txt Dosyası ile Sayaç Yapımı
Veritabanına gerek olmadan sadece sayac.txt belgesi oluşturarak yapabilirsin.
<?php
$sayac_degeri = file_get_contents('sayac.txt');
$sayac_degeri = $sayac_degeri+1;
file_put_contents('sayac.txt',$sayac_degeri);
echo 'Site Goruntulenme Sayisi: '.$sayac_degeri;
?>
illa veritabanıyla yapmak istiyorum diyorsan cookie ile saydırabilirsin
<?php
/*Cookie ile PHP Sayaç Yapımı*/
if (!$_COOKIE['makale__'.$makale['makale_id']]){
query('UPDATE makaleler SET makale_hit = makale_hit + 1 WHERE makale_id = \''.$makale['makale_id'].'\''); /*makale_hit değerini 1 arttır*/
setcookie('makale__'.$makale['makale_id'], '_', time()+86400);/*1gün boyunca çerez aktif olsun*/
}
?>
İP Adresine göre sayaç yapabilirsin
<?php
function sayac(){
global $db;
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
$kontrol = $db->prepare("SELECT * FROM counter");
$kontrol->execute(array());
$tablo_dolumu = $kontrol->rowCount();
if (!$tablo_dolumu) {
$query = $db->prepare("INSERT INTO counter SET
counter_sayac = ?");
$insert = $query->execute(array(
"0"
));
}
$sql = $db->prepare("SELECT * FROM counter_ip");
$sql->execute(array());
$row=$sql->fetch(PDO::FETCH_ASSOC);
if ($row['counterip_ip'] != $ip) {
$query = $db->prepare("INSERT INTO counter_ip SET
counterip_ip = ?");
$insert = $query->execute(array(
$ip
));
$sql = $db->prepare("SELECT * FROM counter WHERE counter_id =?");
$sql->execute(array('1'));
$row=$sql->fetch(PDO::FETCH_ASSOC);
$artir = $row['counter_sayac']+1;
$guncelle = $db->prepare("UPDATE counter SET counter_sayac=? WHERE counter_id = ?");
$guncelle->execute(array(
$artir,'1'));
} else {
$sql = $db->prepare("SELECT * FROM counter WHERE counter_id= ?");
$sql->execute(array(
'1'
));
$row=$sql->fetch(PDO::FETCH_ASSOC);
echo $row['counter_sayac'];
}
}
?>
<?php sayac(); ?>
Soruyu okuyunca biraz karışık yazdığımı fark ettim :) şöyle düzelteyim benim aslında istediğim şey şu döngü kullanarak xml dosyasındaki "ürünün açıklamasını" ara fiyatlarını alıp ekrana çıktısını almak istiyorum fakat uzun zamandan beridir kod yazmıyorum mantığını bir türlü oturtamadım.
örnek olarak şunun gibi bir çıktı almak istiyorum. döngüye sokmak istediğim alanlar: <cac:Item> , <cac:Price>