Herkese ilgisi ve yardımları için teşekkür ederim.
Gökhan Kandemir'in videolarından izlediğim kadarı ile kavramaya çalışıyorum.
Html sayfasına dahil ederek yapmak istiyordum.
Şimdi web sitesine baktığım da benim kullandığımdan farklı bir kullanım mevcut.
Sizin önerilerinize benziyor. Ama jsfiddle örneklerine baktım orada denememde çalışmadı ya da beceremedim.
Örnek: https://jsfiddle.net/TrSherlock/msayL02n/8/
Sanırsam bir şeyi gözden kaçırıyorum?
Çok hakim olmadığım bir konu.
For ve bir şey değiştiğinde her şeyin değişmesi hoşuma gitmişti.
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js"></script>
<script src="https://cdn.tailwindcss.com"></script>
<script src="earsivXML.js"></script>
<div id="ebelge">
<div class="h-[100vh] bg-gradient-to-b from-[#1fa2ff] to-[#12d8fa] to-[#a6ffcb]">
<div>
<input type="text" v-model="invoices?.[0]?.evrakNo">
<input type="file" multiple accept=".xml" @change="parseXML" />
</div>
</div>
</div>
<script>
const newVue = new Vue({
el: '#ebelge',
data: {
index: 1,
invoices: [
{
evrakNo: "1"
}
]
},
methods: {
parseXML(e) {
this.invoices = [];
const $xmlFiles = e.target.files;
for (let i of $xmlFiles) {
$.get(
URL.createObjectURL(i),
(xml) => {
this.invoices.push($.fn.earsivXML(xml, i.name));
},
"xml"
);
}
}
}
})
</script>
Sorunu çözdüm süslü parantez içinde => data->{"anahtar"} gibi kullanırsan sorunun çözülür.
Kaynak: https://www.php.net/manual/en/class.stdclass.php
<?php
error_reporting(0);
$url = "http://hasanadiguzel.com.tr/api/akaryakit/sehir=ANKARA";
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
$wisex = json_decode( curl_exec( $ch ) );
$name = $wisex->data->{"17,62"}->{"Kursunsuz_95(Excellium95)_TL/lt"};
echo $name;
?>
Bu nasıl çözülür bilmiyorum. İlgimi çekti araştıracağım. İşini görülmesi açısından şimdilik aşağıdaki gibi kullanabilirsin.
<?php
error_reporting(0);
$url = "http://hasanadiguzel.com.tr/api/akaryakit/sehir=ANKARA";
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
$wisex = json_decode( curl_exec( $ch ), 1 );
// İkinci parametre true olursa diziye dönüştürür. Boşsa veya false olursa ilişkisel nesneye dönüştürülür.
print_r($wisex["data"]["17,62"]["Motorin(Eurodiesel)_TL/lt"]);
?>
@h4ckdr0 kardeşim sen soruyu yanlış anlamışsın etiketten etikete veri aktarma değil.
Bir web sayfasından herhangi bir veriyi işletim sisteminin belleğine alıp başka uygulamalar kullanılabilir hale getirmek.
<?php
//explode ile parçalamak için string olmalı.
//number_format ile yuvarlayıp kullanırsan string olarak çıktı veriyor.
//$number2 değişkeninde kullandığım yöntemi kullanırsan string yapmana gerek yok.
$number1 = (string)55555555.46;
$number1 = explode(".", $number1);
if (strlen($number1[0])>9 || strlen($number1[1])>2) {
echo "hata var"."<br>";
} else {
echo "hata yok"."<br>";
}
// iki basamklı hale getirirsen `strlen($number[1])>2` koşulunu kullanmana gerek yok.
$number2 = (string)5555555555.465;
$number2 = explode(".", number_format($number2, 2, '.', ''));
if (strlen($number2[0])>9) {
echo "hata var"."<br>";
} else {
echo "hata yok"."<br>";
}
Web sayfasındaki biçimlendirilmiş bir tabloyu seçip kopyalayıp, biçimlendirilmiş olarak Excel'e yapıştırmanın javascript ile yapılması.
- Sütun genişlikleri alınmıyor.
- Metin olarak saklanması istenen
tdetiketlerinin niteliğindetype="text"olması yeterli. - Sayı formatlarının da ülkemize göre ondalık değer "," olmalı. Tabloya işlenen veya arka planda oluşturulan bir tabloda sayılara dikkat edilmeli.
<table>
<style>
table {
border: solid 2px blue;
}
td {
border: solid 1px blue
}
tbody > tr:nth-child(odd){
background-color: #e8eef7;
}
tbody > tr:nth-child(even){
background-color: #ffffec
}
</style>
<thead>
<tr>
<th style="width:150pt">GmKod</th>
<th style="width:150pt">Tutar</th>
</tr>
</thead>
<tbody>
<tr>
<td type="text">600.001</td>
<td type="number">500,00</td>
</tr>
<tr>
<td type="text">391.018</td>
<td type="number">90,00</td>
</tr>
<tr>
<td type="text">600.001</td>
<td type="number">500,00</td>
</tr>
<tr>
<td type="text">391.018</td>
<td type="number">90,00</td>
</tr>
<tr>
<td type="text">600.001</td>
<td type="number">500,00</td>
</tr>
<tr>
<td type="text">391.018</td>
<td type="number">90,00</td>
</tr>
<tr>
<td type="text">600.001</td>
<td type="number">500,00</td>
</tr>
<tr>
<td type="text">391.018</td>
<td type="number">90,00</td>
</tr>
</tbody>
</table>
<button onclick="copy()">Koyala</button>
function copy(){
let $table = document.querySelector("table")
$tableTxt = $table.outerHTML.replaceAll(/\n/g, "");
$csTxt = $tableTxt.replaceAll(/(?<=<td type="text">)(.*?)(?=<.*\/.+.?>)/g,"=\"$1\"")
// console.log($csTxt);
const type = "text/html";
const blob = new Blob([$csTxt], { type });
const data = [new ClipboardItem({ [type]: blob })];
navigator.clipboard.write(data).then(
() => {
console.log("Başarılı");
},
() => {
console.log("error");
}
);
}
Bazen bana da lazım oluyor. Her zaman kullanmadığım için unutuyorum.
Hem kopyalama hem de yapıştırma.
<div>
<label for="">Kopyalanan Alan</label>
<input type="text" id="copyInput">
<button id="copy">Kopyala</button>
</div>
<div>
<label for="">Yapıştırılacak Alan</label>
<input type="text" id="pasteInput">
<button id="paste">Yapıştır</button>
</div>
<script>
// Kopyalama
$("#copy").on("click", ()=>{
navigator.clipboard.writeText($("#copyInput").val())
})
// Yapıştırma !!!İlk çalıştığı zaman kullanıcı izni gereklidir.
$("#paste").on("click", ()=>{
navigator.clipboard.readText().then(clipText => $("#pasteInput").val(clipText))
})
</script>
Eğer PDF dosyasındaki değerler kopyalanabiliyorsa örneğin banka ekstresi regex kullanarak parçalayabilrisin.
Gökhan Hocanın regex dersi var onu izleyebilirsin ben örnek Yapıkredi Bankası Hesap Cüzdanı için hazırlamıştım inceleyebilrisin.
<textarea>
04-01-2021 PO SH/20201231/000000001950358/N016 K P … -0,70 1.397,60 20210105-074143-664972/01
04-01-2021 PO SH/20210101/000000001950358/N016 K P … 52,10 1.449,70 20210105-074143-666989/02
04-01-2021 PO SH/20210101/000000001950358/N016 K P … -0,92 1.448,78 20210105-074143-669699/01
04-01-2021 PO SH/20210103/000000001950358/N016 K P … 18,50 1.467,28 20210105-074143-672789/02
04-01-2021 PO SH/20210103/000000001950358/N016 K P … -0,33 1.466,95 20210105-074143-675346/01
04-01-2021 PO SH/20210104/000000001950358/N016 K P … 104,00 1.570,95 20210105-074143-677644/02
</textarea>
<button onclick="parcala()">Parçala ve Kopyala</button>
<script>
function parcala(){
let newText = $("textarea").val().split("\n");
let regex = /(?<Tarih>\d+.\d+.\d+) (?<=\d\d.\d\d.\d{4} )(?<Aciklama>.+) (?=\-?\d+.?\d*,\d+ \-?\d+.?\d*,\d+)(?<Tutar>\-?\d+.?\d*,\d+) (?<Bakiye>\-?\d+.?\d*,\d+)/gi;
let excel = "Tarih\tAçıklama\tTutar\tBakiye\n";
for (let val_ of newText) {
// let row = regex.exec(newText[val_]);
let row = val_.split(regex)
excel += `row[1]\trow[2]\trow[3]\row[4]\n`
}
navigation.clipboard.writeText(excel)
}
</script>
Kardeşim sen karşılaştırmayı döngüden sonra yapmışsın.
Varsayalım gelen bir veri var?
$say değerin 1 olacaktır. Bu durumda While değer gördüğü için döngüyü başlatacaktır.
if satırına geldiği zaman $say == false karşılaştırması da true olur fakat sen false istiyorsun eşleşmeyeceği için else çalışacaktır.
Açıklamana göre sen false yerine true yaptığın zaman şartı yerine getirdiğin için kod çalışacaktır fakat else çalışmayacaktır.
İlk if sonra While kullanırsan değer yoksa 0 olacağı için uyarıyı çıkar.
Değer varsa 1 olacağı için if çalışır.
<?php
$rowCount = 1; //true
if($rowCount) { // true olduğu için == true yazmana gerek yok.
While();
} else {
echo "içerik bulunamadı";
}
?>
Yüzde yüz emin değilim ama React kullanıldığı için olabilir.
Tayfun Hoca'nın React dersinde videonun süresi 04:52 olunca duraklat. Kod bloklarının #root ile başladığını göreceksin.