+ Yanıtla
Sayfa Düzeni: 1 / 2
1 2 SonSon
Toplam 11 sonuçtan 1 ile 10 arası olanlar

Konu Başlığı: Textbox dan her satir icin veritabanina ayri kayit

  1. #1

    Textbox dan her satir icin veritabanina ayri kayit

    Merhabalar arkadaslar,

    Textboxtan ornegin, 1000 adet linki (her satirda 1 link olacak sekilde ya da daha dogrusu <br> -Char(13) idi saniyorum- karakteri yerinede olabilir) veritabanina kayit etmek istiyorum tabii her satirda ki linki ayri ayri kayit edecek.

    Replace fonksiyonu ile birseyler yapmayi denedim tabii yapamadim. Benzeri kaynak olarak ornek aradim internetten ancak bulamadim. Tahminimce yaygin olarak kullaniliyor olabilir (Bazi veri girislerini daha kolay hale getirebilir).

    Boyle birseyin yapilirken, ayni zamanda bazi karakterlerin degisimi icin replace fonksiyonu da kullanmamiz mumkun olur muydu?

    Yardimlariniz icin simdiden cok tesekkur ederim.

    Saygilarimla,
    Turkiye de yasamadigimdan dolayi, Turkce klavyem yok ve bazen imla hatalari yapabiliyorum. Hatalarim icin simdiden ozur dilerim.

  2. #2

    Re: Textbox dan her satir icin veritabanina ayri kayit

    Sanırım:
    Sanırım çünkü denemedim.

    Split fonksiyonunu kullanabilirsin. Örn:

    gelenveri=request.form("textalani")
    linkler=split(gelenveri,CHR(13))

    linkler değişkenini, gelen veriyi CHR(13) karakterine bölerek ve her satırı dizi olarak atadık.
    yani:
    linkler(1) ' gelen verideki 2.satırı ifade eder.(Diziler 0'dan başlar.)

    ubound(linkler) = dizinin eleman sayısını verecektir.

    Karakteri kaydederken, zararlı harfleri kelimeleri replace ile uçurman mümkün.
    Ayrıntılı kod yazımı istersen eklemeye çalışırım.

  3. #3

    Re: Textbox dan her satir icin veritabanina ayri kayit

    <br> yerine alt satıra geçme yani VbCrlf yi kullan chr(10) da olur.

    yani
    site.com
    site2.com
    site.com şeklindeki veriyi parçalarsın.

  4. #4

    Re: Textbox dan her satir icin veritabanina ayri kayit

    en doru kullanımı
    Kod:
    linkler = Split(gelenveri, vbCrLf)
    
    For i = 0 to UBound(linkler) - 1
        SQL = "......"& Replace(linkler(i), "degisecek", "yeni_deger")
       Conn.Execute(SQL)
    Next
    
    chr(10) veya chr(13) tek başına kullanıldığında doğru sonuç vermeyebilir. bunun yerine internal değişken olan satırsonu ifadesini kullanmak daha doğru olur.
    "oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
    http://www.sipidik.com

  5. #5

    Re: Textbox dan her satir icin veritabanina ayri kayit

    Her linki ayrıştırarak veritabanına teker teker girmek veritabanına işkence etmek demektir.
    Linkleri bir dizi haline getirerek tek seferde veritabanına gönderirsen daha performanslı sonuç elde edersin.

    Yerinde olsam önce linkleri bir XML çıktı haline getirir ve veritabanına gönderirdim. Alttaki yazıyı yazmıştım vakti zamanında. Okursan nasıl yapıldığını göreceksin.

    http://blog.cihanucar.com/makale/ms-...rametre-gecmek
    Mesaj energizer tarafından 12.09.2008 (21:18) yeniden düzenlendi. Açıklama: imla

  6. #6

    Re: Textbox dan her satir icin veritabanina ayri kayit

    hmm, değişik yöntem.

    elbette teker teker göndermekten hızlı olur ancak, gönderilecek veri tipi aynı ise XML kullanacağıma string haline getirip parametre göndermeyi tercih ederdim. XML yönteme göre daha hızlı olacağı ortada...
    "oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
    http://www.sipidik.com

  7. #7

    Re: Textbox dan her satir icin veritabanina ayri kayit

    Alıntı absconder tarafından gönderilen mesaj: Mesajı Göster
    hmm, değişik yöntem.

    elbette teker teker göndermekten hızlı olur ancak, gönderilecek veri tipi aynı ise XML kullanacağıma string haline getirip parametre göndermeyi tercih ederdim. XML yönteme göre daha hızlı olacağı ortada...
    String haline getirip parametre yollarsanız sp içinde tekrar ayrıştırma işlemleri yapmanız gerekir.
    SQL server maalesef bize bir Array parametre tipi sunmadığı için illaki bir ayrıştırma işlemi gerçekleştirmek gerekiyor. Bu ayrıştırma işlemleri de mecburen çeşitlii döngüler ile yapılmak zorunda, haliyle küçük veriler dışında tümleşik OPENXML yönteminin daha performanslı olacağını düşünüyorum.

    Diğer taraftan string parametre gönderme esnasında SQL injection ihtimalini de göz önünde tutmak gerekiyor.
    Mesaj energizer tarafından 13.09.2008 (11:26) yeniden düzenlendi. Açıklama: imla
    Spina - Kurumsal Web ve Intranet Çözümleri
    www.spina.com.tr

  8. #8

    Re: Textbox dan her satir icin veritabanina ayri kayit

    Hepinize cok tesekkur ederim. ASP, ASPX meraklisiyim. Veritabani olarak fazla veri tutmasindan dolayi uzun suredir MySQL kullandigim icin veritabanini mssqlede ceviremiyorum (en azindan veri kaybetmeden cevirebilecek bir yontem bilmiyorum, veri aktarimi yapmam gerek-). MySQL veritabani en sorunsuz Linux isletim sistemlerinde ASP ve aspx de windows sistemlerinde oldugundan dolayi zaten projelerim icin 2 serverim bulunmakta, biri veritabani biri scriptler icin.

    XML kodu bana suan icin oldukca karisik geldi. Onun yerine direk olarak textbox dan kopyala yapistirla kayit yapmak daha kolay gibi geliyor, elbette bos oldugum surece yazmis oldugunuz ornegi okuyup ogrenip bir projede kullanmak isterim.

    Proje derken, benim kendi hobimlerim icin yaptigim siteler ya da kendimi gelistirmek icin yazdigim bazi scriptler.

    Vaktiniz icin tekrar tesekkurler.

    Saygilarimla,
    Turkiye de yasamadigimdan dolayi, Turkce klavyem yok ve bazen imla hatalari yapabiliyorum. Hatalarim icin simdiden ozur dilerim.

  9. #9

    Re: Textbox dan her satir icin veritabanina ayri kayit

    Merhabalar arkadaslar,

    Konuyla ilgili oldugu icin bu baslik altina devam etmek istiyorum. Oncelikle yardimlariniz icin cok tesekkur ederim ancak henuz olumlu bir sonuc alamadim.

    default.ASP
    Kod:
    <form method="POST" action="ekle.ASP">
    <p><textarea rows="30" name="links" cols="100"></textarea><input type="submit" value="Add" name="B1"><input type="reset" value="reset" name="B2"></p>
    </form>
    
    ekle.ASP
    Kod:
    <%
    '#######################
    'Connecting to Database#
    '#######################
    Set conn=server.Createobject("Adodb.connection")
    conn.open "DRIVER={MySQL ODBC 3.51 Driver}; server=localhost; UID=test; pwd=tester; db=test_links;"
     
    strLink=Split(Request.form("links"), vbCrLf)
    For i = 0 to UBound(strLink) - 1
    set ekler=Conn.execute("INSERT INTO `deneme` ( `denemeID` , `links` ) VALUES ('', '"  & strLink & "')")
    Next
    %>
    
    Yukarida ki kod su hatayi vermekte:

    Error Type:
    Microsoft VBScript çalışma hatası (0x800A000D)
    Tür uyumsuz
    /test/deneme/ekle.ASP, line 10
    Ek olarak bir sorum ise bu kodlarin neresine ne sekilde replace fonksiyonu eklediysem

    bu iki satirdan biri icin mutlaka tur uyumsuz hatasi aldim:
    Kod:
    strLink=Split(Request.form("links"), vbCrLf)
    For i = 0 to UBound(strLink) - 1
    
    Bu hatayi tam olarak nasil cozecegimi dunden beri arastiriyorum. Expert Exchange diye bir site buldum benzeri bazi basliklara acilan cozumlerle duzenlemeye calistim ancak tur uyumsuz hatasini bir turlu gecemedim.

    Daha onceki yardimlariniz icin tesekkur ederim ve bu konuda yardimci olabilirseniz cok sevinirim.
    Turkiye de yasamadigimdan dolayi, Turkce klavyem yok ve bazen imla hatalari yapabiliyorum. Hatalarim icin simdiden ozur dilerim.

  10. #10

    Re: Textbox dan her satir icin veritabanina ayri kayit

    ekle.ASP deki
    Kod:
    set ekler=Conn.execute("INSERT INTO `deneme` ( `denemeID` , `links` ) VALUES ('', '"  & strLink & "')")
    
    satırını

    Kod:
    set ekler=Conn.execute("INSERT INTO `deneme` ( `denemeID` , `links` ) VALUES ('', '"  & strLink(i) & "')")
    
    olarak değiştirip dene.

+ Yanıtla
Sayfa Düzeni: 1 / 2
1 2 SonSon

Bu konu başlığı için etiketler

Mesaj Seçenekleri

  • Yeni başlık açamazsınız
  • Cevap yazabilirsiniz
  • Dosya ekleyemezsiniz
  • Mesajlarınızı değiştiremezsiniz