Gå til innhold

[Løst]liste filer fra mappe, motsatt rekkefølge?


Anbefalte innlegg

Har et lite script som lar meg liste alle flv filer i en mappe, men ønsker at den lister motsatt vei. Altså Å-A eller 9-0.

 

Noen som kan hjelpe?

 

  <?php
$dh = opendir($dirvideo);

while ($file = readdir($dh)) { 
 if (eregi("\.flv",$file)) { # Look at only files with a .flv extension

$string .= "<a href=\"$PHP_SELF?video=$file\">$file</a><br />";
$fileCount++;
 }
}

if ($fileCount > 0) {
 echo sprintf("<strong>Videoer:</strong><br />%s<strong>Totalt: %s</strong>",$string,$fileCount);
}

closedir($dh);
?>

Videoannonse
Annonse

readdir() gir ingen muligheter for å spesifisere sorteringskriterier, så hvis det er absolutt nødvendig, så må du nok gjøre det selv. Jeg tror jeg ville ha dyttet filnavnene inn i et array, for så å sortere det til slutt.

 

Noe i denne gata:

$files = array();
while ($file = readdir($dh)) { $files[] = $file }
sort ($files);
for ($i = count($files) - 1; $i >= 0; $i--) doStuff ($files[$i]);

Endret av alfred97
rsort() ikke sort()

Den kan man også bruke, men da må man snu tellesekvensen i for-løkka slik at den teller forover i stedet for bakover. :)

 

@stclem: Poenget var ikke at du skulle bruke koden min. Den er bare ment som et kjapt eksempel. Det du skal gjøre, er å lese inn filnavnene dine på samme måte som ellers, men i stedet for å prosessere dem med en gang, skal du dytte dem inn i et array. Når du så er ferdig med det, sorterer du arrayet enten forlengs med sort() eller baklengs med rsort(). Nå har du alle filnavnene liggende i arrayet, sortert i riktig rekkefølge, så nå kan du hente dem derfra og skrive dem ut på den måten det passer deg.

<?php

$files = scandir( $dirvideo );
$string = "";
$fileCount = 0;

sort( $files );
// rsort( $files );

foreach( $files as $file )
{
if( substr( $file, -3 ) == 'flv' )
{
	$string .= "<a href=\"{$_SERVER['PHP_SELF']}?video=$file\">$file</a><br />";
	$fileCount++;
}
}

if ($fileCount > 0) 
{
echo sprintf( "<strong>Videoer:</strong><br />%s<strong>Totalt: %s</strong>", $string, $fileCount );
}
?>

 

Ene funsksjonen der (scandir) krever PHP5, men det regner jeg nesten med at du har.

litt mulig jeg er på bærtur her, men så langt har jeg kommet.

 

 echo sprintf( "<strong>Videoer:</strong><strong>Totalt: %s</strong>", $fileCount );
?>
<form name="myform" action="<?php echo "$PHP_SELF?video=$file" ?>" method="POST">
<div align="center">
<select name="mydropdown">
<?php echo "$string" ?>

</select>
<input type="hidden" name="submit_form" value="1" />
<input type="submit" value="Post" /></form>

Ganske på bærtur, faktisk

 

<?php

$files = scandir( $dirvideo );
$fileCount = 0;

$string = "<form action='' method='get' name='form'>\n\r\t<select name='video' onchange='this.form.submit();'>\n\r";

sort( $files );
// rsort( $files );

foreach( $files as $file )
{
if( substr( $file, -3 ) == 'flv' )
{
	$string .= "\t\t<option value='{$file}'>{$file}</option>\n\r";
	$fileCount++;
}
}

$string .= "\t</select>\n\r</form>";

if ($fileCount > 0) 
{
echo sprintf( "<strong>Videoer:</strong><br />%s<strong>Totalt: %s</strong>", $string, $fileCount );
}
?>

Den funker ja. Men når jeg har valgt ett av valgene så går den til rett side, men drop down menyen viser øverste valg igjen.

 

Går det å få den til å vise det valget som er nå feks via get id, eller at den viser teksten "velg video".

 

Fikk til å legge til velg video, så funker greit nå. Takk for all hjelp.

 

$string = "<form action='' method='get' name='form'>\n\r\t<select name='video' onchange='this.form.submit();'><OPTION SELECTED VALUE=\"\">Velg video</OPTION>\n\r";

Endret av stclem

Mer hjelp ønskes.

 

Her er hele koden slik den ser ut i dag. Har prøvd meg på å legge til en txt fil. I txt fila skal det stå kort om videoen. En txt fil for hver video med samme navn som videoen.

Dette funer i echo komandoen langt oppe i fila, men når jeg vil ha den inn i drop down boksen så blir det bare ett 1 tall bak datoen (som er navnet på videoen).

 

forslag?

 

   <?php
if($session->userlevel > $userlevelvideo){ //for brukere på nivå 2

?>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!-- A minimal Flowplayer setup to get you started -->


<!-- 
	include flowplayer JavaScript file that does  
	Flash embedding and provides the Flowplayer API.
-->
<script type="text/javascript" src="video/flowplayer-3.0.3.min.js"></script>

</head><body>
<?php $video = $_GET['video']; 
if(empty($video)) {
echo "Velg en video<br>";
} else { ?>

<?php
$video = $_GET['video'];
if(empty($video)) {
$video = date('ymd');
}
$ex = explode(' ', $video);
$dato = $ex[0];
//Year
$year_raw = substr($dato,0,2);
if('20'.$year_raw <= date('Y')) {
$year = '20'.$year_raw;
} else {
$year = '19'.$year_raw;
}

//Month
$month = substr($dato,2,2);

//Day
$day = substr($dato,4,2);

//Timestamp
$timestamp = mktime(0,0,0,$month,$day,$year);

//Date
$date = date('d.m.y', $timestamp);

//Navn
if(count($ex) == 2) {
$navn = $ex[1];
$split = explode('.',$navn);
$navn = $split[0];
}
echo $date.' '.$navn;
echo "<br>";
$videotxt .= include("video/video/$video.txt");
echo "$videotxt";
?>
	<!-- this A tag is where your Flowplayer will be placed. it can be anywhere -->
	<a  
		 href="<?php echo "$fullurlvideo/video/$video"; ?>"  
		 style="display:block;width:400px;height:400px"  
		 id="player"> 
	</a> 

	<!-- this will install flowplayer inside previous A- tag. -->
	<script>
		flowplayer("player", "video/swf/flowplayer-3.0.3.swf");
	</script>
	<?php 

	} ?>


<?php

$files = scandir( $dirvideo );
$fileCount = 0;

$string = "<form action='' method='get' name='form'>\n\r\t<select name='video' onchange='this.form.submit();'><OPTION SELECTED VALUE=\"\">Velg video</OPTION>\n\r";

// sort( $files );
rsort( $files );

foreach( $files as $file )
{
if( substr( $file, -3 ) == 'flv' )
{
 //START ENDRE NAVN   
$videofiler = $file;
if(empty($videofiler)) {
$videofiler = date('ymd');
}
$ex = explode(' ', $videofiler);
$dato = $ex[0];
//Year
$year_raw = substr($dato,0,2);
if('20'.$year_raw <= date('Y')) {
$year = '20'.$year_raw;
} else {
$year = '19'.$year_raw;
}

//Month
$month = substr($dato,2,2);

//Day
$day = substr($dato,4,2);

//Timestamp
$timestamp = mktime(0,0,0,$month,$day,$year);

//Date
$date = date('d.m.y', $timestamp);

//Navn
if(count($ex) == 2) {
$navn = $ex[1];
$split = explode('.',$navn);
$navn = $split[0];
}
if(count($ex) == 2){
$videofile = "$date $navn $videotxt";
} else {
$videofile = "$date $videotxt";}
//SLUTT ENDRE NAVN

	$string .= "\t\t<option value='{$file}'>{$videofile}</option>\n\r";
	$fileCount++;
}
}

$string .= "\t</select>\n\r</form>";

if ($fileCount > 0)
{
  echo "<table width=\"90%\"><tr><td><br>";
echo sprintf( "<br>Videoer: (Totalt: %s)<br />%s", $fileCount, $string );
echo "<a href=\"videofullliste.php\">Se full liste</a></td></tr></table>";
}
?>





<?php
 }  
 else{
}
?>

Endret litt for ellers hentet den bare den videoen som vises på alle.

 

Nå henter han videoen som jeg ser på men poster det samme på alle under i drop down menyen.

 

