edit: 2 kere aynı mesaji gönderdiği için site, bu mesajı düzenledim.
en basit haliyle sql sorgunda where kısmına o konunun eşit olmayanlarına erişmek istediğini söyleyebilirsin. dizi ise o konunun değerine sahip anahtarı çıkartabilirsin. kısaca nasıl listeliyorsan != demen yeterli.
tam sınıf yazacaktım, ama dosyada önceden tanımlanmış ve nereden geldiği belli olmayan bazı değişkenler vardı bende kaba taslak aklımdakini örnekledim. print_r ile bi çıktı alsaydın muhtemelen tam çalışır birde örnek verebilirdim, birde $Json gibi dosyada belirtilmemiş değişkenlerin nereden geldiği net olsaydı.
class getir {
public function MainArr($val){
$productList = array();
$productIdList = array();
/*
burada üç tane iç içe döngü var normalde print_r ile çıktı versen ona göre döngü oluşturabilirdim, döngüyü sen oluşturursun artık
*/
foreach($val as $v){
$productList[] = $val;
$productIdList[] = [
"id" => $val["id"],
"status" => $val["status"],
"price" => $val["price"]
];
}
return array ('list' => $productList, "id" => $productIdList);
}
public function Check($val){
/* buraya son döngüde gerçekleşen koşullar için bir desen oluştur
bu tek koşulu gerektiği kadar çoğalt
*/
return $val["status"] == "true" ? 100 : 200;
}
public function RetrunStat(){
foreach($this->MainArr($value)["id"] as $val){
$val = $this->Check($degisken);
}
}
}
array_push($productList, $val);
yukarıdaki kullanımı aşağıdakiyle değiştirmeni tavsiye ederim.
$productList[] = $val;
$productList zaten boş bir array, push kullanarak ekstradan method döndürüyorsun hemde dizi boyunca, gerek yok. bu kullanım aynı sonucu daha az performans harcayarak verir. en azından ben öyle düşünüyorum. ayrıca tekrar dönüp kodlara bakınca, ikinci döngüde ilk aldığın döngüden yeni bir döngü türetip değer atadığını gördüm. verimsiz bir kullanım. bunu iyice düşünüp ilk döngüde hallet. ikinci döngüyü sil ve yukarıdaki verdiğim örnek ile ilk döngüde atama yap, indis sayıları zaten eşit. muhtemelen ikinci döngüyü ortadan kaldırıp aynı sonucu ilk döngüde hallettiğinde, diğerleri içinde iyileştirmeler yapabilecek yeni bir bakış açısı edinebilirsin..
$productList[] = $val;
$productIdList[] = [
"id" => $val["id"],
"status" => $val["status"],
"price" => $val["price"]
];
nereden ne değer geliyor benim için belli değil ama, ikinci döngüyü ilk döngüden türettiğin için bunun çalışması gerektiğini sanıyorum.
bu ilk iki döngüden sonraki döngüler içerisinde ise çok fazla koşul ve iç içe döngü mevcut. eğer mümkünse koşula uymayan dizileri döngüye sokmadan önce çıkart ve koşul yazmaktan kurtul.
evet gerekiyor. ancak get'in post'dan farkı illa parametre olması gerekmez. burayı ele alalım, prototurk.com sayfasını ziyaret ettiğinde bir get yani istekte bulunmuş olursun. bunu yaparken bir veri göndermen gerekmiyor yani. hatana gelirsek, çözümü bulmana rağmen tekrar hata değinmek istiyorum kafa şişirmeyeceksem eğer. kodun ne yaptığını bilmekten ziyade, nasıl çalıştığını bilmek daha iyidir.
site.com adresinde bir load çalıştırdın ve site.com/sayfa.php adresinden veri aldın. buradan ne alabilirsin? sadece istemci tarafından gözükenleri alabilirsin yani verilen yanıtı. sen ise, orada sunucu koşulu oluşturup dahil etmeye çalışıyorsun. php de bulunan include gibi, ama bu mümkün değil. bu yüzden post koşulun çalışmadı. çünkü site.com'un index'inde sunucu da öyle bir koşul hiç olmadı istemci tarafından dahil etmek istediğin için.
yapıya gelirsek eğer, ilk koşulun admin onayının sıfıra eşit olması, örneğin bunu basit bir ajax işlemi ile yapıyor olsaydım, post veya get isteğinde bulunurdum ve sadece admin_onay değerini alırdım, 0 ise javascript ile formu gösterebilir veya sıfırdan oluşturabilirdim. kendini zorlamanı tavsiye ederim. acil bir iş değil ise eğer yazdıktan sonra çalıştır sonra durup düşün nasıl daha sistemli ve iyi olur diye. bende senin gibi kod yazıyordum, samimi söylüyorum bu şekilde yazmaya devam edersen ilerleme katedemezsin.
basit bir örnek, üstelik index dosyası php bile değil;
index.html
<html>
<head>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<div class="card-body">
<div class="table-responsive">
<div id="listeleme">
<form style="display:none">
<div class="col-md-12">
<button type="button" name="sipal" class="btn btn-primary">Onayla</button>
</div>
</form>
</div>
</div>
</div>
</body>
<script>
$(document).ready(function() {
$.ajax({
url : 'test.php',
type: 'GET',
data: null
}).done(function (data){
if(data == 0){
$('form').show()
}else{
$('#listeleme').text('Yetkilendirme Başarısız!');
}
});
$('[name="sipal"]').click(function(){
$.ajax({
url : 'test.php',
type: 'POST',
data: "sipal=true"
}).done(function (data){
$('form').hide();
$('#listeleme').append(data);
});
});
});
</script>
</html>
post dosyası olan test.php
$row['admin_onay'] = 0;
$islem = array(
0 => ["siparis_id" => 1, "kurye" => "Burak"],
1 => ["siparis_id" => 22, "kurye" => "Ali"],
2 => ["siparis_id" => 35, "kurye" => "Ali"],
3 => ["siparis_id" => 47, "kurye" => "Burak"]
);
if(!isset($_POST)){
echo $row['admin_onay'];
}else{
if(isset($_POST['sipal'])){
foreach($islem as $key => $val){
echo "Siparis numarası: ".$val["siparis_id"]." Kurye: ".$val["kurye"]."<br>";
}
}
}
mantiksal acidan hatali. calismamasi normal. goreceli bir adresden form verisi alarak, static bir adres de post isteginde bulunuyorsun. ajax kullan, mumkunse json degerler ile geleb sonuclari yazdir. daha saglikli. veya ajax kullan ve yine html deger dondur.
mobilim geri donup duzenleyemedim. kisaca ajax kullan. kullanmayacaksanda if(post) kullanimini ajax verilerede degil onu dahil ettigin sayfaya yaz
bağlantını aynı tut. normalde tablo kolonlarının adını yazarak çağrıyorsun, bunda da "as" diyerek tabloyu o an için soyut olarak anlamdırıyorsun veya adlandırıyorsun neyse artık.
SELECT
@netkar:=ROUND(((satis - alis) - (satis / 100 * komisyon)), 2) as kar
FROM `bos`
bunu al pdo da sql işlemi yazdığın yer ile değiştir. sonucu ise ["kar"] olarak al, bu kadar. aynısı yani.
SELECT
@pos_komisyon:=ROUND((satis / 100 * komisyon),2),
@kar:=ROUND((satis - alis),2),
@netkar:=ROUND(((satis - alis) - (satis / 100 * komisyon)), 2)
FROM `bos`
sadece son sonucu istiyorsan bunu kullanman daha mantıklı
SELECT
@netkar:=ROUND(((satis - alis) - (satis / 100 * komisyon)), 2) as kar
FROM `bos`
evet ama bu yanlış tıklandığı için kalıyor orada. sadece hover olarak ayarla veya tıklandıktan sonra zaman aşımı ayarla. https://getbootstrap.com/docs/5.0/components/tooltips/ bu gerekli döküman. sayfanın en altında özelleştirmen için örnekte mevcut.
ihtiyacin olan komutlari biliyorsun, analitik dusun. simdiki zamani olusturabiliyorsun, ilerisi icin tarihde olusturabiliyorsun. ee simdiki zamani istedigin zamanla degistirmene engel olan ne?