[Çözüldü]: Javascript Bilen? Link bekletme kodu döngü sorunu

  • Konbuyu başlatan Konbuyu başlatan ghost
  • Başlangıç tarihi Başlangıç tarihi
Kodla Büyü

ghost

Site Admin
Yönetici
Mesajlar
736
Kod:
<form name="indir">
<input name="indirbtn" type="button" value="{_file.DOWNLOAD_NAME}" onclick="location.href='http://www.bilgisayarbilisim.net/{_file.U_DOWNLOAD_LINK}';" title="<!-- IF _file.COMMENT_CLEAN -->{_file.COMMENT_CLEAN} / <!-- ENDIF -->{_file.DOWNLOAD_NAME}">[{_file.FILESIZE} {_file.SIZE_LANG}]
</form>	

<script type="text/javascript">
// <![CDATA[

var secs = 25;
var wait = secs * 1000;
document.indir.indirbtn.disabled=true;
for(i=1;i<=secs;i++) {
 window.setTimeout("update(" + i + ")", i * 1000);
}
window.setTimeout("timer()", wait);
function update(num) {
 if(num == (wait/1000)) {
  document.indir.indirbtn.value = "Dosyayı indir";
 }
 else {
  printnr = (wait/1000)-num;
  document.indir.indirbtn.value = "Lütfen (" + printnr + ") saniye bekleyiniz.!";
 }
}
function timer() {
document.indir.indirbtn.disabled=false;
}
	// ]]>
</script>



Sunucumuzda downloadlardan kaynaklanan aşırı bir yük var bunu azaltmak için 25 sn gibi bir süre bekletmek istiyorum ancak tek download linkinde çalışıyor eğer sayfada 2 tane varsa çalışmıyor. Javascript e yeni başladım yardımcı olacak arkadaşımız varsa minnettar olurum.
 
Re: Javascript Bilen? Link bekletme kodu döngü sorunu

2. buton için değişken adların değişik olsun, ilk butonun kodlarının bir benzeri
 
Re: Javascript Bilen? Link bekletme kodu döngü sorunu

sorun orda hocam her buton için ayrı değil tek script gerekli, sayfada kaç download olacağını bilemiyoruz, kişi 3 eklenti koyduğunda 3 kere 4 se 4 kere çalışacak... eğer jvascript ile tek seferde yapılmıyorsa, linkleri başka bir sayfaya yönlendirip yapmamız gerekecek . Buna bende dahil karşı çıkarım her link için 25 sn beklemek kişiyi uyuz eder, oysa tek satfada bütün linkler için 25 saniye beklemesi yeterli
 
Re: Javascript Bilen? Link bekletme kodu döngü sorunu

ghost' Alıntı:
sorun orda hocam her buton için ayrı değil tek script gerekli, sayfada kaç download olacağını bilemiyoruz, kişi 3 eklenti koyduğunda 3 kere 4 se 4 kere çalışacak... eğer jvascript ile tek seferde yapılmıyorsa, linkleri başka bir sayfaya yönlendirip yapmamız gerekecek . Buna bende dahil karşı çıkarım her link için 25 sn beklemek kişiyi uyuz eder, oysa tek satfada bütün linkler için 25 saniye beklemesi yeterli
hocam bak şimdi eğer üye 3 eklenti koymuşsa php ile döngü yaparsın içine o javascript kodlarını gömersin. mesela ilk buton için değişken adı sec1 iken 2. buton için sec2 olabilir
 
Re: Javascript Bilen? Link bekletme kodu döngü sorunu

Yaptım hocam , bu kezde döngü ve ilk download linki iptal oldu, diğerlerininde kafası bulandı.. içine ikinci bir döngü lazım


dediğine göre, bize değişkeni değitirecek bir döngü gerekiyor, bunu deneyim .. :+1:
 
Re: Javascript Bilen? Link bekletme kodu döngü sorunu

ghost' Alıntı:
Yaptım hocam , bu kezde döngü ve ilk download linki iptal oldu, diğerlerininde kafası bulandı.. :) içine ikinci bir döngü koymak gerekiyor


dediğine göre, bize değişkeni değitirecek bir döngü gerekiyor o zaman, bunu deneyim o zaman.. :+1:
söylediğim yoldan mı yaptın? ne gibi hatalar çıktı?
evet bazı değişken adlarını değiştirecek döngü gerek. buton ile ilgili bütün değişkenlerin adı farklı olsun, sec1 sec1 indirbtn1 indirbtn2 wait1 wait2 gibi...
 
Re: Javascript Bilen? Link bekletme kodu döngü sorunu

Şöyle bir şey işini görebilir hocam. Tuşları değiştirirsin. Tuşların isimlerini aralarına ; koyarak fonksiyona gönderiyorsun.

Kod:
<form id="form1" name="form1">
<input type="button" id="btn1" name="btn1" value="tıkla" />
<input type="button" id="btn2" name="btn2" value="tıkla" />
<input type="button" id="btn3" name="btn3" value="tıkla" />
<input type="button" id="btn4" name="btn4" value="tıkla" />
<input type="button" id="btn5" name="btn5" value="tıkla" />
</form>

<script type="text/javascript">
// <![CDATA[
var tuslar = "btn1;btn2;btn3;btn4;btn5";

var beklemeSuresi = 25;
function zamanAsimi()
{
	if (beklemeSuresi>0)
	{
		setTimeout("zamanAsimi()",1000)
		goster(true);
		beklemeSuresi--;
	}
	else goster(false);
}
function goster(ne)
{
	var d = tuslar.split(";");
	var el;
	for (var i=0;i<d.length;i++)
	{
		el = document.getElementById(d[i]);
		el.disabled = ne;
		el.value = ne?beklemeSuresi:"İndir";
	}
}
zamanAsimi();
// ]]>
</script>
 
Re: Javascript Bilen? Link bekletme kodu döngü sorunu

Hocam gönderdiğinizi denedim ancak malesef her bir linke 5 buton koydu. ama script öncekinden daha iyi mantık yavaş yavaş oluşuyor, şuan en azından ilk download linkinde çalıştırmayı başarmış olduk. diğer linkler için geri sayım çalışmıyor

örnek için...

http://bilgisayarbilisim.net/ilkogretim ... 15594.html
 
Re: Javascript Bilen? Link bekletme kodu döngü sorunu

Kod:
<form name="indir">
<input name="indirbtn" type="button" value="{_file.DOWNLOAD_NAME}" onclick="location.href='http://www.bilgisayarbilisim.net/{_file.U_DOWNLOAD_LINK}';" title="<!-- IF _file.COMMENT_CLEAN -->{_file.COMMENT_CLEAN} / <!-- ENDIF -->{_file.DOWNLOAD_NAME}">[{_file.FILESIZE} {_file.SIZE_LANG}]
</form>   

<script type="text/javascript">
// <![CDATA[

var secs = 25;
var wait = secs * 1000;




dosyasay=dosyasay+1
if dosyasay>=2 then
goto atla




document.indir.indirbtn.disabled=true;
for(i=1;i<=secs;i++) {
window.setTimeout("update(" + i + ")", i * 1000);
}
window.setTimeout("timer()", wait);
function update(num) {
if(num == (wait/1000)) {
  document.indir.indirbtn.value = "Dosyayı indir";
}
else {
  printnr = (wait/1000)-num;
  document.indir.indirbtn.value = "Lütfen (" + printnr + ") saniye bekleyiniz.!";
}
}





label atla





function timer() {
document.indir.indirbtn.disabled=false;
}
   // ]]>
</script>

Üstteki gibi bir mantık yürüttüm ama js içinde çalışıp çalışmayacağını denemek lazım. Tabi kodları da js'ye göre düzenlemek de gerekiyor.
 
Re: Javascript Bilen? Link bekletme kodu döngü sorunu

ghost' Alıntı:
Hocam gönderdiğinizi denedim ancak malesef her bir linke 5 buton koydu. ama script öncekinden daha iyi mantık yavaş yavaş oluşuyor, şuan en azından ilk download linkinde çalıştırmayı başarmış olduk. diğer linkler için geri sayım çalışmıyor

örnek için...

http://bilgisayarbilisim.net/ilkogretim ... 15594.html

Farklı id özelliği değerlerine sahip tuşlar için verdiğim örnek çalışır. Doğal olan da tuşların id ve name özellik değerlerinin her tuş için farklı olmasıdır. Ama sizin örnek gösterdiğiniz sayfaya baktım. Her indirme bağlantısı için aynı id ve name özellik değerlerine sahip formların içinde aynı id ve name özellik değerlerine sahip tuşlar barındırıyor. Bu şekilde isimlendinme HTML için hiç uygun değildir.

Ama yine de sizin için aşağıdakini yazdım. Sadece indirme formlarının bulunduğu sayfanın altına (</body> ifadesinin hemen üstüne) 1 tane bu koddan ekleyin. Eğer tuşların name özelliklerini değiştirmeye karar verirseniz (btn1) aşağıdaki getElementsByName fonksiyonunun yanında yazan tırnak içindeki adı değiştirin. Örnek sayfanızdaki tüm tuşların adları "btn1" olduğundan aşağıya da o şekilde yazdım. Kodu sayfanın altına yapıştırın yeter.

Kod:
<script type="text/javascript">
// <![CDATA[
function zamanAsimi()
{
   if (beklemeSuresi>0)
   {
      setTimeout("zamanAsimi()",1000)
      goster(true);
      beklemeSuresi--;
   }
   else goster(false);
}
function goster(ne)
{
   for (var i=0;i<tuslar.length;i++)
   {
      tuslar[i].disabled = ne;
      tuslar[i].value = ne?beklemeSuresi:"İndir";
   }
}

var beklemeSuresi = 25;

var tuslar = document.getElementsByName("btn1");
zamanAsimi();

// ]]>
</script>
 
Re: Javascript Bilen? Link bekletme kodu döngü sorunu

canora' Alıntı:
ghost' Alıntı:
Hocam gönderdiğinizi denedim ancak malesef her bir linke 5 buton koydu. ama script öncekinden daha iyi mantık yavaş yavaş oluşuyor, şuan en azından ilk download linkinde çalıştırmayı başarmış olduk. diğer linkler için geri sayım çalışmıyor

örnek için...

http://bilgisayarbilisim.net/ilkogretim ... 15594.html

Farklı id özelliği değerlerine sahip tuşlar için verdiğim örnek çalışır. Doğal olan da tuşların id ve name özellik değerlerinin her tuş için farklı olmasıdır. Ama sizin örnek gösterdiğiniz sayfaya baktım. Her indirme bağlantısı için aynı id ve name özellik değerlerine sahip formların içinde aynı id ve name özellik değerlerine sahip tuşlar barındırıyor. Bu şekilde isimlendinme HTML için hiç uygun değildir.

Ama yine de sizin için aşağıdakini yazdım. Sadece indirme formlarının bulunduğu sayfanın altına (</body> ifadesinin hemen üstüne) 1 tane bu koddan ekleyin. Eğer tuşların name özelliklerini değiştirmeye karar verirseniz (btn1) aşağıdaki getElementsByName fonksiyonunun yanında yazan tırnak içindeki adı değiştirin. Örnek sayfanızdaki tüm tuşların adları "btn1" olduğundan aşağıya da o şekilde yazdım. Kodu sayfanın altına yapıştırın yeter.

Kod:
<script type="text/javascript">
// <![CDATA[
function zamanAsimi()
{
   if (beklemeSuresi>0)
   {
      setTimeout("zamanAsimi()",1000)
      goster(true);
      beklemeSuresi--;
   }
   else goster(false);
}
function goster(ne)
{
   for (var i=0;i<tuslar.length;i++)
   {
      tuslar[i].disabled = ne;
      tuslar[i].value = ne?beklemeSuresi:"İndir";
   }
}

var beklemeSuresi = 25;

var tuslar = document.getElementsByName("btn1");
zamanAsimi();

// ]]>
</script>


:+1: çalıştı hocam sağolasın ancak her bir dosya için buton adımız sabit.. buda önemli bir sorun değil, dosyaların üstünde açıklamalrı var.

