Asp.net'te aşanların yardımını bekliyorum ...

Kodla Büyü

ulutas55

Site Gezgini
Mesajlar
95
İyi akşamlar arkadaşlar.
Asp.net C# ta resimde görüldüğü gibi bir uygulama yapmak istiyorum. Fakat planlama yaparken bir noktaya gelince artık insan tıkanıyor ve her defasında sıfıra dönmek zorunda kalıyorum.
Son çare ustalardan yardım istemeye karar verdim :D

Kısaca olayı anlatayım;

web sayfamda ingilizce bir hikaye var. Bu hikaye veritabanımda hikaye tablomda saklı. veritabanımda ikinci bir tablo daha var ve tüm ingilizce kelimeler ve türkçeleri burada saklı.

Olay şu;
öğrenci hikayeyi okurken takıldığı kelimelerin üstüne fareyle geldiği anda açılan bir popup'ta Türkçesi anında görünecek. Hikayedeki tüm kelimelere bir nevi link verilmiş ve onmouse durumunda pencere açılmış gibi birşey olacak.

Bu konuda öneri ve fikirlere çok ihtiyacım var.
 

Ekli dosyalar

  • hikaye.jpg
    hikaye.jpg
    180 KB · Görüntüleme: 1,100
hocam bu veritabanında kelime sayısı kadar sorgu yaparak sayfayı yüklemek demek,
onun yerine tıklanan kelime modal popup ile açılsa ve o pencerede hem kelimenin anlamı ve detay versen daha sağlıklı olacağı kanaatindeyim
 
sadece c# ile yapılabilir mi bilmem ama jquery ile sayfa yenilenmeden kelime üzerine gelindiğinde baloncuk açılıp içi veritabanından gelecek şekilde bir sorgu ile jquery yardımıyla istediğiniz uygulamayı yapabilirsiniz..
 
Kod:
public partial class _Default : System.Web.UI.Page 
{
    string hikaye = "When i was a young man, i traveled all of the world.";
    protected void Page_Load(object sender, EventArgs e)
    {
        int i = 0, x = 0, bosluk= 0;
        string kelime = "";
        string link = "";
        for (i = 1; i < 100; i++)
        {
            bosluk = hikaye.IndexOf(" ");
            if (bosluk > 0)
            {
                kelime = hikaye.Substring(x, bosluk);
                hikaye = hikaye.Substring(bosluk + 1, hikaye.Length - bosluk - 1);
            }
            else
            {
                kelime = hikaye;
                i = 100;
            }
            link = "http://translate.google.com/#en/tr/" + kelime;
            Response.Write("<a href = '" + link + "' >" + kelime + " </a>");
        }
    }
 

Ekli dosyalar

  • WebSite2.rar
    119.6 KB · Görüntüleme: 31
celikumit' Alıntı:
hocam bu veritabanında kelime sayısı kadar sorgu yaparak sayfayı yüklemek demek,
onun yerine tıklanan kelime modal popup ile açılsa ve o pencerede hem kelimenin anlamı ve detay versen daha sağlıklı olacağı kanaatindeyim

@celikumit hocam, benim kafamdan geçende ilk bahsettiğiniz olaydı. Tek hücredeki hikayeyi boşluklarısaydırarak bir dizi içine alıp kelime sayısı kadar link oluşturup veritabanından kontrol ederek tooltip'te göstermekti. Ama kelimelere döngü yardımıyla link verme olayını çözemedim. modal popup yapmak istesem kelimeye link verme nasıl olacak?

endoplazmik bi kulum' Alıntı:
sadece c# ile yapılabilir mi bilmem ama jquery ile sayfa yenilenmeden kelime üzerine gelindiğinde baloncuk açılıp içi veritabanından gelecek şekilde bir sorgu ile jquery yardımıyla istediğiniz uygulamayı yapabilirsiniz..

Hocam jquery'e pek hakim değilim ve işin diğer boyutu ve benim tıkandığım nokta; kelimelere teker teker nasıl link verebiliriz?
Aslında sizin söylediğiniz şey tam benim aradığım olay 8) örnek uygulamanız varsa çok yardımcı olur bana :)


