Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

[PHP-MySQL] n. satırı çektikten sonra n-1 ve n+1. satırları çekmek.


Zopik

Öne çıkan mesajlar

@Rahan, OR o :) AND değil.


Mmm.. Bence veritabanı tasarımında minik bir hata var.. Neden md5 ile hashlenmiş id leri tutuyorsun ki ? Onun yerine bir auto_increment kullansan, hem unique, hem de aritmetik işlemler yapabileceğin için çok daha rahat olurdu.

Gel gelelim, eğer bu ID lerin hashlenmemiş hallerini biliyorsan ( örn : md5(5); falansa.) direk bir önceki ID yi hashleyerek veriyi çekebilirsin.. Haa direk timestamp 'i hashlemişsen, bilemiyorum tabii.. O zaman paşa paşa tüm veriyi çekip, PHP ile filter edeceksin.[signature][hline]>Ever heard of .cshrc?
That's a city in Bosnia. Right?
-- Discussion in comp.os.linux.misc on the intuitiveness of commands
Link to comment
Sosyal ağlarda paylaş

eğer bir önceki md5 lenmiş veriyi biliyorsan;
ulaşacağın satırdan bir önceki md5 e göre sorgunu yap ve sorguna "LIMIT 3" ü ekle, böylece ilk gelen satır n-1 , 2. satır n , ve üçüncü satır n+1 olur.

Aslında sorduğun şey biraz mantıksız çünkü bu sıralama mutlaka bir alan referans alınarak yapılması lazım, öyle olmasaydı her "n" i sorgulattığında n-1 ile n+1 in farklı değerler alması gerekirdi.
Link to comment
Sosyal ağlarda paylaş

ya normal id lerde var elimde. fakat onlarda düzensiz gittiği için bunu yazdım. arada silinen kayıtlar var bu yüzden id ler 22 25 26 32 48 şeklinde gidior.

aklımdan geçen şöyle bişeydi. ben bir satırı çekerim. hem veri gelir hemde o satırın kaçıncı satır olduğu. buna göre ben n-1 ve n+1 i çekebilirim şeklinde düşünmüştüm. diğer türlü sırayla giden kaydın id leri 12 22 52 ise 40 civarında sorgu yapmam gerekiyor her seferindeki bunu istemiyorum. olay bu yani. o yüzden id olarak masked_path yazdımki id kullan diye atlamayın diye ama işe yaramadı :-)
Link to comment
Sosyal ağlarda paylaş

ı ıh OR. AND olsaydı ID değeri hem x hem de y olan row u göstermeye çalışırdı mysql, ki bir id tek değer alabilir. Ama OR olunca, id değeri x veya y olan rowları göstermeye çalışırdı.

ya da elektrik makinalari çalışmaktan beynim akmış durumda ve sen doğrusunu söylüyorsun.[signature][hline]>Ever heard of .cshrc?
That's a city in Bosnia. Right?
-- Discussion in comp.os.linux.misc on the intuitiveness of commands
Link to comment
Sosyal ağlarda paylaş

Sharky mutlak eşitlik yok aralık verilmiş.

Auto_inc'li bir field ekleyip tabloyu güncellediğimi hatırlıyorum MSSQL'de. Neredeyse 1 senedir kullanmıyorum ama öyle birşey mümkündü gibi. Gerçi MySQL ne alemdedir hiç bilmiyorum. Hiç bulaşmadım ona. :)

Edit: Rahan ben mesajı yazıncaya kadar aynısı söylemiş zaten. :)

Edit2: Sharky'e cevap babında. (Ulan bu editlerin herbirini 1 mesaj yapsaydım 500K madalyam olmuştu be pfff.)

[signature][hline]In God I Trust
For Rest I Just Test

[Bu mesaj GE-TA tarafından 07 Aralık 2004 15:02 tarihinde değiştirilmiştir]

