• 02-05-2022, 23:27:33
    #1
    Merhabalar. Öncelikle herkese hayırlı bayramlar diliyorum.
    Ek'te belirtmiş olduğum bootstraplı bir yapıda döngüye alarak eklenen son 6 yazıyı id sine göre numaralarına yerleştirmek için nasıl bir döngü yapmalıyım ?
    Yapının kolon sayıları farklı olduğu için tek sorguda yapabilirmiyim. 1 numaralı hücreye son id'li yazıyı 2 ve 3'e son eklenen 2 ve 3'üncü id'li yazıyı en alta ise 4,5,6 hücresinede son eklenen 4,5,6 idli yazıyı nasıl çekebilirim? Tek sorguda yapılabilirmi ? Yapılamaz ise aynı sütun yapılarına sahip hücreleri gruplayarak 3 farklı sorgumu yazmalıyız.
    PHP'yi yeni öğrenmeye çalışıyorum PDO ile kodlara yardımcı olurmusunuz?
  • 02-05-2022, 23:32:57
    #2
    örnek SQL sorgusu: "SELECT * FROM ogeler ORDER BY oge_tarihi DESC LIMIT 6"
    bu şekilde son eklenmiş olan öğeleri tablodan çekersin.
    6 adet verinin geldiği bir array elde edersin.

    $ogeler = []; // execute ve fetch ettigin pdo sorgu sonucu

    $ogeler[0];
    $ogeler[1];
    $ogeler[2];
    $ogeler[3];
    $ogeler[4];
    $ogeler[5];

    hiç döngü kullanmadan bu şekilde hücrelerde kullanabilirsin.
    eğer illa döngü kullanayım dersen önyüzdeki blok sistemini bi tık karmaşık hale getirmen gerekir.
    o da şöyle olur:

    foreach ($ogeler as $key => $oge) {
        switch ($key + 1) { // key+1 çünkü arraylerin ilk öğesi sıfırdır
            case 1:
                'ilk oge divi class="ilk ogeye gore class dizilimi"';
                break;
            case 2:
                'ikinci oge divi class="ikinci ogeye gore class dizilimi';
                break;
            case 3:
                'ucuncu oge divi class="ucuncu ogeye gore class dizilimi';
                break;
        }
    }
  • 02-05-2022, 23:38:14
    #3
    Kodları yazarken kontrol etmeden yazıyorum sadece mantığını anlayın diye Bu arada tek sorguda yazdırmak isterseniz bu şekilde, her alan için ayrı sorgu yazabilirsiniz.

    $i = 1;
    foreach(...) {
        //ilk içerik için
        if($i==1) {
            ..
        }
        //2,3 üncü içerikler için
        if($i==2 OR $i==3) {
            ..
        }
        //3 den sonraki içerikler için
        if($i>3) {
            ..
        }
        $i++;
    }
  • 02-05-2022, 23:39:32
    #4
    $blogsorgusu = $db->prepare("SELECT * FROM yazilar ORDER BY yazi_id ASC LIMIT 6");
    $blogsorgusu->execute(array());

    üstteki sorgu ile verileri hazırlıyorum.

    <?php while ($blogcek = $blogsorgusu->fetch(PDO::FETCH_ASSOC)) { ?>
    Html kodları burada
    <?php } ?>

    bununlada verileri döngüye alıyorum. Fakat aldığım döngüde tek bir yapı içerisinde farklı kolonlar var ve bunları tekrarlatmak istemiyorum sadece id'lerine göre yukarıda belirttiğim hücrelere yerleştirmek istiyorum.
  • 02-05-2022, 23:41:22
    #5
    yardımınız için teşekkür ederim. biraz uğraş vereyim yapabilirim umarım
  • 03-05-2022, 12:30:30
    #6
    ASROCK adlı üyeden alıntı: mesajı görüntüle
    yardımınız için teşekkür ederim. biraz uğraş vereyim yapabilirim umarım
    <?php
    $blogsorgusu = $db->prepare("SELECT * FROM yazilar ORDER BY yazi_id ASC LIMIT 6");
    $blogsorgusu->execute(array());
    ?>
    
    <?php foreach ($blogsorgusu->fetch(PDO::FETCH_ASSOC) as $key => $blogcek) { ?>
        <?php if ($key === 0): ?>
            birinci oge <?php echo $blogcek['baslik'] ?>
        <?php endif ?>
    
        <?php if ($key === 1): ?>
            ikinci oge
        <?php endif ?>
    
        <?php if ($key === 2): ?>
            ucuncu oge
        <?php endif ?>
    
        ... diger ogeler
    <?php } ?>
    veya soyle yapabilirsin:

    <?php
    $blogsorgusu = $db->prepare("SELECT * FROM yazilar ORDER BY yazi_id ASC LIMIT 6");
    $blogsorgusu->execute(array());
    $blogcek = $blogsorgusu->fetch(PDO::FETCH_ASSOC);
    ?>
    
    <div class="birinci alan">
        <?php echo $blogcek[0]['baslik'] ?>
    </div>
    
    <div class="ikinci alan">
        <?php echo $blogcek[1]['baslik'] ?>
    </div>
    
    ... diger ogeler