[]
If dongusunde değişkeni okutamıyorum
Merhaba arkadaşlar. Php kullanan bir çaylak olarak yazmak istediğim bir scriptte takıldım, sizin de fikirlerinizi almak istedim.Şimdi benim flv uzantılı internetten seçip indirdiğim videolarımın olduğu bir arşiv var. Bu klasörün içindeki dosyaların isimlerini alıp, bu isimleri bir değişkene atayıp sıraladım ve herhangi bir flv player'da oynattım.
Yalnız bir sorun var. Dosya sayısı belli bir miktarı geçince, browser embed kodunu işlerken inanılmaz ağırlaşıyordu. Ben de resimler için sık bir şekilde kullanılan jQuery eklentilerinden biri olan colorbox (jacklmoore.com) kullanayım dedim. Dosya isimlerini bir link olarak atar, colorbox örneğindeki inline html örneğinde olduğu gibi açılan pencerede embed kodunu çağırırım diye düşündüm. Ama kullandığım kodlar if döngüsü içinde embed için dosya uzantısını girmeme izin vermiyor. Bu sorunu nasıl aşabilirim? (Aşağıya eklediğim kodlar haricinde js kütüphaneleri ve css dosyaları dışında bir şey yok.)
<?
$path = '/deneme/';
$dir = $path;
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
$dosya = "/deneme/" . "$file"; ?>
<? $son = $dosya ?>
<h2><? echo $file; ?></h2>
<h2><p><a class='inline' href="#inline_content">Colorbox ile Ac</a></p><br /></h2>
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="545" height="400" id="player1" name="player1">
<param name="movie" value="player.swf">
<param name="allowfullscreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="flashvars" value="file=<? echo $dosya; ?>&">
<embed id="player1" name="player1" src="player.swf" width="545" height="400" allowscriptaccess="always" allowfullscreen="true" flashvars="file=<? echo $dosya; ?>&">
</object>
</div></div>
<?
echo "$dosya" . "<br />" . "\n";
}
closedir($dh);
}
}
?>
Yalnız bir sorun var. Dosya sayısı belli bir miktarı geçince, browser embed kodunu işlerken inanılmaz ağırlaşıyordu. Ben de resimler için sık bir şekilde kullanılan jQuery eklentilerinden biri olan colorbox (jacklmoore.com) kullanayım dedim. Dosya isimlerini bir link olarak atar, colorbox örneğindeki inline html örneğinde olduğu gibi açılan pencerede embed kodunu çağırırım diye düşündüm. Ama kullandığım kodlar if döngüsü içinde embed için dosya uzantısını girmeme izin vermiyor. Bu sorunu nasıl aşabilirim? (Aşağıya eklediğim kodlar haricinde js kütüphaneleri ve css dosyaları dışında bir şey yok.)
<?
$path = '/deneme/';
$dir = $path;
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
$dosya = "/deneme/" . "$file"; ?>
<? $son = $dosya ?>
<h2><? echo $file; ?></h2>
<h2><p><a class='inline' href="#inline_content">Colorbox ile Ac</a></p><br /></h2>
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="545" height="400" id="player1" name="player1">
<param name="movie" value="player.swf">
<param name="allowfullscreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="flashvars" value="file=<? echo $dosya; ?>&">
<embed id="player1" name="player1" src="player.swf" width="545" height="400" allowscriptaccess="always" allowfullscreen="true" flashvars="file=<? echo $dosya; ?>&">
</object>
</div></div>
<?
echo "$dosya" . "<br />" . "\n";
}
closedir($dh);
}
}
?>
<h2><? echo $file; ?></h2> kısmında dosya ismi yazıyor mu?
bir de flashvars="file=<? echo $dosya; ?>&" kısmında bir noktalıvirgül eksik
flashvars="file=<? echo $dosya; ?>&" olacak.
bir de flashvars="file=<? echo $dosya; ?>&" kısmında bir noktalıvirgül eksik
flashvars="file=<? echo $dosya; ?>&" olacak.
- ensar (26.12.11 12:38:06)
çok dikkatli bakmadım ama html kodlarının hepsini php ile basın ondan çalışmıyor olabilir.
$dosya="/deneme/" . "$file";
print "<h2>" . $file . "</h2>;
gibi.
$dosya="/deneme/" . "$file";
print "<h2>" . $file . "</h2>;
gibi.
- yuto (26.12.11 12:41:07)
bir de tüm videoları tek sayfaya basacağına solda falan bir yerde listelesen href "?vid=osman.flv" gibi sonra da get metoduyla sadece tıklanılan linkteki vidyoyu açsan?
- yuto (26.12.11 12:43:13)
Kullandığın embed koduyla alakalı olabilir ya da tarayıcının lokal obje çalıştırma izinleriyle...
Bir de editör olarak NuSphere PhpED kullan ki, kodları yazarken debug edesin.
Bir de editör olarak NuSphere PhpED kullan ki, kodları yazarken debug edesin.
- Rawkon (26.12.11 12:48:49)
bir de if'te = yerine == kullanman lazım
- yuto (26.12.11 12:48:55)
@ensar
evet h2 tagleri arasında dosya adı yazıyor. parametrelerdeki noktalı virgül dikkat ederseniz diğer parametlerde de noktalı virgül yok. ama noktalı virgül kullanan versiyonlarında da aynı şey oldu.
@yuto yine olmadı. dediğin gibi tüm değişkenleri php içinde kullanmayı deneyip olmazsa da bir sidebarda get komutuyla çağırırım artık. yoksa derdim çalıştırmak değil. zaten çalışıyor ama dediğim gibi colorbox ile açmaktı. fantazi yapmak istedim yani. asıl mesele şu: mesela colorboxun veri çağırdığı div içine veri ekleyince böyle oluyor.
evet h2 tagleri arasında dosya adı yazıyor. parametrelerdeki noktalı virgül dikkat ederseniz diğer parametlerde de noktalı virgül yok. ama noktalı virgül kullanan versiyonlarında da aynı şey oldu.
@yuto yine olmadı. dediğin gibi tüm değişkenleri php içinde kullanmayı deneyip olmazsa da bir sidebarda get komutuyla çağırırım artık. yoksa derdim çalıştırmak değil. zaten çalışıyor ama dediğim gibi colorbox ile açmaktı. fantazi yapmak istedim yani. asıl mesele şu: mesela colorboxun veri çağırdığı div içine veri ekleyince böyle oluyor.
- vito andolini (26.12.11 14:10:48)
echo yerine print komutunu kullanmayı dener misin?
- yuto (26.12.11 14:30:07)
div id='inline_content'
bu bölümdeki id'lerin benzersiz olması gerek; inline_content1, inline_content2 gibi...
bu bölümdeki id'lerin benzersiz olması gerek; inline_content1, inline_content2 gibi...
- Rawkon (26.12.11 14:36:05)
<?
$path = 'deneme/';
$dir = $path;
if (is_dir($dir))
{
$dh = opendir($dir);
while ($file = readdir($dh))
{
if(substr($file , strlen($file) - 4 ,4) == ".flv")
{
$dosya = "/deneme/" . "$file";
$son = $dosya;
print "<h2>" . $file . "</h2>
<h2><p><a class='inline' href='#inline_content'>Colorbox ile Ac</a></p><br /></h2>
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>";
print
'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="545" height="400" id="player1" name="player1">
<param name="movie" value="player.swf">
<param name="allowfullscreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="flashvars" value="file=' . $dosya .'&">
<embed id="player1" name="player1" src="player.swf" width="545" height="400" allowscriptaccess="always" allowfullscreen="true" flashvars="file=' . $dosya .'&">
</object>
</div></div>';
echo "$dosya" . "<br />" . "\n";
}
}
closedir($dh);
}
?>
şu şekilde basıyor
$path = 'deneme/';
$dir = $path;
if (is_dir($dir))
{
$dh = opendir($dir);
while ($file = readdir($dh))
{
if(substr($file , strlen($file) - 4 ,4) == ".flv")
{
$dosya = "/deneme/" . "$file";
$son = $dosya;
print "<h2>" . $file . "</h2>
<h2><p><a class='inline' href='#inline_content'>Colorbox ile Ac</a></p><br /></h2>
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>";
'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="545" height="400" id="player1" name="player1">
<param name="movie" value="player.swf">
<param name="allowfullscreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="flashvars" value="file=' . $dosya .'&">
<embed id="player1" name="player1" src="player.swf" width="545" height="400" allowscriptaccess="always" allowfullscreen="true" flashvars="file=' . $dosya .'&">
</object>
</div></div>';
echo "$dosya" . "<br />" . "\n";
}
}
closedir($dh);
}
?>
şu şekilde basıyor
- yuto (26.12.11 15:02:36 ~ 15:03:34)
evet bastı ama bir sorun var. sürekli döndürülen ilk değişkeni atıyor $dosya değişkenine. Rawkon'un dediği gibi sanırım birden fazla bağlantıda id'lerin benzersiz olması lazım.
kodlarımın tamamı şöyle:
<html>
<head>
<script src="ajax.googleapis.com"></script>
<script src="jquery.colorbox.js"></script>
<link rel="stylesheet" href="colorbox.css" />
<script>
$(document).ready(function(){
//Examples of how to assign the ColorBox event to elements
$(".group1").colorbox({rel:'group1'});
$(".group2").colorbox({rel:'group2', transition:"fade"});
$(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
$(".group4").colorbox({rel:'group4', slideshow:true});
$(".ajax").colorbox();
$(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
$(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
$(".inline").colorbox({inline:true, width:"50%"});
$(".callbacks").colorbox({
onOpen:function(){ alert('onOpen: colorbox is about to open'); },
onLoad:function(){ alert('onLoad: colorbox has started to load the targeted content'); },
onComplete:function(){ alert('onComplete: colorbox has displayed the loaded content'); },
onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
});
//Example of preserving a JavaScript event for inline calls.
$("#click").click(function(){
$('#click').css({"background-color":"#f00", "color":"#fff", "cursor":"inherit"}).text("Open this window again and this message will still be here.");
return false;
});
});
</script>
<style type="text/css" media="screen">
* { margin: 0; padding: 0; }
body {
background: #282828;
font: 62.5%/1.2 Arial, Verdana, Sans-Serif;
padding: 0 20px;
}
h1 { font-family: Georgia; font-style: italic; margin-bottom: 10px; }
h2 {
font-family: Georgia;
font-style: italic;
margin: 25px 0 5px 0;
}
p { font-size: 1.2em; }
ul li { display: inline; }
.wide {
border-bottom: 1px #000 solid;
width: 4000px;
}
.fleft { float: left; margin: 0 20px 0 0; }
.cboth { clear: both; }
#main {
background: #fff;
margin: 0 auto;
padding: 30px;
width: 1000px;
}
</style>
</head>
<body>
<div id="main">
<?php
/**
* @author Murat
* @copyright 2011
*/
$path = 'deneme/';
$dir = $path;
if (is_dir($dir))
{
$dh = opendir($dir);
while ($file = readdir($dh))
{
if(substr($file , strlen($file) - 4 ,4) == ".flv")
{
$dosya = "deneme/" . "$file";
$son = $dosya;
print "<h2>" . $file . "</h2>
<h2><p><a class='inline' href='#inline_content'>Colorbox ile Ac</a></p><br /></h2>
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>";
print
'<center><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="545" height="400" id="player1" name="player1">
<param name="movie" value="player.swf">
<param name="allowfullscreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="flashvars" value="file=' . $dosya .'&">
<embed id="player1" name="player1" src="player.swf" width="545" height="400" allowscriptaccess="always" allowfullscreen="true" flashvars="file=' . $son .'&">
</object></center>
</div></div>';
echo "$dosya" . "<br />" . "\n";
}
}
closedir($dh);
}
?>
</body>
</html>
kodlarımın tamamı şöyle:
<html>
<head>
<script src="ajax.googleapis.com"></script>
<script src="jquery.colorbox.js"></script>
<link rel="stylesheet" href="colorbox.css" />
<script>
$(document).ready(function(){
//Examples of how to assign the ColorBox event to elements
$(".group1").colorbox({rel:'group1'});
$(".group2").colorbox({rel:'group2', transition:"fade"});
$(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
$(".group4").colorbox({rel:'group4', slideshow:true});
$(".ajax").colorbox();
$(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
$(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
$(".inline").colorbox({inline:true, width:"50%"});
$(".callbacks").colorbox({
onOpen:function(){ alert('onOpen: colorbox is about to open'); },
onLoad:function(){ alert('onLoad: colorbox has started to load the targeted content'); },
onComplete:function(){ alert('onComplete: colorbox has displayed the loaded content'); },
onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
});
//Example of preserving a JavaScript event for inline calls.
$("#click").click(function(){
$('#click').css({"background-color":"#f00", "color":"#fff", "cursor":"inherit"}).text("Open this window again and this message will still be here.");
return false;
});
});
</script>
<style type="text/css" media="screen">
* { margin: 0; padding: 0; }
body {
background: #282828;
font: 62.5%/1.2 Arial, Verdana, Sans-Serif;
padding: 0 20px;
}
h1 { font-family: Georgia; font-style: italic; margin-bottom: 10px; }
h2 {
font-family: Georgia;
font-style: italic;
margin: 25px 0 5px 0;
}
p { font-size: 1.2em; }
ul li { display: inline; }
.wide {
border-bottom: 1px #000 solid;
width: 4000px;
}
.fleft { float: left; margin: 0 20px 0 0; }
.cboth { clear: both; }
#main {
background: #fff;
margin: 0 auto;
padding: 30px;
width: 1000px;
}
</style>
</head>
<body>
<div id="main">
<?php
/**
* @author Murat
* @copyright 2011
*/
$path = 'deneme/';
$dir = $path;
if (is_dir($dir))
{
$dh = opendir($dir);
while ($file = readdir($dh))
{
if(substr($file , strlen($file) - 4 ,4) == ".flv")
{
$dosya = "deneme/" . "$file";
$son = $dosya;
print "<h2>" . $file . "</h2>
<h2><p><a class='inline' href='#inline_content'>Colorbox ile Ac</a></p><br /></h2>
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>";
'<center><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="545" height="400" id="player1" name="player1">
<param name="movie" value="player.swf">
<param name="allowfullscreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="flashvars" value="file=' . $dosya .'&">
<embed id="player1" name="player1" src="player.swf" width="545" height="400" allowscriptaccess="always" allowfullscreen="true" flashvars="file=' . $son .'&">
</object></center>
</div></div>';
echo "$dosya" . "<br />" . "\n";
}
}
closedir($dh);
}
?>
</body>
</html>
- vito andolini (26.12.11 17:05:38 ~ 17:08:08)
Günler sonra tekrar uğraşayım dedim, Rawkon'un önerisi üzerine scripti düzelttim. Sorun çözüldü. Duyuruyu sonradan okuyacaklara rehber olması açısından yazayım istedim.
- vito andolini (14.01.12 00:33:29)
1