• 25-08-2020, 01:30:56
    #1
    Merhabalar,

    Dizi döngüsü ile ilgili içinden çıkamadığım bir durum mevcut. Yardımcı olabilirseniz sevinirim.

    Ana kategori ve alt kategorilerden oluşan minimum 3 , maksimum 5 elemanlı bir dizi tanımladığımda, ilgili dizide sorguyu yaparken eleman sayısı fazla olanı önce sorgula, eğer bulamazsan bir azalt eleman sayısını sorgula şeklinde kodu nasıl yazabilirim acaba ?

    Örneğin

    <?php $kategori_dizisi=kategori_getir($urun_id)[3]; ?>
    değişkenini tanımlıyorum.
    daha sonra

     <li><a href="<?php echo ozel_url("ilan-ekle")."?kat=$kategori_dizisi"; ?>">Aynı Kategoride İlan Ver</a></li>
    şeklinde linkten en son ilan verilen kategoride ilan oluşturmak istiyorum.

    Ancak ;
    her ürün aynı alt kategorisine sahip olmadığından dolayı aşağıdaki şekilde yazdığımda ,

    <?php $kategori_dizisi=kategori_getir($urun_id)[3]; ?>
    0,1,2,3 numaralı elemanları kontrol edip eğer ilan 4 alt kategori varsa kod çalışıyor ancak eleman sayısı farklı olan linklerde maalesef çalışmıyor.

    Sormak istediğim benim bu kodu;
    önce
    <?php $kategori_dizisi=kategori_getir($urun_id)[4]; ?>
    sorgula varsa onayla, yoksa
    <?php $kategori_dizisi=kategori_getir($urun_id)[3]; ?>
    sorgula varsa onayla, yoksa
    <?php $kategori_dizisi=kategori_getir($urun_id)[2]; ?>
    sorgula

    şeklinde nasıl yazabilirim acaba. Burada if else mi kullanmak gerekiyor. Şimdiden teşekkürler.
  • 25-08-2020, 01:36:55
    #2
     count(kategori_getir($urun_id) )
    bu şekilde gelen arrayın kaç elemandan oluştuğunu ya da içinde kaç array olduğunu bulabilirsiniz hocam bu işinizi görür anladığım kadarıyla.
  • 25-08-2020, 01:36:47
    #3
    Yoksa hata mesaji yazdirmak icin if elseif uygulanabilir.
  • 25-08-2020, 01:38:33
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    if else vs uğraşmak yerine, ilk önce diziyi eleman sayısına göre desc olarak sıralatıp, ona göre sorgu yapabilirsiniz. böylece elemanı çok olandan az olana göre sorgular sırayla yapılır.
  • 25-08-2020, 01:51:41
    #5
    PhYtOnX adlı üyeden alıntı: mesajı görüntüle
     count(kategori_getir($urun_id) )
    bu şekilde gelen arrayın kaç elemandan oluştuğunu ya da içinde kaç array olduğunu bulabilirsiniz hocam bu işinizi görür anladığım kadarıyla.
    Hocam teşekkür ederim bilgi için. Ancak burada sıkıntı şu;

    Verilmiş olan bir ilan üzerinden aynı kategoride ilan ver şeklinde bir link yaptım. Buna tıklayarak kolayca ana kategori ve alt kategorilerin seçilmesini sağlamam gerekiyor.
    örneğin bir ilanın ana kategorisi ve alt kategoriler (321),(68),(2335),(11) şeklinde kategori dizini içerisinde yer alıyor.
    fakat bir başka ilanda ki kategoriler (5632),(156),(89),(337),(84) şekinde kategori dizi içerisinde yer alıyor.

    Burada benim seçtirmek istediğim en sondaki eleman, bu elemanların sayı değerleri kategori id'sine göre farklı farklı düzenlide değil.
    yani 1. eleman ana kategori, 2. eleman alt kategori, 3. eleman alt kategori şeklinde devam ediyor.

    Ben burada ilanlara kısa yol olarak atadığım kod şu şekilde,

     <li><a href="<?php echo ozel_url("ilan-ekle")."?kat=$kategori_dizisi"; ?>">Aynı Kategoride İlan Ver</a></li>
    buraya tıkladığında önceki ilanla aynı kategoride ilan verilebilmesi gerekiyor. Bunun içinde aşağıdaki şekilde tüm ana kategorileri ve alt kategorileri seçecek şekilde kod yazdığımda eğer kategori dizinindeki eleman sayısı 4 ise kodum çalışıyor. ancak eleman sayısı 3 ise veya 5 ise çalışmıyor.

    <?php $kategori_dizisi=kategori_getir($urun_id)[3]; ?>

    dolayısıyla aynı kategoride ilan ver linke tıkladığında bu döngüyü sorgularken ilgili ilan önce 5 elemanlımı diye sorgulayıp eğer 5 ise onun kategori idlerini getirmesi lazım,
    eğer5 değilse sayısı bir azaltarak kontrol edecek 4 eleman varsa onu getirecek, oda değilse 3 eleman getirecek şeklinde şu kodu düzenlemem gerekiyor.

    mesela ben bu kodu
    <?php $kategori_dizisi=kategori_getir($urun_id)[4]; ?>
    olarak giriş yapayım, ilgili ilan kategori dizinin 5 eleman yokta 3 eleman var önce 5 elemanı sorgulasın, sonra 4 elemanı sorgulasın, sonra 3 elemanı sorgulasın ve bulduğunda onu getirsin şeklinde düzenlemek istedim. bunu if kullanarak yapmaya çalıştım ancak ne yazık ki çalıştıramadım.
    şimdiden yardımınız için teşekkür ederim.
  • 25-08-2020, 02:32:15
    #6
    SelimD adlı üyeden alıntı: mesajı görüntüle
    Hocam teşekkür ederim bilgi için. Ancak burada sıkıntı şu;

    Verilmiş olan bir ilan üzerinden aynı kategoride ilan ver şeklinde bir link yaptım. Buna tıklayarak kolayca ana kategori ve alt kategorilerin seçilmesini sağlamam gerekiyor.
    örneğin bir ilanın ana kategorisi ve alt kategoriler (321),(68),(2335),(11) şeklinde kategori dizini içerisinde yer alıyor.
    fakat bir başka ilanda ki kategoriler (5632),(156),(89),(337),(84) şekinde kategori dizi içerisinde yer alıyor.

    Burada benim seçtirmek istediğim en sondaki eleman, bu elemanların sayı değerleri kategori id'sine göre farklı farklı düzenlide değil.
    yani 1. eleman ana kategori, 2. eleman alt kategori, 3. eleman alt kategori şeklinde devam ediyor.

    Ben burada ilanlara kısa yol olarak atadığım kod şu şekilde,

     <li><a href="<?php echo ozel_url("ilan-ekle")."?kat=$kategori_dizisi"; ?>">Aynı Kategoride İlan Ver</a></li>
    buraya tıkladığında önceki ilanla aynı kategoride ilan verilebilmesi gerekiyor. Bunun içinde aşağıdaki şekilde tüm ana kategorileri ve alt kategorileri seçecek şekilde kod yazdığımda eğer kategori dizinindeki eleman sayısı 4 ise kodum çalışıyor. ancak eleman sayısı 3 ise veya 5 ise çalışmıyor.

    <?php $kategori_dizisi=kategori_getir($urun_id)[3]; ?>
    dolayısıyla aynı kategoride ilan ver linke tıkladığında bu döngüyü sorgularken ilgili ilan önce 5 elemanlımı diye sorgulayıp eğer 5 ise onun kategori idlerini getirmesi lazım,
    eğer5 değilse sayısı bir azaltarak kontrol edecek 4 eleman varsa onu getirecek, oda değilse 3 eleman getirecek şeklinde şu kodu düzenlemem gerekiyor.

    mesela ben bu kodu
    <?php $kategori_dizisi=kategori_getir($urun_id)[4]; ?>
    olarak giriş yapayım, ilgili ilan kategori dizinin 5 eleman yokta 3 eleman var önce 5 elemanı sorgulasın, sonra 4 elemanı sorgulasın, sonra 3 elemanı sorgulasın ve bulduğunda onu getirsin şeklinde düzenlemek istedim. bunu if kullanarak yapmaya çalıştım ancak ne yazık ki çalıştıramadım.
    şimdiden yardımınız için teşekkür ederim.
    Hocam o zaman foreach döngüsü içine alacaksınız.
    Arrayde kaç eleman var ise o kadar döner foreach o şekilde de işinizi yapabilirsiniz.
  • 25-08-2020, 02:33:46
    #7
    Arkadaşlar çözümü buldum. Aslında çok basitmiş sanırım ben meramımı anlatamadım.
    dizi içerisindeki en son elemanı seçmek için end() uygulayarak problemi çözdüm. Belli bir saatten sonra kafa artık duman oluyor bukadar basit şeyi kurmak için neler neler düşündüğümü fark ettim.

    Aynı probleme takılan arkadaş olabilme ihtimaline karşı kodu paylaşayım.

    <?php $kategori_dizisi=end(kategori_getir($ilan_id)); ?>
    selamlar