Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Buda algoritma ama perl de

Konu, 'Yazılım Geliştirme' kısmında Sahin tarafından paylaşıldı.

  1. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0
    Bu kod sayfaları en son eklenenden itibaren en ilk kayıta kadar sıralıyor her sayfada sadece 10 kayıt oluyor;

    Kod:
    sub sirasi
    {
    $geri  = "<a href=\"uyeler.cgi?sayfa=".($sayfa-1)."\&mesaj=".($mesaj)."\">
    <sub><img height=18 src=\"..\/images/geriok.gif\" width=18 border=\"0\"><\/sub> <b>geri</b><\/a>";
    $ileri = "<a href=\"uyeler.cgi?sayfa=".($sayfa+1)."\&mesaj=".($mesaj)."\"><b>ileri</b> 
    <sub><img height=18 src=\"..\/images/ok.gif\" width=18 border=\"0\"><\/sub><\/a>";
    @sayilar ="";
    $j=0;
    while ($j <= ($#lists/$mesaj))
    {
    $j++;
    push (@sayilar," <a href=\"uyeler.cgi?sayfa=".($j)."\&mesaj=".($mesaj)."\">$j<\/a> "); 
    }
    if ($mesaj-1 >= $#lists)
    {
    $sonuc = " ";
    }
    elsif ($sayfa <= 1){
    $sonuc = "$ileri @sayilar";
    }
    elsif ((($sayfa*$mesaj)-1)>=($#lists))
    {
    $sonuc = "$geri @sayilar";
    }
    else 
    { 
    $sonuc = "$geri | $ileri @sayilar"
    }
    }
    Benim istediğim bunu A|B|C|D|E|F|G... diye sıralamak.

    Ayrıca bir link olacak ona tıklandığında o zaman son kayıta göre sıralama olacak. Ama bu sıralamada 1|2|3|4|5|6....21|22 gibi olacak.
     
  2. Düzgün

    Düzgün Üye

    Kayıt:
    29 Temmuz 2002
    Mesajlar:
    206
    Beğenilen Mesajlar:
    0
    Merhaba,
    biraz kasıp yazmaya çalıştım..
    Kod:
    #!/usr/bin/perl -w
    # coded by yavuz yasin düzgün
    # [email]info@duzgun.com[/email]
    # 8/10/2002 update
    use strict;
    use CGI::Carp qw(fatalsToBrowser);
    use CGI qw(param);
    my $char = substr(param('c'),0,1) || "A";
    my $sayfa = param('s') || 1;
    my $mesaj = param('m') || 20;
    print "Content-type: text/html; charset=windows-1254\n\n";
    # harfleri sırala
    print "| ";
    foreach ('A'..'Z') {
    print "<a href=\"?c=".$_."\">".$_."</a> | ";
    }
    # gelen $char da A..Z ise
    if ($char =~ m/[A-Z]/) {
    my @dizi = datagetir($char);
    my $sayi=0;
    my $max = (($sayfa-1) * $mesaj);
    foreach (@dizi){
    $sayi++;
    if (($sayi > $max) && ($sayi <= ($max+$mesaj)))
    {
    &liste($char,$_);
    }
    }
    my $geri ="<a href=\"?c=".$char."\&s=".($sayfa-1)."\&m=".($mesaj)."\">&lt;&lt;<\/a>";
    my $ileri="<a href=\"?c=".$char."\&s=".($sayfa+1). "\&m=".($mesaj)."\">&gt;&gt;<\/a>";
    my $j=0;
    my @sayilar=();
    my $sonuc;
    my $toplam=int($#dizi/$mesaj);
    while ($j <= $toplam)
    {
    $j++;
    #toplam sayfa sayısı 10dan fazla ise
    if ($toplam >10) {
    if ($j<9 || ($toplam - $j)< 1 ){
    if ($sayfa == $j)
    {
    push (@sayilar," [$j] ");
    }else{
    push (@sayilar," <a href=\"?c=".$char."\&s=".($j)."\&m=".($mesaj)."\">$j<\/a> ");
    }
    if ($j==8){
    push (@sayilar," .. ");
    }
    }
    }
    else
    {
    if ($sayfa == $j)
    {
    push (@sayilar," [$j] ");
    }else{
    push (@sayilar," <a href=\"?c=".$char."\&s=".($j)."\&m=".($mesaj)."\">$j<\/a> ");
    }
    }
    }
    if ($sayfa <= 1 ){
    $sonuc = "@sayilar $ileri" if($toplam!=0);
    }
    elsif ((($sayfa*$mesaj)-1)>=($#dizi)){
    $sonuc = "$geri @sayilar";
    }
    else{
    $sonuc = "$geri @sayilar $ileri";
    }
    print "<br>$sonuc";
    
    }
    sub liste
    {
    my ($char,$data)= @_; 
    print ("<br>".$char." listeleniyor... ".$data."\n");
    }
    sub datagetir
    {
    #şimdi diyeceksiniz aşağıdakilede neler
    #bunları data farzedin yani burada databasenize bağlanın ve return
    #olarak verilerinizi dizi yapısında geri gonderin... :)
    my $data = shift;
    #A kategorisinde 50 kayıt olsun
    if ($data eq "A"){
    return my @A = ("01".."123");
    }
    #B kategorisinde 70 kayıt olsun
    if ($data eq "B"){
    return my @B = ("01".."258");
    }
    #C kategorisinde 98 kayıt olsun
    if ($data eq "C"){
    return my @C = ("01".."198");
    }
    
    }
    
    example
    source

    selamlar..
     
  3. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0
    Eline sağlık kardeş deneyeceğim ama database txt bazlı bir database. Neyse bir deneyeyim;)