• 23-01-2009, 21:59:29
    #1
    Üyeliği durduruldu
    aşagıdaki sayfaya;

    ?page=yazar-sirala&yazarno=50&yon=yukari
    ?page=yazar-sirala&yazarno=50&yon=asagi

    linkleri kullanılıyor.

    Bu sıralama manuel bir sıralama. Yani primary key ya da alfabetik bir yöntem değil asagi - / yukarı + yapılarak, sıralamaya sokuluyor.

    yazarlar tablosuna sira diye bir int(3) alan ekledim ve 1 değerini atıyorum. ve buna +/- yaparak sıralamaya sokmaya çalışıyorum.

    Aşağıdaki kod, normalde bir yazarı yukarı aldıgımda diğerlerinden 1 fazla yapacak olmasına ragmen bir türlü istediği yere getirmiyor.

    <?php
    $yazarno = trim(intval($_GET['yazarno']));
    $siralax = trim(intval($_GET['sirala']));
    $sx = trim(intval($_GET['s']));
    $yonu = trim($_GET['yon']);
    
    $lit_yazarno = mysql_query("SELECT * FROM yazarlar WHERE yazarno='$yazarno'");
    $lix = mysql_fetch_array($lit_yazarno);
    
    
    $sira = $lix["sira"];
    
    
    
    if ($yonu == yukari && $yazarno > 0) {
    $yeni_id = $sira-1;
    $dusur = $sira+1000;
    $duzelt = $dusur-1000;
    
    if ($duzelt == "0") {
    header("Location: index.php?page=yazar-incele&sirala=$siralax&s=$sx");
    }
    
    
    @ $guncelle = mysql_query("UPDATE yazarlar SET sira='$dusur' WHERE sira ='$yeni_id'");
    @ $guncelle2 = mysql_query("UPDATE yazarlar SET sira='$yeni_id' WHERE sira='$sira'");
    @ $guncelle3 = mysql_query("UPDATE yazarlar SET sira='$duzelt' WHERE sira='$dusur'");
    
    
    
    header("Location: index.php?page=yazar-incele&sirala=$siralax&s=$sx");
    
    } else if ($yonu == asagi && $sira > 0) {
    $yeni_id = $sira+1;
    $yukselt = $sira-1000;
    $duzelt = $yukselt+1000;
    
    
    if ($duzelt == 0) {
    header("Location: index.php?page=yazar-incele&sirala=$siralax&s=$sx");
    }
    
    
    @ $guncelle = mysql_query("UPDATE yazarlar SET sira='$yukselt' WHERE sira ='$yeni_id'");
    @ $guncelle2 = mysql_query("UPDATE yazarlar SET sira='$yeni_id' WHERE sira='$sira'");
    @ $guncelle3 = mysql_query("UPDATE yazarlar SET sira='$duzelt' WHERE sira='$yukselt'");
    
    
    
    
    header("Location: index.php?page=yazar-incele&sirala=$siralax&s=$sx");
    
    
    
    }
    ?>
  • 23-01-2009, 23:01:39
    #2
    Yukari ise
    //Öncelikle siramizi ögrenelim
    $sirasql = mysql_query("select sira from yazarlar where yazarno='$yazarno'");
    $siramiz = mysql_result($sirasql,0,sira); //Bizim yazarin sirasi
    $yukardakisira = $siramiz + 1; //Yukardaki yazarin sirasi
    //Yukardakini asagi indirelim
    $yukari = mysql_query("UPDATE yazarlar SET sira=(sira-1) WHERE sira='$yukardakisira''");
    //Sonra bu yazari yukari cikar.
    $yukari = mysql_query("UPDATE yazarlar SET sira=(sira+1) WHERE yazarno='$yazarno''");
    asagiyida tam tersi olarak yapabilirsin.
    kodu denemedim hata werirse bakalim tekrar