[]

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; ?>&amp">
<embed id="player1" name="player1" src="player.swf" width="545" height="400" allowscriptaccess="always" allowfullscreen="true" flashvars="file=<? echo $dosya; ?>&amp">
</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; ?>&amp" kısmında bir noktalıvirgül eksik

flashvars="file=<? echo $dosya; ?>&amp;" 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.
  • 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.
  • 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.
  • 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...
  • 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
  • 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>
  • 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
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.