Map indexeren, en bestanden link geven

Status
Niet open voor verdere reacties.

gast0445

Gebruiker
Lid geworden
22 apr 2007
Berichten
97
Hello world,

Ik heb thuis een Apache server draaien (met PHP5, en HTTP-streaming) waarbij ik allerlij soorten media heb staan. Deze media (voornamelijk video's) wil ik laten afspelen in JW player (hier zit het probleem niet).

Nou ben ik op zoek naar een manier waarbij alle files in een map geïndexeert worden (als bijv. een table, niet erg belangerijk). En dat elk filmpje zo'n soort link geeft:

HTML:
<A HREF="showvideo.php?video=VoorbeeldFilmje">VoorbeeldFilmje(evt met: .mp4)</A>

Maar nu is de grote vraag, hoe krijg ik dit door elkaar?
 
wat heb je al zelf geprobeerd en wat lukt er dan wel/niet?
 
PHP:
<?php

$dir = opendir( 'images' );

while( $file = readdir( $dir ) ) {
  if ( $file != '.' && $file != '..' ) {
	echo '<img src="images/' . $file . '" alt="image" /><br />';
  }
}

?>

Als je em zelf aan de praat krijgt begrijp je ook hoe het werkt ;)

Deze gebruik ik om alle plaatjes uit een map onder elkaar te plakken. Je zult em iets aan moeten passen om linkjes te bouwen, maar dat is dan een mooie oefening. Je hebt nu iig alle nodige functies en de layout van het script.
 
wat heb je al zelf geprobeerd en wat lukt er dan wel/niet?
Nog helemaal niks. Normaal gesproken probeer ik zelf wat uit en schijf wat code, maar in dit geval wist ik niet hoe ik het zou moeten aanpakken.

Heel erg bedankt Frats! Ik heb het werkend gekregen. Alleen .mp4 weet ik nog niet weg te krijgen. Misschien iemand een tip? En is het ook mogelijk om bestanden te filteren? (Dus alleen .mp4 laten zien) Alleen lijkt het me logisch dat het eerst gefiltert word, en dan pas weggehaald. Kan iemand me nog een stukje op weg helpen met de laatste aanpassingen?

PHP:
<?php
 
$dir = opendir( 'video' );
 
while( $file = readdir( $dir ) ) {
  if ( $file != '.' && $file != '..' ) {
    echo '<A HREF="player.php?file=' . $file . '">' . $file . '</A><br />';
  }
}
 
?>
 
Laatst bewerkt:
Om de extensie niet te laten weergeven kan je de functie strrpos gebruiken om de laatste punt te zoeken. Met substr kan je dan enkel het deel tot de punt tonen. Daar kan je ook gebruik van maken bij het filteren.
 
In de if() worden al wat files gefilterd; je kunt daar nog meer filter opties aan toevoegen door te zoeken in $file, die de naam van het bestand bevat.
 
In de if() worden al wat files gefilterd; je kunt daar nog meer filter opties aan toevoegen door te zoeken in $file, die de naam van het bestand bevat.

Dus dan zou dat zoiets moeten worden? Maar dat werkt niet, wat doe ik hier fout?

PHP:
$dir = opendir( 'video' );

while( $file = readdir( $dir ) ) {
  if ( $file != '.' && $file != '..' && $file == '*.mp4' ) {
    echo '<A HREF="?action=player&fileid=' . $file . '">' . $file . '</A><br />';
  }
}

Oh en bij het opsommen heb ik (met dank aan SuperSnail) de .mp4 weten weg te halen! Bedankt!

PHP:
$dir = opendir( 'video' );

while( $file = readdir( $dir ) ) {
  if ( $file != '.' && $file != '..' ) {
	$file = substr( $file, 0, -4);
    echo '<A HREF="?action=player&fileid=' . $file . '">' . $file . '</A><br />';
  }
}
 
Laatst bewerkt:
Ik zou het zo doen.
$files_okey = array('mp4', 'mpg', 'mkv');
$file = explode('.', $file);
if(in_array(end($file),$files_okey) {
///
}

Want als er bv html of flac ofzo in je dir staan, dan loopt je script in de soep.

Ik heb het niet getest en ik weet ook niet of het een nette of te zware manier is.
Dit is zo ff geschreven uit het blote hoofd zonder te kijken dat de functies juist gebruikt zijn.
 
Ik zou het zo doen.
$files_okey = array('mp4', 'mpg', 'mkv');
$file = explode('.', $file);
if(in_array(end($file),$files_okey) {
///
}

Want als er bv html of flac ofzo in je dir staan, dan loopt je script in de soep.

Ik heb het niet getest en ik weet ook niet of het een nette of te zware manier is.
Dit is zo ff geschreven uit het blote hoofd zonder te kijken dat de functies juist gebruikt zijn.

Ik krijg het niet voor elkaar. Grootendeels omdat ik dat niet begrijp...

Is er niet de mogelijkheid om heel simpel in deze IF alleen .mp4 toe te laten?

PHP:
	while( $file = readdir( $dir ) ) {
		if ( $file != '.' && $file != '..' ) {
		$file = substr( $file, 0, -4);
		$fileurl = preg_replace("/ /","+",$file);
		echo '<A HREF="?action=player&fileid=' . $fileurl . '">' . $file . '</A><br />';
		}
	}
 
Ah, toch gelukt! Heel erg bedankt voor jullie hulp!

PHP:
	while( $file = readdir( $dir ) ) {
		if ( $file != '.' && $file != '..' && substr( $file, -4, 4) == '.mp4' ) {
			$file = substr( $file, 0, -4);
			$fileurl = preg_replace("/ /","+",$file);
			echo '<A HREF="?action=player&fileid=' . $fileurl . '">' . $file . '</A><br />';
		}
	}
 
Zo zou ik de code maken.
(Is niet getest, maar zou moeten werken)
PHP:
<?PHP
$files_okey = array('mp4', 'mpg', 'mkv');// extention welke wel als link gemaakt mogen worden .
$afkeur = array(); // puur voor test
$links  = NULL;
while( $file = readdir( $dir ) ) {
    
    $file = explode('.', $file); 
    
    if(in_array(end($file),$files_okey)) {
        $links .= '<A HREF="?action=player&fileid=' . $file . '">' . $file . '</A><br />';
    } else {
        $afkeur[] = $file;
    }
}

/////////////////////
// PUUR VOOR TEST
// Laat zien welke file er afgekeurd zijn.
/////////////////////
if(!empty($afkeur)) {
    echo '<pre>';
    print_r($afkeur);
    echo '</pre>';
}

if(!empty($links)) {
    echo $links;
}
?>
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan