Merhaba, Eğer birden fazla veri seçtiysen bu Request.Querystring("dok") kısmı 61,62,63 oluyor ve veritabanında 61,62,63 diye bir ID olmadığı için hata veriyor. search-dok.asp sayfasında gelen verileri split etmen gerekiyor. Request.querystring ten gelen veriyi yakalıyorsun zaten. " , " ile split (ayırıp) edip verileri öyle seçtirmen gerekiyor. |
kimse cevap yazmıycak zannetmeye başlamıştım, ilgilendiğin için sağol. split kullanmadım örnek verebilirsen sevinirim. |
ID = Request.Querystring("dok") parcala = Split(ID,",") Adeti = Ubound(parcala) for i = 0 to Adeti ID2 = parcala(i) //Şimdi burada parcala(i) döngü 1 kere döndüğünde 61. ikincide 62. üçüncüde 63 olacak. Daha sonra select * from vsvsvs ID = @parcala(i) şeklinde select yaptırabilirsin. tabi en sondada next ile foru kapatman gerekiyor. |
Hocam çok teşekkür ederim mantığı anladım, dediğini tam olarak yapamadım galiba hata aldım. aşağıdaki şekilde halloldu. Bu konuyu arattım çoğu yerde yarım yamalak anlatılıyor. Aynı sorunu yaşayan arkadaşlar için son halini paylaşıyorum. <% |
Evet doğru bir şekilde kullanıyorsun. Ancak şunuda bilmemde fayda var. QueryStringden aldığın IDde injection açığı vardır. Yani sayfa.aspx?ID=5 se birisi buraya sayfa.aspx?ID=5'or --Select * from users vsvssvs şeklinde bir işlem yaparsa veritabanına ulaşabilir hatta veritabanını komple silebilir. Bu yüzden sana tavsiyem injection açıklarından kurtulman. Bunun için ID=Request.Querystring("dok") şeklinde aldıktan sonra ID değerinde " ' , or , and , < , > , select , insert , update , delete " gibi değerleri replace ettirmen gerekiyor. Bunun için ID = ID.Replace("or","") şeklinde replace metodunu kullanabilirsin. |
Bunuda öğrendiğim iyi oldu, ama sadece localde stok takip programı gibi kullanılacağı için açığı olması çok önemli değil. Yardımların için teşekkür ederim. şimdilik bu sorun çözüldü genel olarak toparladım sayılır. Bitince paylaşıma açmayı düşünüyorum, ihtiyacı olan kullanabilir. |
aslında takıldığım bir alan daha vardı hazır senin gibi bu konudan iyi anlıyan birini bulmuşken sorayım :) ckadet adında bir tablo var ve burada çıkış yapılan adetler tutuluyor. set ckToplam = Conn.Execute("Select Sum (ckadet) As ckToplam from tbkayit") =ckToplam("ckToplam") Şeklinde ckadet tablosundaki verilerin toplamını başka rapor sayfasında alıyordum. search-dok.asp sayfasında sadece çektiğim IDlerdeki, ckadet satırının verilerin toplamını nasıl yazdırırım. |
set ckToplam = Conn.Execute("Select Sum (ckadet) As ckToplam from tbkayit") gibi ID parametresini göndermen lazım. set ckToplam = Conn.Execute("Select Sum (ckadet) As ckToplam from tbkayit where ID = IDDegerin") IDDegerin yani split ile böldüğün değer Daha sonra döngü içerisinde gelentoplamdeger = gelentoplamdeger + ckToplam("ckToplam") işlemiyle toplattırman lazım en sonda döngünün dışında gelentoplamdeger değişkenini ekrana yazdırabilirsin. |
database ve tablo yapılarını tam olarak bilmediğim için ancak o kadar açıklayabiliyorum. tablolarını açıklayıcı bir şekilde anlatabilirsen daha detaylı bilgi verebilirim. |
search-dok.asp sayfasının içersinde çalışacak. aşağıdaki kodlarda ckadet olarak yazdırdığım sütunu toplamaya çalışıyorum set ckToplam = Conn.Execute("Select Sum (ckadet) As ckToplam from tbkayit") dediğim zaman ckadet teki tüm kayıtları topluyor. ama ben sadece checkbox çektiğim verileri toplamak istiyorum.
|
Tüm kayıtları toplatıyorsun. Checkbox tan seçtiğin değerlerinde IDlerini alabiliyorsun. O zaman tüm kayıtları toplatırken sorguna where parametresi göndermen gerekiyor. Tüm kayıtları değil de Where bilmemneID = checkboxtangelenID şeklinde çektirmen gerekiyor. |
böyle yaptım ama bu seferde sadece son döktüğü kaydı yazıyor ![]()
|
set ckToplam = Conn.Execute("Select Sum (ckadet) As ckToplam from tbkayit where ID = "&x&"") Bundaki verileri okumak içinde bir döngü kur aç daha sonra üst mesajda dediğim gibi toplamdeger = toplamdeger + ckToplam("ckToplam") Şeklinde toplamlarını bir döngüde toplattırman gerekiyor. |
Dostum yardımların için sağol, çalıştı sonunda ![]()
|
sayende dostum :) valla çok uğraştım aslında basitmiş devam ediyorum halen, daha çok işi var |
Hocam benim sorunumda buna benzer aslında olup olmayacağını da bilmiyorum yardımcı olursanız sevinirim. 1. Sorum: Aşağıda alt alta 2 kaydı veritabanında iki ayrı ID ye kaydettirebilir miyim? ( Şu anda aynı ID'ye 7701 STAR ETEK, 7786 LOVELY KADİFE ETEK şeklinde kayıt ediyor.)
1. Sorum olmuyorsa; Virgüllü şekilde veritbanına kayıt edilen birden fazla alanı nasıl ekrana yazdırabilirim?
yukarıdaki örnekte resmi bölebildim ama ben haber ve baslığı da parçalayıp ekrana yazdırmak istiyorum. Yardımcı olursanız çok sevinirim. |
bir ID tanımlasan, resim url - başlık - haber stünları oluştursan IDye göre çok kolay bir şekilde listelersin. |
tek bir checkbox işaretleyip post ettiğimde sorun yok, ama birden fazla seçersem kayıt bulunamadı hatası alıyorum, response.write kullanarak çektiğim veriye bakıyorum Id'ler 61, 62, 63 şeklinde geliyor. bir türlü çözemedim. yardım edebilecek arkadaş varsa çok memnun olurum.
search-dok.asp