<?php
$stt = $db->query("SELECT uye_tipi, id, adsoyad FROM users WHERE durum = 'Aktif'")->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_ASSOC);
$convertValues = [
'UYE' => 'UYELER',
'BAYI' => 'BAYILER'
]; ?>
<select name="" id="">
<option value="">Lütfen seçiniz</option>
<?php
foreach ($stt as $k => $item) { ?>
<optgroup label="<?= $convertValues[$k] ?>">
<?php
foreach ($item as $value) { ?>
<option value="<?= $value['id'] ?>"><?= $value['adsoyad'] ?></option>
<?php } ?>
</optgroup>
<?php } ?>
</select>
PDO::FETCH_ASSOC
aslında zaten 2 demek oluyor, PDO sınıfından FETCH_ASSOC adlı sabite atanmış değer gibi düşün. Anlamlı olması için FETCH_ASSOC şeklinde yazılıyor. Ama ben yazması biraz uzun sürdüğü için direkt 2 olarak yazıyorum :) Mesela işe yarar bir diğer PDO::FETCH_COLUMN
değeri de 7.
$idList = [1,2,3];
$inQuery = implode(',', array_fill(0, count($idList), '?'));
$statement = $db->prepare("SELECT * FROM veriler WHERE veri_id IN ($inQuery)");
$statement->execute($idList);
$execute = $statement->fetchAll(2);
Öyle bir anlatmışsınız ki, tam PHPStorm kullanmalık iş, bahsettiğiniz hert şeyi eklenti olmadan PHPStorm yapıyor.
<form action="">
<input name="file1" type="file" id="file1" multiple>
<input name="file2" type="file" id="file2">
<button type="submit">Gönder</button>
</form>
$("form").on("submit", function (e) {
e.preventDefault()
let fd = new FormData()
$(this).find("input[type='file']").each(function () {
if (this.files.length) {
let name = $(this).attr("name")
name = $(this).attr('multiple') ? `${name}[]` : name
for (let i = 0; i < this.files.length; i++) {
fd.append(name, this.files[i])
}
}
})
$.ajax('ajax.php', {
method: "POST",
contentType: false,
processData: false,
data: fd
})
})
Olabildiğince kısa yaz
$select = in_array($value["id"],$test2) ? 'selected="selected"' : "";
Size naçizane bir tavsiyem, daha temiz bir kod yazmaya çalışın. Her şey birbirine girmiş durumda bu kodlarda. Bunun farkına ileride varacaksınız, bu karmaşık görüntü sizi de rahatsız edecek, ve keşke php kodlamaya youtube'daki o video serisinden başlamasaydım diyeceksiniz. Zira o izlediğiniz seri tam bir php katili serisi. Farklı kurslardan daha güzel algoritmalar geliştirecek şekilde öğrenmenizi tavsiye ediyorum.
Başkasını bilmem ama ben yukarıda yazdığınız kodlara bakınca hiç oturup inceleyesim gelmiyor.
<!doctype html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css">
<title>Document</title>
<style>
body {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.middle {
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
position: absolute;
}
.bar {
width: 10px;
height: 70px;
background: #fff;
display: inline-block;
transform-origin: bottom center;
border-top-right-radius: 20px;
border-top-left-radius: 20px;
/* box-shadow:5px 10px 20px inset rgba(255,23,25.2); */
animation: loader 1.2s linear infinite;
}
.bar1 {
animation-delay: 0.1s;
}
.bar2 {
animation-delay: 0.2s;
}
.bar3 {
animation-delay: 0.3s;
}
.bar4 {
animation-delay: 0.4s;
}
.bar5 {
animation-delay: 0.5s;
}
.bar6 {
animation-delay: 0.6s;
}
.bar7 {
animation-delay: 0.7s;
}
.bar8 {
animation-delay: 0.8s;
}
@keyframes loader {
0% {
transform: scaleY(0.1);
background: ;
}
50% {
transform: scaleY(1);
background: yellowgreen;
}
100% {
transform: scaleY(0.1);
background: transparent;
}
}
</style>
</head>
<body>
<button class="btn btn-success">Başlat</button>
Sunucu tarafında 3 saniye bekletip işlem sona erecek
<div id="success"></div>
<div id="fail"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
<script>
let loaderTemplate = `<div class="middle preloader">
<div class="bar bar1"></div>
<div class="bar bar2"></div>
<div class="bar bar3"></div>
<div class="bar bar4"></div>
<div class="bar bar5"></div>
<div class="bar bar6"></div>
<div class="bar bar7"></div>
<div class="bar bar8"></div>
</div>`
$("button").on("click", function () {
$.ajax('ajax.php', {
method: "POST",
data: {
ajax: true
},
beforeSend() {
$("body").prepend(loaderTemplate)
}
}).then(success => {
$("#success").html('Sonuç başarılı')
}, fail => {
$("#fail").html('Sonuç başarısız, sunucu hatası')
}).always(() => {
$(".preloader").remove()
})
})
</script>
</body>
</html>
ajax.php
if (isset($_POST['ajax'])) {
sleep(3);
}
preloader.fadeIn(300)
yazarak muhtemelen ilk ajax çağrısında dom da olmayan bir ögeyi seçtiğiniz için çalışmıyor. İkinci çağrıda bu yazdığım koddaki preloader değişkeninin nerede oluşturulduğu önemli.
Ayriyeten benim bildiğim preloader sayfada halihazırda bulunur ve duruma göre gösterilip gizlenir, neden sonradan ekleme ihtiyacı duyuyorsunuz?