[Bu mesaj GE-TA tarafından 07 Aralık 2004 15:04 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

e canım zopikçim bu olayı çözmedik miydik zaten.

[code=php]$result = mysql_query( select id from bilmemne_tablosu where id = " . $id++ );
while( mysql_num_rows( $result ) == 0 )
{
$result = mysql_query( select id from bilmemne_tablosu where id = " . id++ );
}[/code] diyerek bir sonrakini ya da -- yaparak bir öncekini alabilirsin.

yok zaten cursor demiştik, onunla ilgili örnek için mysql.org'a bak. ama yapmayı düşündüğün şey için cursor çok gereksiz gibin :D[signature][hline]en ince yerim bileğim..!?!

[Bu mesaj Mum_Chamber tarafından 07 Aralık 2004 18:37 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

said:
Zopik, 07 Aralık 2004 13:06 tarihinde demiş ki:
...ben bir satırı çekerim. hem veri gelir hemde o satırın kaçıncı satır olduğu. buna göre ben n-1 ve n+1 i çekebilirim şeklinde düşünmüştüm...


çözdük mumi ona bişey demiyorum. ama biri şu yazdığıma cevap verir diye düşünmüştüm. akıllarına gelmemiş demekki :-p

eğer bu tip birşey varsa neden boşu boşuna sorgu gönderelimki ?? ha yoksa böle bişi yok desin bende susayım :P herbişi merakımdan yani ...
Link to comment
Sosyal ağlarda paylaş

said:
Zopik, 07 Aralık 2004 13:06 tarihinde demiş ki:
ya normal id lerde var elimde. fakat onlarda düzensiz gittiği için bunu yazdım. arada silinen kayıtlar var bu yüzden id ler 22 25 26 32 48 şeklinde gidior.

aklımdan geçen şöyle bişeydi. ben bir satırı çekerim. hem veri gelir hemde o satırın kaçıncı satır olduğu. buna göre ben n-1 ve n+1 i çekebilirim şeklinde düşünmüştüm. diğer türlü sırayla giden kaydın id leri 12 22 52 ise 40 civarında sorgu yapmam gerekiyor her seferindeki bunu istemiyorum. olay bu yani. o yüzden id olarak masked_path yazdımki id kullan diye atlamayın diye ama işe yaramadı :-)


eğer böyle bir durum varsa iki kere select yapmak dışında bir çözüm yok, aynı query içinde de olsa iki select yapacaksın.

burda da ortaya en baştan düşünmediğin ortaya çıkıyor veritabanı üzerinde eğer sen yazdıysan, çünkü zaten programlama hikayedir kuralları falan vardır yazarsın, ama veritabanı tamamen sana özel bişidir, her istediğini yapacak şekilde tasarlaman lazım.

misal senin durumunda bütün satırları alt alta dizip order by hede diip, limit 42,3 desen 42 satırdan itibaren 3 tane gelir eline ama sanırım sen 42yi bulamıyorsun ?

a. otur baştan tasarla, evet zor olacaktır ama bir çözüm üret, misal bir kolon daha koy order_id falan gibi, daha sonra her silinme de order_id leri ona göre düzelttir (trigger yazabiliyorsan yaz mysql 4 küsürden itibaren var) bölece order_id ye göre dizip küt diye çağırabilirsin.

b. kulağını tersten göstermeye çalışıyor musun buna bak, illa bir yerde bir hata vardır. bir şekilde demin anlattığım 42. satırı aldırabilirsen küt diye çıkar her şey piyasaya. tavsiyem ilk denemelerini hep phpmyadmin üzerinde falan yap, php ile kasılma önce query yi bul sonra phpyi yaz. dediğim gibi kodlama hikayeyi yazma bölümü, önce kurgusunu kontrol et.
Link to comment
Sosyal ağlarda paylaş

yazıda baya ipucu var hoş olmuş :) evet limit olayı aklıma gelmemişti. 3 satırdan ortadakini çektiğime göre her seferde sonrakini limit ile öncekinide mumi nin yöntem ile alabilirim. LIMIT -1 şeklinde bir şey yok sanırım. daha önce denemiştim ...

teşekkür ederim ...
Link to comment
Sosyal ağlarda paylaş

  • 3 hafta sonra ...
×
×
  • Yeni Oluştur...