<?php $video = $_GET['video']; 
if(empty($video)) {
echo "<font class=\"sideoverskrift\">Velg en video</font><br>";
} else { ?>

<?php
$video = $_GET['video'];
if(empty($video)) {
$video = date('ymd');
}
$ex = explode(' ', $video);
$dato = $ex[0];
//Year
$year_raw = substr($dato,0,2);
if('20'.$year_raw <= date('Y')) {
$year = '20'.$year_raw;
} else {
$year = '19'.$year_raw;
}

//Month
$month = substr($dato,2,2);

//Day
$day = substr($dato,4,2);

//Timestamp
$timestamp = mktime(0,0,0,$month,$day,$year);

//Date
$date = date('d.m.y', $timestamp);

//Navn
if(count($ex) == 2) {
$navn = $ex[1];
$split = explode('.',$navn);
$navn = $split[0];
}
echo $date.' '.$navn;
echo "<br>";
include ("video/video/$video.txt");

?>
	<!-- this A tag is where your Flowplayer will be placed. it can be anywhere -->
	<a  
		 href="<?php echo "$fullurlvideo/video/$video"; ?>"  
		 style="display:block;width:380px;height:380px"  
		 id="player"> 
	</a> 

	<!-- this will install flowplayer inside previous A- tag. -->
	<script>
		flowplayer("player", "video/swf/flowplayer-3.0.3.swf");
	</script>
	<?php 

	} ?>


<?php

$files = scandir( $dirvideo );
$fileCount = 0;

$string = "<form action='' method='get' name='form'>\n\r\t<select name='video' onchange='this.form.submit();'><OPTION SELECTED VALUE=\"\">Velg video</OPTION>\n\r";

// sort( $files );
rsort( $files );

foreach( $files as $file )
{
if( substr( $file, -3 ) == 'flv' )
{
 //START ENDRE NAVN   
$videofiler = $file;
if(empty($videofiler)) {
$videofiler = date('ymd');
}
$ex = explode(' ', $videofiler);
$dato = $ex[0];
//Year
$year_raw = substr($dato,0,2);
if('20'.$year_raw <= date('Y')) {
$year = '20'.$year_raw;
} else {
$year = '19'.$year_raw;
}

//Month
$month = substr($dato,2,2);

//Day
$day = substr($dato,4,2);

//Timestamp
$timestamp = mktime(0,0,0,$month,$day,$year);

//Date
$date = date('d.m.y', $timestamp);

//Navn
if(count($ex) == 2) {
$navn = $ex[1];
$split = explode('.',$navn);
$navn = $split[0];
}
$videotxt .= file_get_contents("video/video/{$file}.txt");
if(count($ex) == 2){
$videofile = "$date $navn $videotxt";
} else {
$videofile = "$date $videotxt";}
//SLUTT ENDRE NAVN

	$string .= "\t\t<option value='{$file}'>{$videofile}</option>\n\r";
	$fileCount++;
}
}

$string .= "\t</select>\n\r</form>";

if ($fileCount > 0)
{
  echo "<table width=\"90%\"><tr><td><br>";
echo sprintf( "<br>Videoer: (Totalt: %s)<br />%s", $fileCount, $string );
echo "<a href=\"videofullliste.php\">Se full liste</a></td></tr></table>";
}
?>





<?php
 }  
 else{
}
?>

 

EDIT: Kanskje viktig å få med at ikke alle videoer har txt fil.

Endret av stclem

$videotxt .= file_get_contents("video/video/{$file}.txt");

".=" betyr at den vil legge til verdien på enden av variabelen. For hver gang den går gjennom arrayet/matrisen/listen vil den legge til videoteksten på slutten av den forrige.

 

$videotext = "";
if( file_exists( "video/video/{$file}.txt" ) )
{
$videotxt = file_get_contents( "video/video/{$file}.txt" );
}

Takk for hjelp, med litt endring så funket det.

 

//Navn
if(count($ex) == 2) {
$navn = $ex[1];
$split = explode('.',$navn);
$navn = $split[0];
}

$videotxt = file_get_contents( "video/video/{$file}.txt" );
if( file_exists( "video/video/{$file}.txt" ) )
{
 if(count($ex) == 2){
$videofile = "$date $navn $videotxt";
} else {
$videofile = "$date $videotxt";}
 } else {
if(count($ex) == 2){
$videofile = "$date $navn";
} else {
$videofile = "$date";}
}

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...