glassic' Alıntı:
Kod:
public partial class _Default : System.Web.UI.Page 
{
string hikaye = "When i was a young man, i traveled all of the world.";
protected void Page_Load(object sender, EventArgs e)
{
int i = 0, x = 0, bosluk= 0;
string kelime = "";
string link = "";
for (i = 1; i < 100; i++)
{
bosluk = hikaye.IndexOf(" ");
if (bosluk > 0)
{
kelime = hikaye.Substring(x, bosluk);
hikaye = hikaye.Substring(bosluk + 1, hikaye.Length - bosluk - 1);
}
else
{
kelime = hikaye;
i = 100;
}
link = "http://translate.google.com/#en/tr/" + kelime;
Response.Write("<a href = '" + link + "' >" + kelime + " </a>");
}
}

@glassic hocam öncelikle sizin bu uygulama bayağı yol gösterici oldu sağolun.
fakat benim yapmaya çalıştığım, bu kelimelerin üzerine geldiğimde Google Translate 'e gitmeden veritabanında tablolardan kelimenin karşılığını bulup bir tooltip, popup, messagebox yada benzeri bir nesnede göstermesi.
birde burda ufak bir sorun olacak. kelimenin sonundaki noktalama işaretleri...


Arkadaşlar cevaplarınız için çok sağolun. Allah razı olsun :alkis:
Gerçi sabah 7:20 den akşam 22:20 ye kadar dersten sonra pek sağlıklı düşünemiyorum. sabah sakin kafayla bi daha incelerim.
Tekrar çok teşekkür ederim :)
 
Hocam merhaba;

Size kod olarak yardımcı olamayabilirim belki ancak yaklaşımda bir şeyler aktarabilirim sanırım. Sizin yapmak istediğiniz kelime çalışması ingilizce
çeviri olacak ben bilmediğimden örneklerimi Türkçe vereceğim ama yaklaşımları algılayacaksınızdır diye tahmin ediyorum.


Öncelikle şu sorunlarınıza cevap veriniz.

- Cümleler kurallı mı yazılacak ?
- İmla hataları olacak mı ?
- Cümle sonlarında nokta olacak mı?
- Boşluklar düzenli konulacak mı?
- Virgülden sonra boşluk kullanılacak mı?

Eğer bu gibi sorularınıza cevabınız evet ise (Yani kelime okuma hedefiniz profesyonelce olmayacaksa), Kelimeleri algılamanız için boşluk saymanız gerekir. Peki Boşluk sayarsak ne olacak.

Ben, bir kalem satın aldım.

- Yukarıda ki cümlede boşluk saydırarak diziniz de "Ben, " "bir " "kalem " "satın " "aldım." Şeklinde bir sonuca ulaşırsınız. Yani bu demek oluyor ki, sizin boşluk saydırarak kelime yakaladıktan sonra imladan da arındırmanız gerekir. Bu işin ikinci kısmıdır. Bu aşamada ise

for (x=1; x<=kelimeuzunluk;x++)
if (NOT(Kelimeninharfi==" " or Kelimeninharfi=="," or Kelimeninharfi==";".......))
bufferkelime= bufferkelime + kelimeninharfi

yukarıda ki kod çalışmaz onu diyeyim öncelikle size şunu anlatır ama; Boşluk ile yakaladığım kelimeyi harf harf kontol et ve bak eğer o harf 3. karaktere tekabül ediyorsa (, ; " " gibi) buffera kelimeyi alma yoksa al. "Ben, " kelimesini işlediğinizde elinizde son olarak "ben" hali ile kalacaktır ve artık veritabanı kontrol aşamasına gelebilirsiniz. İşin mesaj kısmında sanırım diğer arkadaşlar daha yardımcı olacaktır.

Farklı bir cümle ele alırsak;

O an bakakaldım.

Şimdi yukarıdaki cümleyi boşluk saydırarak hesaplarsak "O " "an " "bakakaldım." şeklinde olacaktır diziniz. Farkettiyseniz bizim çeviri için kullanacağımız "O an" kelimesi boşluk tarama yüzünden "O " ve "an " şeklinde çıktı. Yani "O" kelimesi sanki üçüncü tekil şahışmış gibi durdu aslında kelime "O an"
idi. Böyle bir durumda boşluk saydırmak da pek bir anlam ifade etmeyecektir. İngilizcede de buna benzer durumlar mevcuttur tahminimce.

Farklı bir cümle ele alırsak;

Şair; "- İstanbul'u dinliyorum gözlerim kapalı." dedi.


Yukarıdaki cümlede "İstanbul'u " kelimesi bir isim ifadesi taşıyor. burada az önce bahsettiğim kelimenin harflerini bul dediğimizdeki kısımda kelimeniz
"İstanbulu" şeklinde çıkacaktır. Muhtemelen de veritabanınızda siz bu şekilde kaydetmeyeceksiniz.


Farklı bir husus ingilizce çevirttiğim kelimeye bakarsak;

İstanbul'u dinliyorum gözlerim kapalı. kelimesini çevirttim
I listen to Istanbul, my eyes closed şeklinde çıktı

Yukarıdaki cümlede almış olduğunuz "eyes" kelimesi gözler anlamı taşıyor. Sizin veritabanınızda eye olarak mı duracak yoksa
eye: göz
eyes: gözler
şeklinde mi. BU şekilde ek almış kelimeler için ne düşünüyorsunuz.


Son Cümle

kapak örtüsünü koy Google çeviri ile sonucu

Put the valve cover çıkıyor.

valve: subap, valf
cover: kapak, örtü
the valve: örtüsünü
the cover: kapak

yukarıdaki cümlede kelimelerinizi aldınız. "valve" kelimesini veritabanında ararken ilk bulduğunuz sutunu döndüreceksiniz tahminimce
Sonuç ne çıkacak bakalım.Doğrudan kelimenin ilk sorgu halini aldık ve yanlış çıktı.


Subap kapağını koy.


Yine yukarıdaki cümle için bir husus daha var ki anlamları aynı yazılışları farklı kelimeler. Şimdi ;

cover: kapak, örtü

Put the valve cover kelimesinin

put the cover cover. Yukarıda saydıklarımıza göre bu cümlede sorun yok demektir. Ama valve yerine cover var artık. Çünkü aynı anlamları da
üstleniyorlar.
Bu durumda Türkçe
Örtü örtüsünü ört. Çıkar buda bizim cümlemiz değil...

Son olarak "the" kelimesini ney olarak alacaksınız. farzedelim "put" koymak anlamı taşır. "put the" dersek de koy olur. Şimdi siz
put diye mi arayacaksınız yoksa put the diye mi.


Şimdi sayın hocam; tekrar yinelemekte fayda görüyorum. Türkçe veya İngilizce yazdığım cümlelelerde hatalar olabilir. Çok takılmayın
o kısma. Size anlatmak istediklerime yoğunlaşmaya çalışın. Saymış olduklarımda gördüğünüz gibi kelime işlemci programlarının içine girdikçe
çok fazla kıstas ortaya çıkıyor ki zaten sizin kodlamaya hep en başa dönmenizin sebebide budur. Bana sorarsanız;

Öncelikle Arama mantığınızı oturtun,

kelimeyi nasıl arayacak (veritabanındaki ilk kaydı mı getirecek yoksa cümledeki anlamını mı bulacak)
Kelimenin eklerini arayacak mı
kelime cümle içerisinde nasıl bulunacak.
Noktalama işaretlerini siz mi koyacaksınız.
Yazdığını cümleler kurallı mı olacak.
Eğer uzun uzun metinler yazacaksanız bu boşluk sayarak kelime bulma olayı döngünüzün uzun olmasına sebep verir ki birbirine bağlı bence
en az 3 döngü ile kelimenin eksiz ve imlasız haline ulaşırsınız. Bu da yorabilir programı...

Kısaca, size şunu diyebilirim, herşeyden önce algoritma kısmında arama kriterlerinizi belirtin. Ondan sonra kelime bulma tarzınızı
çıkartın sonrasında da kodlamaya geçin. Bir örnek vermek gerekirse

her kelimenin önüne

"1 My" "2 name" "3 is" "x Burhan" şeklinde rakamlar korsunuz sonra bu rakamları yakalarsınız. ve dersiniz ki

"1 Benim" "2 İsim" "3 dir" "x Burhan" bu sizin için yeterli ise bir yoldur.

Farklı bir yöntem olarak hikayelerin ingilizce ve Türkçe metinlerini barındırırsınız.

C1: 1. cümleyi ifade eder
C1K1:C cümlesindeki 1. kelimeyi ifade eder.

C1("C1K1 My" "C1K2 name" "C1K3 İs" "CKx Burhan")

buradan ne çıkartırsınız. C1 i bildiğiniz için cümlenin en anlamlı halini gösterebilirsiniz

- Benim adım burhandır

Kelime olarakda name is üzerine geldiğinde
is kelimesi ondan sonraki kelimeye dır dir anlamı kattığından

C1K3 var ise sonraki kelimeyi de alıp ( C1Kx ) birleştirerek yazdırabilirsiniz.

"BUrhandır".
--- BU örnek size yönetimi tamamen ele alma kavramını gerektirir.

Başka örnek arkadaşlarında dediği gibi google translate yardımı ile buldurmak

Bunun dışında 8 farklı arama tekniği var programlama derslerinde anlatılan. Bunlardan birini kullanarak veritabanı arama hızınızı arttırabilirsiniz.

Gördüğünüz gibi yöntem bulma konusu kolay. Siz önce nasıl bir yönetim ve arama mantığı kuracağınıza karar verin.
Yazdıklarım baya oldu, Umarım gereksiz bilgi vermemişimdir. İyi çalışmalar.
 
bir fikrim var :idea:
sayfa yüklenirken tablodan tüm kelimeleri çekip bir diziye yüklersin sonra bu dizideki elemanları javascripte aktarıp herkelime için onload özelliğinde js de sorgulatır sonucu js de verirsin böylece her kelime için sorgu yapmak zorunda kalmazsın
Kod:
<script language="JavaScript" type="text/JavaScript">
<!--
function popup(ms) { //v1.0
var trk = new Array;
var ing = new Array;
trk[0]="hakkinda";
ing[0]="about";
trk[1]="orman";
ing[1]="jungle";
trk[2]="bir";
ing[2]="one";
trk[3]="aslan";
ing[3]="lion";
trk[4]="aslan";
ing[4]="lion";

for (s = 0; s <= 4; ++s )
{
if(ms==ing[s])
{
msg=trk[s];
alert(msg);
break;
  }}
}
function kapa() {
window.close;
}
//-->
</script>


<a href="#" onMouseOver="popup('one')" onMouseOut="kapa">one</a> 
<a href="#" onMouseOver="popup('jungle')" onMouseOut="kapa">jungle</a> 
<a href="#" onMouseOver="popup('lion')" onMouseOut="kapa">lion</a>
burda
trk[0]="hakkinda";
ing[0]="about";
trk[1]="orman";
ing[1]="jungle";
trk[2]="bir";
...
kısmını değiştirip bir eof döngü açıp veritabanından çektiğin değerleri aktarmalısın
trk=<%turcesi%>
ing=<%ingilizcesi%>

gibi

tabi bu durumda hikayeyi kelime kelime yazdırman lazım buda biraz sıkıntılı göründü şimdi gözüme
birde bu window.alert le pek hoş olmuyor jquery felan kullanman lazım
:)
 
hocam sözlükte kaç bin kelime var,
jquery ilede yapsan farketmez,
anlık üzerine gelince gösterecekse bir şekilde veritabanındaki tüm kelimeler yüklenecek,
yapılamazmı yapılır zor değil ama çok kullanıcılı sistemde bu şekilde yaparsan aşırı yüklenirsin

bendim dediğim şu hocam son derece basit ve veritabanını en az meşgul eden yöntem
nasıl yapacğın konusunda ise
split ile cümleyi kelimelere ayırır cümleyi diziye veya kolleksiyona ayırırsın,
code behinde bunu gönderir ve replace metodu ile bunu htmnl koda döüştürü link verirsin
örneğin
veritabanından okuduğun kelime başarı olsun sana html olarak
<a href='sozcukanlami.aspx?kelime=başarı>başarı</a>
şekline dönüştürüp sayfaya yazarsın,
popup pencereye paramete gideceğincen yapacağın tek şey sozcukanlami.aspx sayfanda bu sözcükle ilgili istediğin bilgileri vermek
hem bu sayede tüm dönüşün işlemi sozcukanlami.aspx de oalcağından daha sonra örnek kullanımlar detaylar vs de görüntülersin,
fırsat bulursam bir örnekde hazırlar eklerim
asp.nette popup pencereyle ilgli bir sürü dökümanda bulursun zaten
 
celikumit' Alıntı:
hocam sözlükte kaç bin kelime var,
jquery ilede yapsan farketmez,
anlık üzerine gelince gösterecekse bir şekilde veritabanındaki tüm kelimeler yüklenecek,
yapılamazmı yapılır zor değil ama çok kullanıcılı sistemde bu şekilde yaparsan aşırı yüklenirsin

bendim dediğim şu hocam son derece basit ve veritabanını en az meşgul eden yöntem
nasıl yapacğın konusunda ise
split ile cümleyi kelimelere ayırır cümleyi diziye veya kolleksiyona ayırırsın,
code behinde bunu gönderir ve replace metodu ile bunu htmnl koda döüştürü link verirsin
örneğin
veritabanından okuduğun kelime başarı olsun sana html olarak
<a href='sozcukanlami.aspx?kelime=başarı>başarı</a>
şekline dönüştürüp sayfaya yazarsın,
popup pencereye paramete gideceğincen yapacağın tek şey sozcukanlami.aspx sayfanda bu sözcükle ilgili istediğin bilgileri vermek
hem bu sayede tüm dönüşün işlemi sozcukanlami.aspx de oalcağından daha sonra örnek kullanımlar detaylar vs de görüntülersin,
fırsat bulursam bir örnekde hazırlar eklerim
asp.nette popup pencereyle ilgli bir sürü dökümanda bulursun zaten

hocam örnek olursa çok güzel olur.minnettar kalırım :)

hikayeyi diziye atıyorum. böldükten sonra kelimeleri tabloda arayıp yükleme kısmında kafam karışıyor ve işin içinden çıkamıyorum.
 
Geri
Üst