Merhaba arkadaşlar, Access veritabanından çektiğim verileri listeliyorum, listelediğim verilerden checkbox kullanarak seçtiğim verileri başka sayfaya post edip oradan yazdırmak istiyorum.
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.
<form action="search-dok.asp?" method="get"> <% do while not rs.eof %> <input type="checkbox" name="dok" value="<%=rs("ID")%>"> <% rs.movenext:loop end if %> <input type="submit" value="Dök.." />
search-dok.asp
<% ID=Request.Querystring("dok")
Set baglanti=Server.Createobject("Adodb.Connection") baglanti.provider="Microsoft.Jet.Oledb.4.0" baglanti.open Server.Mappath("logo.jpg.mdb")
sql="select * from tbkayit where ID like '%"&ID&"%'" Set rs=baglanti.execute(Sql) %>
<% if rs.eof then response.write "Kayıt Bulunamadı !!!" %>
<% else %>
<% do while not rs.eof %> <p><%=rs("ID")%></p> <p><%=rs("boy")%></p> <% rs.movenext:loop end if %>
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.
quote:
Orijinalden alıntı: Sandrain
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.
quote:
Orijinalden alıntı: blackDiamond1980
kimse cevap yazmıycak zannetmeye başlamıştım, ilgilendiğin için sağol.
split kullanmadım örnek verebilirsen sevinirim.
Alıntıları Göster
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.
quote:
Orijinalden alıntı: Sandrain
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.
Alıntıları Göster
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.
<% ID=Request.Querystring("dok") For Each x in Split(ID,",")
Set baglanti=Server.Createobject("Adodb.Connection") baglanti.provider="Microsoft.Jet.Oledb.4.0" baglanti.open Server.Mappath("logo.jpg.mdb")
sql="select * from tbkayit where ID = "&x&"" Set rs=baglanti.execute(Sql)
if rs.eof then response.write "Kayıt Bulunamadı !!!" else %>
<% do while not rs.eof %> <tr> <th><%=rs("ID")%></th> <th><%=rs("unvani")%></th> </th> <% rs.movenext:loop end if next %>
quote:
Orijinalden alıntı: blackDiamond1980
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.
<% ID=Request.Querystring("dok") For Each x in Split(ID,",")
Set baglanti=Server.Createobject("Adodb.Connection") baglanti.provider="Microsoft.Jet.Oledb.4.0" baglanti.open Server.Mappath("logo.jpg.mdb")
sql="select * from tbkayit where ID = "&x&"" Set rs=baglanti.execute(Sql)
if rs.eof then response.write "Kayıt Bulunamadı !!!" else %>
<% do while not rs.eof %> <tr> <th><%=rs("ID")%></th> <th><%=rs("unvani")%></th> </th> <% rs.movenext:loop end if next %>
Alıntıları Göster
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.
quote:
Orijinalden alıntı: Sandrain
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.
Alıntıları Göster
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.
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.
Alıntıları Göster
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.
quote:
Orijinalden alıntı: blackDiamond1980
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.
Alıntıları Göster
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.
quote:
Orijinalden alıntı: Sandrain
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.
Alıntıları Göster
hım tam olarak anlamadım ama neyse :) çözücez artık sağol
quote:
Orijinalden alıntı: blackDiamond1980
hım tam olarak anlamadım ama neyse :) çözücez artık sağol
Alıntıları Göster
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.
quote:
Orijinalden alıntı: Sandrain
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.
Alıntıları Göster
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.
<% ID=Request.Querystring("dok") For Each x in Split(ID,",")
Set baglanti=Server.Createobject("Adodb.Connection") baglanti.provider="Microsoft.Jet.Oledb.4.0" baglanti.open Server.Mappath("logo.jpg.mdb")
sql="select * from tbkayit where ID = "&x&"" Set rs=baglanti.execute(Sql)
if rs.eof then response.write "Kayıt Bulunamadı !!!" else %>
<% do while not rs.eof %> <tr> <th><%=rs("ID")%></th> <th><%=rs("unvani")%></th> <th><%=rs("ckadet")%></th> </th> <% rs.movenext:loop end if next %>
quote:
Orijinalden alıntı: blackDiamond1980
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.
<% ID=Request.Querystring("dok") For Each x in Split(ID,",")
Set baglanti=Server.Createobject("Adodb.Connection") baglanti.provider="Microsoft.Jet.Oledb.4.0" baglanti.open Server.Mappath("logo.jpg.mdb")
sql="select * from tbkayit where ID = "&x&"" Set rs=baglanti.execute(Sql)
if rs.eof then response.write "Kayıt Bulunamadı !!!" else %>
<% do while not rs.eof %> <tr> <th><%=rs("ID")%></th> <th><%=rs("unvani")%></th> <th><%=rs("ckadet")%></th> </th> <% rs.movenext:loop end if next %>
Alıntıları Göster
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.
quote:
Orijinalden alıntı: Sandrain
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.
Alıntıları Göster
böyle yaptım ama bu seferde sadece son döktüğü kaydı yazıyor
<% nakliye=Request.Querystring("cknakliyeci") ID=Request.Querystring("dok") For Each x in Split(ID,",")
Set baglanti=Server.Createobject("Adodb.Connection") baglanti.provider="Microsoft.Jet.Oledb.4.0" baglanti.open Server.Mappath("logo.jpg.mdb")
sql="select * from tbkayit where ID = "&x&"" Set rs=baglanti.execute(Sql)
set ckToplam = Conn.Execute("Select Sum (ckadet) As ckToplam from tbkayit where ID = "&x&"")
if rs.eof then response.write "Kayıt Bulunamadı !!!" else %> <% do while not rs.eof %> <tr class="metin-baslik"> <th><%=rs("ID")%></th> <th><%=rs("unvani")%></th> <th><%=rs("ckadet")%></th> <% rs.movenext:loop end if next %> <tr> <th> </th> <th> </th> <th><%=ckToplam("ckToplam")%></th> </tr>
quote:
Orijinalden alıntı: blackDiamond1980
böyle yaptım ama bu seferde sadece son döktüğü kaydı yazıyor
<% nakliye=Request.Querystring("cknakliyeci") ID=Request.Querystring("dok") For Each x in Split(ID,",")
Set baglanti=Server.Createobject("Adodb.Connection") baglanti.provider="Microsoft.Jet.Oledb.4.0" baglanti.open Server.Mappath("logo.jpg.mdb")
sql="select * from tbkayit where ID = "&x&"" Set rs=baglanti.execute(Sql)
set ckToplam = Conn.Execute("Select Sum (ckadet) As ckToplam from tbkayit where ID = "&x&"")
if rs.eof then response.write "Kayıt Bulunamadı !!!" else %> <% do while not rs.eof %> <tr class="metin-baslik"> <th><%=rs("ID")%></th> <th><%=rs("unvani")%></th> <th><%=rs("ckadet")%></th> <% rs.movenext:loop end if next %> <tr> <th> </th> <th> </th> <th><%=ckToplam("ckToplam")%></th> </tr>
Alıntıları Göster
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.
quote:
Orijinalden alıntı: Sandrain
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.
Alıntıları Göster
Dostum yardımların için sağol, çalıştı sonunda
<% ID=Request.Querystring("dok") For Each x in Split(ID,",")
Set baglanti=Server.Createobject("Adodb.Connection") baglanti.provider="Microsoft.Jet.Oledb.4.0" baglanti.open Server.Mappath("logo.jpg.mdb") set ckToplam = baglanti.Execute("Select Sum (ckadet) As ckToplam from tbkayit where ID = "&x&"")
toplamdeger = toplamdeger + ckToplam("ckToplam") next %> <th><%=toplamdeger%></th>
quote:
Orijinalden alıntı: blackDiamond1980
Dostum yardımların için sağol, çalıştı sonunda
<% ID=Request.Querystring("dok") For Each x in Split(ID,",")
Set baglanti=Server.Createobject("Adodb.Connection") baglanti.provider="Microsoft.Jet.Oledb.4.0" baglanti.open Server.Mappath("logo.jpg.mdb") set ckToplam = baglanti.Execute("Select Sum (ckadet) As ckToplam from tbkayit where ID = "&x&"")
toplamdeger = toplamdeger + ckToplam("ckToplam") next %> <th><%=toplamdeger%></th>
Alıntıları Göster
Rica ederim. Bu derttende kurtuldun. Ne mutlu sana :)
quote:
Orijinalden alıntı: Sandrain
Rica ederim. Bu derttende kurtuldun. Ne mutlu sana :)
Alıntıları Göster
sayende dostum :) valla çok uğraştım aslında basitmiş
devam ediyorum halen, daha çok işi var
quote:
Orijinalden alıntı: blackDiamond1980
sayende dostum :) valla çok uğraştım aslında basitmiş
devam ediyorum halen, daha çok işi var
Alıntıları Göster
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?
<% set cemgr=server.CreateObject("Adodb.Recordset") sql="select * from uyeler where uye_id="&session("uye_id") cemgr.open sql,cms,1,3
%> <% uye_id = Request.QueryString("uye_id") Set cem = Server.CreateObject("ADODB.RecordSet") sql = ("Select * from siparisler where onay=False and uye_id = "& session("uye_id") &" order by id desc") cem.Open sql, cms, 1, 3 %>
<% do while not cem.eof %> <% resim = cem ("resim") veriparcala = split(resim, ",") For i = 0 to Ubound(veriparcala) %>
<% cem.movenext loop %> <% end if %> <% cemgr.Close Set cemgr = Nothing cem.Close Set cem = Nothing %>
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.
quote:
Orijinalden alıntı: ozelisler
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?
<% set cemgr=server.CreateObject("Adodb.Recordset") sql="select * from uyeler where uye_id="&session("uye_id") cemgr.open sql,cms,1,3
%> <% uye_id = Request.QueryString("uye_id") Set cem = Server.CreateObject("ADODB.RecordSet") sql = ("Select * from siparisler where onay=False and uye_id = "& session("uye_id") &" order by id desc") cem.Open sql, cms, 1, 3 %>
<% do while not cem.eof %> <% resim = cem ("resim") veriparcala = split(resim, ",") For i = 0 to Ubound(veriparcala) %>