Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

program algoritmasi

Konu, 'PHP' kısmında hilmi tarafından paylaşıldı.

  1. hilmi

    hilmi Üye

    Kayıt:
    7 Temmuz 2002
    Mesajlar:
    94
    Beğenilen Mesajlar:
    0
    Meslek:
    ogrenci
    Şehir:
    Ankara
    ok bir zahmet burada baslayalim ve devam edelim, ilk once imajlari bir klasore topluyorum ve 1'den 365 e kadar isim veriyorum, yada ay isimlerine goremi isim vermeliyim?

    Sonra bir tablomu olusturacagim mysql'de ornegin

    CREATE TABLE random_resim (
    resim_id int(11) NOT NULL auto_increment,
    isim varchar(100) NOT NULL,
    tarih date DEFAULT '0000-00-00' NOT NULL,
    PRIMARY KEY (resim_id),
    UNIQUE resim_id (resim_id),
    KEY resim_id_2 (resim_id)
    );

    buyuk ihtimalle cok hatali bir tablo ustteki.

    Lutfen birlikte devam edebilirmiyiz mkarabulut?
     
    Son düzenleme yönetici tarafından yapıldı: 13 Temmuz 2002
  2. ab

    ab Aktif Üye

    Kayıt:
    19 Mayıs 2002
    Mesajlar:
    343
    Beğenilen Mesajlar:
    0
    Meslek:
    Oğrenci
    Şehir:
    İstanbul
    Mysql e gerek yok burda aslında acemi olarak kanaatimtum imajları tek klasore at readdir() fonksiyonu ile okuttur dizini. Daha sonra 1-den 365 e kadar kontrol ettir serverdan gunu al Sanırım php dede
    RND benzeri bir fonksiyon vardir. gunu yada ayi rnd fonksiyonu ile rastgele bir deger hesaplattır ama değer 365 den buyuk 1 den kucuk olmasın sonra cıkan sonucun ondalık ksımlarını at. Boylece rastgele bi imajın sayısını elde edersin. o sayiya ait imaj bırak grountulensin.

    Teoride bu kadar anlatiyorum :) Napabilirim yazamıyorum henuz. :)
     
  3. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0
    Konu takibi açısından yazıyorum alper. Arkadaşın istediği rastgele resim seçmek yada getirmek değil anladığım kadarıyla tarihe göre gelsin istiyor resimler.

     
  4. ab

    ab Aktif Üye

    Kayıt:
    19 Mayıs 2002
    Mesajlar:
    343
    Beğenilen Mesajlar:
    0
    Meslek:
    Oğrenci
    Şehir:
    İstanbul
    O zaman yılın kcıncı gunundeyiz diye hesaplarız. ayları ne kadar cekiyorlarsa o değer ile carpıp uzerinde gun sayısını ilave edersek sanırım yılın kacıncı gununde olduğumuzu buluruz yalnız burda kotu olan subat ayları :) cunku bu ay gun sayısı acısından farklılık gosteriyor. :)
     
  5. mkarabulut

    mkarabulut Misafir

    aslına bakılırsa başlangıç için zor bir algoritma... :)

    Neyse,benimde şöyle bir fikrim var:
    Amacımız her gün farklı bir resmin gelmesi,di mi ? Bir de resimleri tek bir klasöre atalım uğraşmayalım diyoruz...

    Algoritmamız
    0-Resimler günlere göre veritabanında bulunacak, ama veritabanı başlangıçta boş olacak.
    1-Gösterilecek resim için önce veritabanına bakılacak, eğer veritabanında o anki gün ile ilgili bir resim varsa o gösterilecek
    2-Eğer resim yoksa, klasörden rastegele bir resim seçilecek
    3-Rastgele seçilen resim veritabanında varolan kayıtlar -yani daha önceki günlerde gösterilen resimler - arasında varsa, tekrar yeni bir resim seçilecek
    4-Resim veritabanında daha önceden yoksa , günün tarihi ile birlikte resim adıyla veritabanına kaydedilecek
    5-Bugün içinde gelen diğer ziyaretçiler, veritabanında artık bugün ile ilişkili bir resim olduğu için onu görecekler ve 2,3 ve 4.adımları çalıştırmayacaklar.
    6-Böylece her gün veritabanına bir resim kaydedilecek,ta ki resimler bitene kadar.

    Algoritmasını böyle bir şey çıkardım...
    Ne diyorsunuz ?
     
  6. SFG

    SFG Yeni Üye

    Kayıt:
    15 Temmuz 2002
    Mesajlar:
    19
    Beğenilen Mesajlar:
    0
    Meslek:
    webdesigner
    Şehir:
    kuzey kutbu
    Bence o kadar zor degil ustat, aksama bunun javascriptle olanini yazayim ben.
     
  7. mkarabulut

    mkarabulut Misafir

    JavaScript ile biraz zor çünkü olay bir random resim seçme işlemi değil.
    Random seçilecek ve o gün boyunca seçilmiş olan random resim gösterilecek. Yani gün boyunca random işlemi sadece bir kere yapılacak,sonradan hep bu seçilmiş resim gösterilecek.
    Yani resmin adını bir yere kaydetmeden bu işlem nasıl yapılabilir ?
    Javascript ile ?

    Bakalım sana bir gün abi ... :)
     
  8. ab

    ab Aktif Üye

    Kayıt:
    19 Mayıs 2002
    Mesajlar:
    343
    Beğenilen Mesajlar:
    0
    Meslek:
    Oğrenci
    Şehir:
    İstanbul
    Abi bakın bu konu aklıma cılgınca bir fikir getirdi "Traditional Weekly Ceviz.NEt Php Competition" :)

    Aslında mumkun yalnız mkarabulut haricindekiler katılacak :)

    herhafta yeni kulllanıcıyı cok kastırmayacak bir algoritma ile belirli işleri yaptıran bir php scriptini yazana birseyler versek :) mesela vatarinin altina xx.xx.xxxx ceviz.net php comp :) winner gibi.

    yarisma sorularinida mkarabulut hazirlasa boylece insanlar php yi daha hizli, hirsli bir sekilde öğrenmezler mi ?
     
  9. hilmi

    hilmi Üye

    Kayıt:
    7 Temmuz 2002
    Mesajlar:
    94
    Beğenilen Mesajlar:
    0
    Meslek:
    ogrenci
    Şehir:
    Ankara
    Hayir sanirim tam anlatamadim, veri tabani hic bir zaman bos olmayacak her zaman orada hazir bir resim olacak ve o gunun tarihine gore otomatik olarak o gunun tarihi ismli gif ya da jpg gelecek. Rastgele secim olmayacak, her zaman belli olacak gelecek resim, biz onceden belirleyecegiz.

    Javascript olurmu bilmiyorum ama ben php ile olmasini tercih ederim.
     
  10. mkarabulut

    mkarabulut Misafir

    Algoritmayı tam olark incelediysen, her gün için hazır bir resmi script kendisi buluyor, ama eğer veritabanında varsa bulmaya çalışmıyor onu kullanıyor.

    Yani sen veritabanını boş değilde önceden doldurursan, yine çalışır.
    Ama programın ilk adımları hiç bir zaman devreye girmez.
    Yani her zaman programın 5. ve 6. adımları çalışacak.

    Kolay gelsin.
     
  11. mkarabulut

    mkarabulut Misafir

    PHP:
    <?
    function 
    rastgele_resim_al(){
            
    //önce bütün resimleri vt den al
            
    $sorgu=mysql_query("SELECT resim FROM resimler");
            
    $resimler=array();
            while (
    $kayit=mysql_fetch_array($sorgu)){
                        
    $resimler[]=$kayit[0];
            }      
          
            
    //klasörü aç ve karşılaştır
            
    $handle=opendir('resimler/klasoru/');
            while (
    false !== ($file readdir($handle))) { 
                
    //veritabanında olmayan ilk resmi al 
                   
    if (!in_array($file,$resimler) && $file!=".." && $file!="."){
                                                          
    $secilen_resim=$file;
                                                           break;
                                        }
             }
             
    closedir($handle);
            
         if (isset(
    $secilen_resim))
                       return 
    $secilen_resim;
         else 
                      return 
    "";     


    }

    $bugun=date("Y-m-d");
    $sorgulama=mysql_query("SELECT resim FROM resimler WHERE tarih='$bugun'");
    if (
    $kayit=mysql_fetch_array($sorgulama)){
                    
    //resim eklenemiş  zaten 
                    
    echo $resim;
    } else {
      
    //resmi klasörden al ve vt ye yaz
      
    $resim=rastgele_resim_al();
      
    mysql_unbuffered_query("INSERT INTO resimler VALUES('$resim','$bugun')");
                 echo 
    $resim;
                
    }

    ?>
    Böyle bi şeyler...
     
  12. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0
    Az bekle @hilmi istemesede ben yazacağim.

    Sonrada yazdigin kod üzerinde konuşuruz.
     
  13. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0
    Head kısmına;


    Resmi yerleştireceğiniz yere aşağıdaki kodu yazacaksınız.

    Tıklandığında popup olarak imajın büyük halide görüntülenebilir böylece.
     
  14. mkarabulut

    mkarabulut Misafir

    Evet,çok şık olmuş JavaScript çözümü...

    Yani klasörün içindeki dosyaların adları gün isimleri olacak ve script gidip klasörün içinden o günkü resmi alacak.

    Gerçekten çok pratik olmuş, hiç PHP ile kasmaya da gerek kalmamış.

    Ama genede PHP öğrenmek isteyen arkadaşlar siz Şahin abi ye bakmayın :D
    Yukarıdaki yazdığım kodu denemedim,sadece sizin için bir fikir oluşturması açısından yazdım,yukarıda algoritmasını verdiğim işi yapıyor...
     
  15. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0
    Zaten ben çeşit olsun diye yazdım Mustafa, burada asıl önemli olan olayın PHP ile yapılanı.

    Ama dediğim gibi eğer sende aynı mantığı izleyip gün adına göre aldırsaydın bundan daha kısa olurdu PHP çözümüde.
     
  16. hilmi

    hilmi Üye

    Kayıt:
    7 Temmuz 2002
    Mesajlar:
    94
    Beğenilen Mesajlar:
    0
    Meslek:
    ogrenci
    Şehir:
    Ankara
    Arkadaslar sagolun kodlari hemen deneyecegim, olmazsa javascriptte kullanabilirim ya ne olacak sanki. ;)

    Bugunlerde islerin yogunlugundan ugrayamiyorum, ama derslere devam mkarabulut yeni yazilar yokmu?

    sevgiler, saygilar
     
  17. mkarabulut

    mkarabulut Misafir

    Kusura bakmayın ben de çok meşgulum bugünlerde, ama bir kaç yazı var üzerinde çalıştığım..

    bu hafta sonu ve/veya gelecek haftaya yetiştirmeye çalışıyorum...
     
  18. hilmi

    hilmi Üye

    Kayıt:
    7 Temmuz 2002
    Mesajlar:
    94
    Beğenilen Mesajlar:
    0
    Meslek:
    ogrenci
    Şehir:
    Ankara
    ok bekleriz, bu arada iyicede isindik olaya sayende tesekkurler.
     
  19. Black_Boyss

    Black_Boyss Daimi Üye

    Kayıt:
    6 Aralık 2002
    Mesajlar:
    1,218
    Beğenilen Mesajlar:
    0
    Meslek:
    bilgisayar Teknikleri /Donanım/Tekniik destek /sis
    Şehir:
    /etc/YOZGAT
    rast gele resim almak php shuffle komutu ile de yapılabilir veritabanın acaba gerek varmı boşuna yormayalım veri tabanını
    ha degişik resimler içinde bir resim update formu yazılırsa tama veritabanın böle boş işlere yormuyalım
     
  20. Black_Boyss

    Black_Boyss Daimi Üye

    Kayıt:
    6 Aralık 2002
    Mesajlar:
    1,218
    Beğenilen Mesajlar:
    0
    Meslek:
    bilgisayar Teknikleri /Donanım/Tekniik destek /sis
    Şehir:
    /etc/YOZGAT
    rast gele resim almak php shuffle komutu ile de yapılabilir veritabanın acaba gerek varmı boşuna yormayalım veri tabanını
    ha degişik resimler içinde bir resim update formu yazılırsa tama veritabanın böle boş işlere yormuyalım bence nasıl olur:D
    sizcesi gelecektir

    $resim = arrya ("1.jpg" , "2.jpg")

    shuffle ($resim);

    <?
    for ( $i=0; $i < 3; $i++ )
    {
    echo "<td align = center><img src =\"";
    echo $resim [$i];
    echo "\" width =100 height =100></td>";
    }
    ?>
    ehehe saat gece 3.34

    :p :confused: