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.
Nasıl bir şey istediğini anlamadım. O zaman benim gibi bir dizi çıktısı sunarsan daha faydalı olabilir.
Benim testimde 1 kere uyarı çalıştı.
e-posta adresim: [email protected]
İşte iken aşağıdaki gibi yapmanı önerecektim fakat fırsat bulamadım. Aşağıdaki gibi bir düzen oluşturursan.
Tekrar post isteği atmana gerek kalmayacaktır. Yalnız test edemedim bazı yerleri yanlış yorumlamış olabilirim.
Bir hata ile karşılaşırsan yardımcı olurum.
<?php
require_once 'inc/db.php';
$urunsor = $db->query("SELECT * FROM urunler ORDER BY id DESC", PDO::FETCH_ASSOC);
foreach($urunsor as $cek) {
$urunler[] = $cek;
}
?>
<script>
let $urunler = <?= json_encode($urunler) ?> // Php ile gelen diziyi json'a çevirerek js değişkenine ata
tahminiCikti = [
{
"id": 1,
"ad": "Lacivert",
"barkod": "00000001",
"fiyat": 500.50
},
{
"id": 2,
"ad": "Yeşil",
"barkod": "00000002",
"fiyat": 300.50
}
];
</script>
<!-- Select etiketi -->
<body>
<select name="urun_id[]" class="form-select" data-search="on" required>
<option>Ürün Seçiniz</option>
<?php foreach ($urunler as $cek): ?>
<option value="<?=$cek['id']?>"><?=$cek['ad']?></option>
<?php endforeach ?>
</select>
</body>
<script>
// bir önceki cevabımda dizi olarak oluşan veri girişi etiketlerine ulaşmak için name=barkod[] tırnak içine almak gerekiyormuş köşeli parantez yoksa gerek yok.
$("select[name='urun_id[]']").on("change",(e)=>{
$urun = $urunler.find(f=> f.id == e.target.value)
$(e.target).parent().parent().find("input[name='barkod[]']").val($urun.barkod);
$(e.target).parent().parent().find("input[name='fiyat[]']").val($urun.fiyat);
})
</script>
Js ile Php değişkenlerini değiştiremeyeceğin için js ile post edip gelen değeri yakalaman gerekecek.
Daha önceki soruna verdiğim cevapta hatalı bir yorum yapmışım. O konuyu sonra açıklarım.
Php arka planda kodları çalıştırıp sonucu ekrana döker. Yüklenmiş sayfada tekrar php kodu çalıştıramazsın.
O yüzden ek bir php sayfasına js ile istek atman gerekiyor.
<script>
$(".select").on("change",(e)=>{
$.post("urunler.php", {urunid = 1}, (resp)=>{
$(e.target).parent().parent().find("input[name=barkod]").val(resp.barkod);
$(e.target).parent().parent().find("input[name=fiyat]").val(resp.fiyat);
})
})
</script>
<?php
$urun = $db->query("SELECT barkod, fiyat FROM urunlar WHERE id=$_POST[urunid]", PDO::FETCH_ASSOC);
// başka bilgi istemiyrosan sadece barkod, ve fiyat bilgisini sorgula
foreach($urun as $cek) {
echo json_encode($cek); // {"bakrod": "00000000", "fiyat": "350"} benzeri çıktı gelecek
}
?>
Ben Pdo kullanan birisi değilim algılamam zaman aldı biraz. :)
Script içinde foreach öncesi tekrar istek attırmak gerekiyor.
Veya mysqli_query()
kullanımında while ile döngüye soktuğumuzda her satırı tek tek yakalayıp bir değişkene atıyoruz. Örnek: $rows[] = $row
Sonra değişkeni istediğimiz yerde döngüye sokuyuyoruz.
Pdo ile çekilen veriler de aynı şekilde foreach ile her satır tek tek yakalanıyor ve anlık yazdırılıyor bir daha da kullanılmıyor.
// Bu pek sağlıklı değil her seferinde veritabanına istek atacak. Yeni değerlerin eklenme ihtimali varsa kullanılabilir.
<?php $urunsor = $db->query("SELECT * FROM urunler ORDER BY id DESC", PDO::FETCH_ASSOC);?>
<?php foreach ($urunsor as $cek): ?>
<option value="<?=$cek['id']?>"><?=$cek['ad']?></option>
<?php endforeach ?>
<?php>
foreach($urunsor as $cek) {
$urunler[] = $cek;
}
?>
<?php foreach ($urunler as $cek): ?>
<option value="<?=$cek['id']?>"><?=$cek['ad']?></option>
<?php endforeach ?>
Sanırım istediğin bu şekilde?
[
"userid1"=> ["resim1", "resim2", "resim3", "resim4"],
"userid2"=> ["resim1", "resim2", "resim3", "resim4"],
...,
...
]
While döngüsü içinde yaptığın zaman sanırsam işini görecektir.
$img[$row["tasksFileUserID"]][] = $row["tasksFileName"]
Not: Bir de bu sorguda userid ve resimler dışında başka bir şeye ihtiyacın yoksa
SELECT * FROM
şeklinde kullanmanı pek önermem. Hangi sütunlara ihtiyacın varsa onları belirt.
Daha az veri olması daha verimli olmasını sağlar.