• 06-06-2018, 16:51:34
    #1
    Merhaba arkadaşlar.
    php'de rand ile kafamıza göre veri alıyoruz ama benim aradığım ise sıralı veri çekme. (db bağımsız) bunu nasıl yapabilirim?

    Örnek vermem gerekirse bir klasör içinde 50 adet resim var.
    Sitemin ana sayfasında da 4 resim gösteren slider var.
    Amacım o klasör içindeki 50 adet resimden kafasına göre 4'lü bir şekilde alsın ama aynı resimleri almasın.

    Bunu nasıl yapabilirim?

    Teşekkürler.
  • 06-06-2018, 16:54:50
    #2
    <?php
    session_start();
    if(empty($_SESSION["say"])) $_SESSION["say"]=0;
    
    if ($_SESSION["say"]>=5){
    $_SESSION["say"]=0;
    }
    
    if ($_SESSION["say"]==0) {
    echo '<img src="1.png">';
    $_SESSION["say"]++;
    }elseif ($_SESSION["say"]==1) {
    echo '<img src="2.png">';
    $_SESSION["say"]++;
    }elseif ($_SESSION["say"]==2) {
    echo '<img src="3.png">';
    $_SESSION["say"]++;
    }elseif ($_SESSION["say"]==3) {
    echo '<img src="4.png">';
    $_SESSION["say"]++;
    }elseif ($_SESSION["say"]==4) {
    echo '<img src="5.png">';
    $_SESSION["say"]++;
    }
    ?>
    Sırayla en baştan resimleri açar, sonra tekrar en başa döner. Sırayı aynı şekilde artırabilirsiniz.
  • 06-06-2018, 17:09:51
    #3
    hocam resimleri array a aktarin ondan sonra rand ile cekin cekilen veriyi bir arraya push edin push ederken o push edilecek array icinde push edecegin veri varsa push etmezsin yoksa edersin
    anasayfadada arrayi foreach ile dondurursun ekana basarsin
  • 06-06-2018, 17:33:19
    #4
    $dir = 'images'; // resimlerin bulunduğu klasör
    $images = glob($dir.'/*'); // klasördeki dosyaları çekiyoruz
    shuffle($images); // arrayı karıştırıyoruz
    $images = array_slice($images, 4); // ilk dört değeri alıyoruz
    
    print_r($images);
  • 06-06-2018, 17:41:36
    #5
    Tedux adlı üyeden alıntı: mesajı görüntüle
    <?php
    session_start();
    if(empty($_SESSION["say"])) $_SESSION["say"]=0;
    
    if ($_SESSION["say"]>=5){
    $_SESSION["say"]=0;
    }
    
    if ($_SESSION["say"]==0) {
    echo '<img src="1.png">';
    $_SESSION["say"]++;
    }elseif ($_SESSION["say"]==1) {
    echo '<img src="2.png">';
    $_SESSION["say"]++;
    }elseif ($_SESSION["say"]==2) {
    echo '<img src="3.png">';
    $_SESSION["say"]++;
    }elseif ($_SESSION["say"]==3) {
    echo '<img src="4.png">';
    $_SESSION["say"]++;
    }elseif ($_SESSION["say"]==4) {
    echo '<img src="5.png">';
    $_SESSION["say"]++;
    }
    ?>
    Sırayla en baştan resimleri açar, sonra tekrar en başa döner. Sırayı aynı şekilde artırabilirsiniz.
    Öncelikle cevabınız için çok teşekkür ederim.

    Aradığım tam olarak buydu.

    Fakat bende aşağıda görebileceğiniz üzere klasörü tarayan bir kod var.

    <?php
    function get_rand_img($dir)
    {
        $arr = array();
        $list = scandir($dir);
        foreach($list as $file)
        {
            if(!isset($img))
            {
                $img = '';
            }
            if(is_file($dir . '/' . $file))
            {
                $ext = end(explode('.', $file));
                if($ext == 'gif' || $ext == 'jpeg' || $ext == 'jpg' || $ext == 'png' || $ext == 'GIF' || $ext == 'JPEG' || $ext == 'JPG' || $ext == 'PNG')
                {
                    array_push($arr, $file);
                    $img = $file;
                }
            }
        }
        if($img != '')
        {
            $img = array_rand($arr);
            $img = $arr[$img];
        }
        $img = str_replace("'", "\'", $img);
        $img = str_replace(" ", "%20", $img);
        return $img;
    }
    
    
    
    ?>
    <img src="images/slider/<? echo get_rand_img('images/slider'); ?>">
    Bu kod yardımı ile klasör içerisinden random olarak resimleri okutuyorum.
    Sizin kodunuz ile bunu nasıl birleştirebilirim?

    Yani <? echo get_rand_img('images/slider'); ?> kodunu kullanarak

    <? echo get_rand_img1('images/slider'); ?>
    <? echo get_rand_img2('images/slider'); ?>
    <? echo get_rand_img3('images/slider'); ?>
    <? echo get_rand_img4('images/slider'); ?>

    Yaparak her defasında 4'erli 4'erli resimleri (aynı olmayacak şekilde) nasıl çekebilirim?

    Teşekkürler.
  • 06-06-2018, 17:46:20
    #6
    Daryl_Dixon adlı üyeden alıntı: mesajı görüntüle
    $dir = 'images'; // resimlerin bulunduğu klasör
    $images = glob($dir.'/*'); // klasördeki dosyaları çekiyoruz
    shuffle($images); // arrayı karıştırıyoruz
    $images = array_slice($images, 4); // ilk dört değeri alıyoruz
    
    print_r($images);
    en mantikli kod bu
  • 06-06-2018, 17:50:45
    #7
    theykk adlı üyeden alıntı: mesajı görüntüle
    en mantikli kod bu
    Arkadaş uzun yoldan yapmayı seviyor heralde hocam
  • 06-06-2018, 17:52:51
    #8
    gizemsiz adlı üyeden alıntı: mesajı görüntüle
    Öncelikle cevabınız için çok teşekkür ederim.

    Aradığım tam olarak buydu.

    Fakat bende aşağıda görebileceğiniz üzere klasörü tarayan bir kod var.

    <?php
    function get_rand_img($dir)
    {
        $arr = array();
        $list = scandir($dir);
        foreach($list as $file)
        {
            if(!isset($img))
            {
                $img = '';
            }
            if(is_file($dir . '/' . $file))
            {
                $ext = end(explode('.', $file));
                if($ext == 'gif' || $ext == 'jpeg' || $ext == 'jpg' || $ext == 'png' || $ext == 'GIF' || $ext == 'JPEG' || $ext == 'JPG' || $ext == 'PNG')
                {
                    array_push($arr, $file);
                    $img = $file;
                }
            }
        }
        if($img != '')
        {
            $img = array_rand($arr);
            $img = $arr[$img];
        }
        $img = str_replace("'", "'", $img);
        $img = str_replace(" ", "%20", $img);
        return $img;
    }
    
    
    
    ?>
    <img src="images/slider/<? echo get_rand_img('images/slider'); ?>">
    Bu kod yardımı ile klasör içerisinden random olarak resimleri okutuyorum.
    Sizin kodunuz ile bunu nasıl birleştirebilirim?

    Yani <? echo get_rand_img('images/slider'); ?> kodunu kullanarak

    <? echo get_rand_img1('images/slider'); ?>
    <? echo get_rand_img2('images/slider'); ?>
    <? echo get_rand_img3('images/slider'); ?>
    <? echo get_rand_img4('images/slider'); ?>

    Yaparak her defasında 4'erli 4'erli resimleri (aynı olmayacak şekilde) nasıl çekebilirim?

    Teşekkürler.
    Anladığım kadarıyla bu kod ile klasör içerisinde ki resimleri otomatik olarak çekiyorsunuz, yalnız bu sırayı bozacağını düşünüyorum. Bu kod kafasına göre seçim yaparsa aynı resmi tekrar seçebilir. Eğer klasör içerisinde bulunan resimler hiç değişmiyorsa, resim adresini eklemenizi öneririm.

    <?php
    session_start();
    if(empty($_SESSION["say"])) $_SESSION["say"]=0;
     
    if ($_SESSION["say"]>=5){
    $_SESSION["say"]=0;
    }
     
    if ($_SESSION["say"]==0) {
    echo '<? echo get_rand_img1('images/slider'); ?>';
    $_SESSION["say"]++;
    }elseif ($_SESSION["say"]==1) {
    echo '<? echo get_rand_img2('images/slider'); ?>';
    $_SESSION["say"]++;
    }elseif ($_SESSION["say"]==2) {
    echo '<? echo get_rand_img3('images/slider'); ?>';
    $_SESSION["say"]++;
    }elseif ($_SESSION["say"]==3) {
    echo '<? echo get_rand_img4('images/slider'); ?>';
    $_SESSION["say"]++;
    }
    ?>
    Bunu denermisiniz.