• 02-07-2009, 14:09:30
    #1
    merhabalar
    kayııt proses sayfamda hata aldığım yerdeki kodu aşağıda verdim
    kontrol döngüleri arasında verdiğim yerde form dan gelen frmlogin ve ve frmemail döngülerinin db de var olup olmadığını kontrol için yapmayı düşündüm var ise hata vermesi yok ise kaydı tamamlamasını istiyorum.
    sorunum şurda kontrolu yapıyor fakat eğer frmlogin e veya frmemail e girilen bilgiler db de var ise belirttiğim hata mesajı göstermeyip kayıt yap olarak belirttiğim yerdeki kodu ekrana yazdırıyor. bunu düzeltmem için yardımlarınıza ihtiyacım ve
    ve frmlogin e lcase ekleyerek küçük harf olarak kontrol yapıyorum. lcase ve ucase i birlikte nasıl kontrol edebilirim.
    lcase ve ucase için ayrı ayrı mı kontrol oluşturmam gerekiyor.
    acil olarak yardımlarınızı bekliyorum.

    <%
                               
    /////////kontrol döngüleri                
                Call openConn
                Set rsCheckUser = objConn.Execute("SELECT straccountid FROM tb_user WHERE straccountid Like '" & LCase(Request.Form("frmLogin")) & "'")
                    If NOT rsCheckUser.EOF Then
                            Response.Write "<center><b>Kullanici Adi Kullanimda<br>Login Name Already Using<b></center>"
                    End If
                Set rsCheckUser = objConn.Execute("SELECT count(1) FROM tb_user where strEmail Like '" & LCase(Request.Form("frmEmail")) & "'")
                    If Cint(rsCheckUser(0)) > 1 Then
                            Response.write "<center><b>E-Posta Adresi Kullanimda<br>E-Mail Adress Already Using<b></center>"
                    End If
                Set rsCheckUser = Nothing
                Call closeConn
    //////kontrol döngüleri
                                
    //////kayıt yap        
                Call openConn
                    objConn.Execute("INSERT INTO tb_user (straccountid, strPasswd, strEmail, msn, sehir, gizlisoru, cevap, strAuthority, idays, strSocNo, ip) VALUES ('" & Request.Form("frmLogin") & "', '" & Request.Form("frmPassword") & "', '" & Request.Form("frmmsn") & "', '" & Request.Form("frmsehir") & "', '" & Request.Form("frmgizli") & "', '" & Request.Form("frmcevap") & "', '" & Request.Form("frmEmail") & "',  2, 6, 1,'" & replace(replace(getIp(), "[", ""), "]", "") & "')")        
                Call closeConn
    ///kayıt yap            
                    
                Response.Write "kayıt başarılı filandı falandı"
    .........................
  • 02-07-2009, 23:41:08
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Kodlarda bir acayiplik var.

    ilk olarak like ile kontrol yaptırmak bu tür durumlarda çok mantıklı deil. Direk olarak eşitlik kontrolü yapmak daha mantıklı olacaktır.

    ikinci konu, her iki durum için ayrı ayrı if kullanmaktansa elseif ile koşulu daha sağlam kontrol etme şansın var. Eğer şöyleyse şunu yap, şöyleysede şunu, değilse bunu yap... gibi

    örnek olarak

    if kullaniciadi = "" Then
    Response.Write "Lütfen kullanıcı adını boş bırakmayınız"
    elseif sifre = "" Then
    Response.Write "Lütfen şifre belirtiniz."
    else
    Response.Write "tebrik ederim. Her şeyi doldurmuşsunuz"
    end if

    yukarıdaki örnekteki gibi koşulları her bir sorulama için ayrı ayrı kullanmak yerine bir zincirleme mekanizması kullanırsan sonuca ulaşmak daha rahat olacaktır.

    Bu tür kullanımlarda fonksiyonlardan yararlanırsan sanırım kontrolün daha iyi olabilir ve kod yazmak konusunda da zamanını ekonomik harcamış olursun.
  • 02-07-2009, 23:52:27
    #3
    öncelikle, niye like kullandın ki, tam bir eşleşme araman gerekiyo, like benzer verileri de hata gibi gösterebilir. (zaten genelde arama için kullanılır.)
    sonralıkla, bunun kontrolü için iki farklı sql sorgusu çalıştırman gerekmez. or ifadesi kullanarak tek bi sql ile işi bitirebilirsin.
    son olarak insert için kayıtseti açmamışsın ki. ve niye else ifadesi kullanmadın, daha kolay olurdu.
    neyse, şöyle kullanabilirsin mesela:
    _______________________________
    <%
    Call openConn
    Set rsCheckUser = objConn.Execute("SELECT straccountid FROM tb_user WHERE strEmail='" & LCase(Request.Form("frmEmail")) & "' or straccountid='" & LCase(Request.Form("frmLogin")) & "'")
    If rsCheckUser.EOF Then
    Set rsInsertUser = objConn.Execute("INSERT INTO tb_user (straccountid, strPasswd, strEmail, msn, sehir, gizlisoru, cevap, strAuthority, idays, strSocNo, ip) VALUES ('" & Request.Form("frmLogin") & "', '" & Request.Form("frmPassword") & "', '" & Request.Form("frmmsn") & "', '" & Request.Form("frmsehir") & "', '" & Request.Form("frmgizli") & "', '" & Request.Form("frmcevap") & "', '" & Request.Form("frmEmail") & "', 2, 6, 1,'" & replace(replace(getIp(), "[", ""), "]", "") & "')")
    Response.Write "kayıt başarılı filandı falandı"
    else
    Response.Write "<center><b>Kullanici Adi veya email Kullanimda<br>Login Name or email Already Using<b></center>"
    end If

    Set rsCheckUser = Nothing
    Set rsInsertUser = Nothing
    Call closeConn
    %>
    ________________________________
    kodları bi kontrol et birader, hızlıca ekledim.
    bi de değişkenleri ayrıca tanımlarsan, sql ifadelerinde daha rahat edersin.
    misal; email_adresi=lcase(request.form("email")) gibilerinden.