• 24-04-2016, 22:15:05
    #1
    Merhaba, arkadaşlar şöyle bi sorunum var.

    Şimdi db deki tablolalarım şu şekilde


    İsim mail kredi
    Ahmet asdsa@hot.co 55
    kerim gfhfg@hot.co 78
    kerim gfhfg@hot.co 15

    user.php?isim=ahmet diye postluyorum ahmetin verileri geliyor benim istediğim ise şöyle birşey ;

    ahmetin kredisi 55 ise ahmet dbde en yüksek krediye sahip 2 ci kişi oluyor bu şekilde sorgulama yapıp mysql deki sıralaması olan 2 yi nasıl php çekip okutabilirim ?

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 22:15:05 -->-> Daha önceki mesaj 20:27:18 --

    Yardım edebiliecek kimse yok muı?
  • 25-04-2016, 02:41:38
    #2
    Mysql versiyonunuz nedir ?

    http://stackoverflow.com/questions/6...l-query-result

    Burada geyt güzel örnekler verilmiş
  • 25-04-2016, 07:26:41
    #3
    merhaba hocam zaten prepare fonksiyonunu kullanıyorsunuzdur onun içine yazan sorgu şekillenecek şu şekilde kullanımı oluyor.

    select * from users order by kredi desc LIMIT 1,1 dediğinizde kredisi yüksek olan 2. sıradaki kişiyi alıyor.
    ilk bir sıra sayısı oluyor ikinci bir o sıradan itibaren kaç kişi alacağı oluyor.
    1 yazınca niye ikinci sırayı alıyor derseniz birinci eleman 0 oluyor çünkü, programlama dillerinde arrayler vs genelde sıfırdan başlıyor. LIMIT 0,1 derseniz ilk sıradaki elemandan itibaren 1 elemanı alır.

    kolay gelsin.
  • 26-04-2016, 00:55:50
    #4
    asosyetikbiri adlı üyeden alıntı: mesajı görüntüle
    Merhaba, arkadaşlar şöyle bi sorunum var.

    Şimdi db deki tablolalarım şu şekilde


    İsim mail kredi
    Ahmet asdsa@hot.co 55
    kerim gfhfg@hot.co 78
    kerim gfhfg@hot.co 15

    user.php?isim=ahmet diye postluyorum ahmetin verileri geliyor benim istediğim ise şöyle birşey ;

    ahmetin kredisi 55 ise ahmet dbde en yüksek krediye sahip 2 ci kişi oluyor bu şekilde sorgulama yapıp mysql deki sıralaması olan 2 yi nasıl php çekip okutabilirim ?
    okumak istediğiniz nedir, yazdırmak istediğiniz nedir, kontrol etmek istediğiniz nedir biraz detay verirseniz yardımcı olabilirim. mesela user.php?isim=ahmet bu adres ile ekrana sıralaması olan 2 yi mi yazdırmak istiyorsunuz yoksa user.php?sira=2 gibi bir adresle ekrana en çok krediye sahip olan 2. kişiyi mi yazdırmak istiyorsunuz ya da başka bir şey..
  • 26-04-2016, 01:14:25
    #5
    akaracay adlı üyeden alıntı: mesajı görüntüle
    okumak istediğiniz nedir, yazdırmak istediğiniz nedir, kontrol etmek istediğiniz nedir biraz detay verirseniz yardımcı olabilirim. mesela user.php?isim=ahmet bu adres ile ekrana sıralaması olan 2 yi mi yazdırmak istiyorsunuz yoksa user.php?sira=2 gibi bir adresle ekrana en çok krediye sahip olan 2. kişiyi mi yazdırmak istiyorsunuz ya da başka bir şey..
    şöyle diyeyim ;

    user.php?isim=ahmet ahmetin 25 kredisi var ama db 10 kişi var 10 kişinin kredisiyle 25 i eşleştirip ahmete kredisine göre sıra vericez yani 10 kişinin içinde ahmet 25 krediyle kaçıncı sıraya girmiş oluyor desek daha aydınlatıcı oluyor efendim
  • 26-04-2016, 01:49:12
    #6
    <?php
    $i = 1;
    foreach($db->query("SELECT id, kredi FROM users GROUP BY kredi DESC") as $veri){
     if ($veri['id'] == $_GET['id']){
      $sira = $i;
      die();
     }
    $i++;
    }
    echo $sira;
    ?>
    biraz uyku var, bu kafayla hatalı yazmış olabilirim, group by kullanmamın sebebi aynı krediye sahip 2 kişi varsa bunları aynı sıralamada tutmak (2 tane üçüncü ya da 5 tane sekizinci gibi) bu şekilde istemezseniz order by kullanabilirsiniz. group by hakkında w3schools.com learn sql kısmından faydalanabilirsiniz.
  • 26-04-2016, 08:30:15
    #7
    akaracay adlı üyeden alıntı: mesajı görüntüle
    <?php
    $i = 1;
    foreach($db->query("SELECT id, kredi FROM users GROUP BY kredi DESC") as $veri){
     if ($veri['id'] == $_GET['id']){
      $sira = $i;
      die();
     }
    $i++;
    }
    echo $sira;
    ?>
    biraz uyku var, bu kafayla hatalı yazmış olabilirim, group by kullanmamın sebebi aynı krediye sahip 2 kişi varsa bunları aynı sıralamada tutmak (2 tane üçüncü ya da 5 tane sekizinci gibi) bu şekilde istemezseniz order by kullanabilirsiniz. group by hakkında w3schools.com learn sql kısmından faydalanabilirsiniz.
    Teşekkür ederim,hocam w3schools.com'da göz atıyorum şimdi yalnız verdiğinizi denedim boş sayfa hatası aldım
  • 26-04-2016, 14:45:12
    #8
    akaracay adlı üyeden alıntı: mesajı görüntüle
    <?php
    $i = 1;
    foreach($db->query("SELECT id, kredi FROM users GROUP BY kredi DESC") as $veri){
     if ($veri['id'] == $_GET['id']){
      $sira = $i;
      die();
     }
    $i++;
    }
    echo $sira;
    ?>
    biraz uyku var, bu kafayla hatalı yazmış olabilirim, group by kullanmamın sebebi aynı krediye sahip 2 kişi varsa bunları aynı sıralamada tutmak (2 tane üçüncü ya da 5 tane sekizinci gibi) bu şekilde istemezseniz order by kullanabilirsiniz. group by hakkında w3schools.com learn sql kısmından faydalanabilirsiniz.
    Database'de bulunan bütün herkesi alıp saydırmak çok çok çok fazla performans kaybına sebep olur.

    İlk mesajda verdiğim sayfaya bakmamışsınız sanırım

    select @rownum:=@rownum+1 No, foo, bar from table, (SELECT @rownum:=0) r;
    Bu query üstünden gidebilirsiniz
  • 02-05-2016, 00:12:58
    #9
    <?php
    $i = 1;
    while($db->query("SELECT kredi FROM users WHERE kredi >= $kredi ORDER BY kredi DESC")){
    $sira = $i;
    $i++;
    }
    echo $sira;
    sanırım bu işe yarar