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.
jquery click()
methodu çalıştığı anda sayfada bulunan etiketlere tetikleyici atar.
Sonradan eklenenler etkilenmez click()
methodunun tekrar çalışması lazım.
Yalnız sadece son eklenen etiketin seçilip çalışması lazım.
Senin örneğini ele alalım, her yeni eklenen etiketten sonra click()
methodu tekrar çalışırsa eski etiketlere de ek tetikleyici
atanır.
Ve ne kadar kullanırsan o kadar artar.
Her tıkladığında kaç tane yeni etiket oluştu ise o kadar da fonksiyon çalışır.
Ya da @sefaaydin adlı arkadaşımızın önerisi gibi kullanman gerekiyor. Yine de ben iki tane örnek bırakıyorum. Belki ilerde lazım olur.
<button onclick="ekle(2)">Ekle</button>
<table id="table1">
<thead>
<tr>
<th>Programlama Dilleri</th>
<th>Sil</th>
</tr>
</thead>
<tbody>
<tr>
<td>Javascript</td>
<td><button type="button" onclick="sil(1)" data-id="1" class="delete">Sil</button></td>
</tr>
</tbody>
</table>
function ekle(id) {
// Jquery az kod çok iş mantığı ile iç içe kullanacağın etiketleri sadece açmak yetiyor. Kapatmana gerek yok bilgin olsun.
let tr = `<tr>`
tr += `<td>Php`
tr += `<td><button onclick="sil(${id})" data-id="${id}" type="button" class="delete">Sil`
$("#table1 > tbody").append(tr) // Satır eklenir
.find("tr") // Satırlar bulunur
.last() // son satır seçilir
.find(".delete") // son satırdaki .delete sınıfına sahip etiket bulunur
.on("click", (e)=>{ // tetikleyici ve fonksiyonu eklenir
console.log(e.target.dataset["id"])
console.log($(e.target).data("id")) // jquery kullanmak istersen
})
}
Diğer bir seçenek de etiket içinde eklemek.
function ekle(id) {
let tr = `<tr>`
tr += `<td>Php`
tr += `<td><button onclick="sil(${id})" data-id="${id}" type="button" class="delete">Sil`
$("#table1 > tbody").append(tr)
}
function sil(id) {
console.log(id)
}
Php'nin döndürmüş olduğu json çıktısı string olur. Değerlere ulaşman zor.
O yüzden gelen veriyi let newResp = JSON.parse(resp)
kullanıp değerlere ulaşacaksın.
Ya da dataType: "json"
eklemen gerekecek. Bu da seni yukarıdaki kodu yazmandan kurtarıyor.
dataType: "json"
olursa;
$.ajax({
dataType: "json",
success function(jsResp) {
// {"sonuc":"#30 numarali yasaklama veritabanina kaydedildi."} gelen sonuca göre
console.log(jsResp.sonuc) // veya
$("div.alert.alert-success").html(jsResp.sonuc) // bootstrapp uyarılarına yansımasını istiyorsan.
}
})
dataType: "json"
olmazsa;
$.ajax({
success function(resp) {
// {"sonuc":"#30 numarali yasaklama veritabanina kaydedildi."} gelen sonuca göre
let jsResp = JSON.parse(resp)
console.log(jsResp.sonuc) // veya
$("div.alert.alert-success").html(resp.sonuc) // bootstrapp uyarılarına yansımasını istiyorsan.
}
})
Sen nasıl kullanmak istiyorsun?