yanlız saniyeler 3 er 5 er atlıyor.. tek sorunumuz bu şimdi... herşey için sağolasın.. yoksa bugünümü bu iş için ayıracaktım.
 
Re: Javascript Bilen? Link bekletme kodu döngü sorunu

Kodları bir kaç kere yapıştırmış olabilirsin hocam. Ya da aynı sayfada birden fazla indirme bağlantısı içeren mesaj olduğundan ve sen de her indirme bağlantısı olan mesaj için aynı PHP yordamını sayfaya eklemiş olduğundan kodlar tekrar etmiş olabilir. Ancak o şekilde 3'er 5'er atlar saniyeler. Verdiğim kodların tüm sayfada sadece 1 kez tekrar edip etmediğine sayfanın çıktısında kaynağına bakarak kontrol etmeni tavsiye ederim. Bu duruma da Javascript ile çözüm var ama aynı kodun sayfada tekrar etmesi hoş değil. Sen en iyisi kodları tekrar ettirmemenin bir yoluna bak.

Kodları tekrar ettirmemek için aşağıdakini deneyebilirsin.

İndirme bağlantılarını yazdırdığın sayfanın içinde bu kodlara hiç yer vermeden aşağıdaki kodları;

Kod:
function zamanAsimi()
{
   if (beklemeSuresi>0)
   {
      setTimeout("zamanAsimi()",1000)
      goster(true);
      beklemeSuresi--;
   }
   else goster(false);
}
function goster(ne)
{
   for (var i=0;i<tuslar.length;i++)
   {
      tuslar[i].disabled = ne;
      tuslar[i].value = ne?beklemeSuresi:"İndir";
   }
}

var beklemeSuresi = 25;
var tuslar;
window.onload=function() 
{
   tuslar = document.getElementsByName("btn1");
   zamanAsimi();
};

alarak bir js dosyası oluştur. Dosyanın adının geriSayim.js olduğunu ve sayfanın da bu sayfa (posting.php) olduğunu varsayarsak, posting.php'nin <head> </head> etiketleri arasında kalacak şekilde biryerlere;

Kod:
<script type="text/javascript" src="geriSayim.js"></script>

kodunu ekle.

Yinede kodları tekrar ettirmeden, sayfanın içine ve sadece bir kez yazdırmak en doğru, hızlı ve garantili çalışacak bir seçenektir.
 
Re: Javascript Bilen? Link bekletme kodu döngü sorunu

Bir şey aklıma gelmemiş. Eğer yukarıda bahsettiğim gibi senin yazdığın PHP yordamı içine bu kodu yapıştırdıysan bu yordam her kullanıldığında kodlar da yordam gibi tekrar edecektir. Eğer kullanmak istediğin sayfa buysa (posting.php), bu sayfanın altına yapıştır kodları, yordamın içinde kullanma. İndirme bağlantısı olan veya olmayan her sayfada kodlar bulunur ama neticede garantili çalışır. Eğer böyle bir seçeneği denersen tuş isimlerini başka PHP kodları ile çakışma olmasın diye biraz daha karmaşık birşeyler olarak belirle. "btn1" yerine "ekIndirmeBtn1" gibi.
 
Re: Javascript Bilen? Link bekletme kodu döngü sorunu

Onu mesajı yazdıktan sonra farkettim hocam, cumaya gidincede kaldıramadık , dediğiniz gibi her döngünün içine bırakmışım.

Bu sorunu çözmemde bana yardımcı olmayı bırakın,
direk çözdüğünüz için çok teşekkür ederim. ellerinize sağlık tam istediğimiz gibi oldu, bundan sonra sunucumuzun yükü en az % 25 düşecektir.

Bu arada rüzgara karşı sağolasın bu java bizim düşündüğümüzden farklı bişey çıktı :)
herkese kolaylıklar dilerim.
 
Rica ederim. Programlama ile ilgili birşeyler yapmak isteyen arkadaşlara her zaman destek olurum. Kolay gelsin.
 
BBNET
Geri
Üst