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.
Hangi kullanıcıyı aradığını belirtmezsen nasıl bulmasını bekleyebilirsin?
"SELECT * FROM users as u
INNER JOIN taskfile as tf
ON u.personelId = tf.tasksFileUserID
WHERE tf.tasksFileTaskID = $taskID AND tf.tasksFileUserID = $userID
ORDER BY tf.date DESC"
Kodların tamamını görmediğim için net bir yorum yapamam tahmin yürüterek bir örnek hazırladım.
Görseldeki gibi açılır kutu boş geliyorsa $urunsor
değişkeni aşağıdaki gibi bir fonksiyonun içinde olursa değişkene ulaşılamadığı için option etiketleri oluşmayacaktır.
Select etiketini incele bir php uyarısı var mı kontrol et. Tahmin ettiğim gibi bir durumsa ikinci örnekteki gibi bir uyarı alırsın.
<body>
<?php
function iller() {
$iller = [
[
"key"=> "06",
"text"=> "Ankara"
],
[
"key"=> "08",
"text"=> "Artvin"
],
[
"key"=> "35",
"text"=> "İzmir"
]
];
?>
<div>
<select>
<option></option>
<?php foreach ($iller as $val): ?>
<option value="<?=$val['key']?>"><?=$val['text']?></option>
<?php endforeach ?>
</select>
</div>
<?php
};
iller();
?>
<script>
$("div").append(`<select>
<option></option>
<?php foreach ($iller as $val): ?>
<option value="<?=$val['key']?>"><?=$val['text']?></option>
<?php endforeach ?>
</select>`)
</script>
</body>
Alınan uyarı:
<select>
<option></option>
Notice: Undefined variable: degisken in D:laragonwwwreamworksZirveExp est.php on line 44
Warning: Invalid argument supplied for foreach() in D:laragonwwwreamworksZirveExp est.php on line 44
</select>
<script>
$("div").append(`<select>
<option></option>
<br />
<b>Notice</b>: Undefined variable: degisken in <b>D:\laragon\www\freamworks\ZirveExp\test.php</b> on line <b>44</b><br />
<br />
<b>Warning</b>: Invalid argument supplied for foreach() in <b>D:\laragon\www\freamworks\ZirveExp\test.php</b> on line <b>44</b><br />
</select>`)
</script>
Tayfun Hoca'nın yaptığı nasıl bir şeydir bilmiyorum.
Bir Php server kullanıyorsan aşağıdaki gibi jquery dahil ederek 1. veya 2. yöntemi kullanabilirsin.
Tek olay input etiketini yakalamak ve "keyup" ile dinlemek.
<input type="text" onkeyup="fn(this)" id="input">
<script>
// etiket içinde onkeyup kullanırsan
function fn(e) {
$.post("post.php", {postValue = e.value}, (resp)=> {
console.log(resp)
},"json") // "json" belirtilmezse varsayılan olarak text gelir, "xml", "html", "json", "text"
}
// Jquery
$("#input").on("keyup", (e)=>{
$.post("post.php", {postValue = e.target.value}, (resp)=> {
console.log(resp)
},"json") // "json" belirtilmezse varsayılan olarak text gelir, "xml", "html", "json", "text"
})
</script>
https://www.youtube.com/watch?v=JeVkrHBPVgg&ab_channel=Divinector
bu videoda gördüğüm kadarı ile strings: []
nesneli dizi kabul etmiyor.
Ama php tarafından dönen değerler yanlış yorumlamadı isem dizi içinde obje olarak dönüyor.
// Php tarafından gelen json
[
{
"icerik": "İçerik 1"
},
{
"icerik": "İçerik 2"
}
]
Olması gereken
// Eklentinin okumak istediği Json
["İçerik 1", "İçerik 2"]
Php tarafını bu şekilde değiştir => $data[] = $gelsin['icerik']
Javascript tarafını da bu şekilde değiştir => strings: response
Network'a bak istek attığın sırada Payload içeriğinde gorsel=
anahtarı var mı kontrol et.
Ayrıca $uzanti = explode(".", $_FILES[gorsel][name]);
bu kodda tırnakları unutmuşsun.
<input type="text" onkeyup="fn(this)" id="input">
<script>
// etiket içinde onkeyup kullanırsan
function fn(e) {
if(e.value.length == 13) {
// İşlem
}
}
// Veya js ile tetikleyici atayabilirsin. Eğer jquery kullanıyorsan ikincisini de tercih edebilirsin.
document.querySelector("#input").addEventListener("keyup",(e)=>{
if(e.target.value.length == 13) {
// İşlem
}
})
// Jquery
$("#input").on("keyup", (e)=>{
if(e.target.value.length == 13) {
// İşlem
}
})
</script>
Bu sorguyu phpmyadmin ile çalıştırıp kontrol etmeni öneririm hatanı gördüğün zaman daha verimli olur bence.
SUM, COUNT
ile diğer sütunları kullandığın zaman GROUP BY
sonrasına SUM, COUNT
dışındaki diğer sütunları da eklemen gerekir.
JOIN
kullanıyorsan birleştirdiğin ikinci tablonun da sütunlarını eklemelisin.
SELECT SUM(stok_miktar) as stok_miktar,
stok_urun,
stok_nerede,
urunler.urun_ad,
urunler.urun_renk FROM stok
JOIN urunler ON urunler.urun_id=stok.stok_urun
GROUP BY stok_urun, stok_nerede, urunler.urun_ad, urunler.urun_renk
Resimdeki değerleri ele alarak yorumlarsak.
Karşılaştırmalar sırasıyla
durum, başlangıç, bitiş
Yanlış, Doğru, Yanlış
Doğru, Doğru, Yanlış
Doğru, Doğru, Yanlış
Doğru, Doğru, Yanlış
Doğru, Doğru, Yanlış
And kullandığın için hepsinin doğru olması gerekiyor.