Archief - PHP: script - parse error (opendir) unexpected

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

SkY

Legacy Member
Ik heb op mijn webspace een folder met enkele foto's in. Nu moet ik die op een forum plaatsen met de gekende tags.
Nu wil ik een script maken die ik plaats in die folder en die dan automatisch een pagina maakt (php, html, txt,...) waar de volledige url's komen tussen IMG tags.

Ik heb op PHPHulp.nl een script gevonden die ik gewoon nog een beetje moet aanpassen. Het geeft de foto's gewoon onder elkaar weer.


[PHP]<?php

$dir = opendir('dir');

// Haal de gegevens uit dir
while (false !== ($file = readdir($dir))) {
if (($file !== ".") and ($file !== "..")) {
list($filename, $ext) = explode(".", $file);
list($main, $sub, $include) = explode("/", $PHP_SELF);
echo "<img src=\"http://www.jouwsite.nl/dir/$file\"";
if ($inc==$file) echo " selected";
echo"><br>\n";
}
}

?> [/PHP]


Nu zou ik dus aan de 10de lijn iets moeten aanpassen zodat als ik naar deze php file surf ik een pagina krijg [IMG]foto.jpg. Maar wat moet ik dan veranderen?
Als ik '<img src=\' vervang door '
toevoeg krijg ik deze error:

Parse error: parse error, unexpected '\"', expecting ',' or ';' in /data/web/zattevrienden/users/sky/KSA/lentefeest.php on line 10

Iemand die weet wat ik moet toevoegen en veranderen? Het php script is het originele en nog niet aangepast aan mijn webspace, hoe ik het moet aanpassen en wat weet ik al.

maT'

Legacy Member
Je echo-gedeelte moet gewoon dit worden:
echo "
";

Probeer eens enkele tutorials te lezen over php, in een van de eerste komt dit soort van scripts al aan bod. Een beetje opzoekwerk zou geen kwaad kunnen ;)

SkY

Legacy Member
PHP:
<?php

	$dir = opendir('MonicaPotter');

	// Haal de gegevens uit dir
	while (false !== ($file = readdir($dir))) {
		if (($file !== ".") and ($file !== "..")) {
		list($filename, $ext) = explode(".", $file);
		list($main, $sub, $include) = explode("/", $PHP_SELF);
			    echo "[IMG]www.sky.zattevrienden.be/KSA/lentefeest/$file[/IMG]";  
			if ($inc==$file) echo " selected"; 
			echo"><br>\n";
			}
		}

?>

Dit zou dan het script moeten zijn? (www.sky.zatte.... moet erbij want het forum staat niet op deze webspace).

Dan krijg ik volgende error:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /data/web/zattevrienden/users/sky/KSA/lentefeest.php on line 10

WHiSPy

Legacy Member
SkY zei:
PHP:
<?php

	$dir = opendir('MonicaPotter');

	// Haal de gegevens uit dir
	while (false !== ($file = readdir($dir))) {
		if (($file !== ".") and ($file !== "..")) {
		list($filename, $ext) = explode(".", $file);
		list($main, $sub, $include) = explode("/", $PHP_SELF);
			    echo '[IMG]www.sky.zattevrienden.be/KSA/lentefeest/'.$file.'[/IMG]<br>';  
			}
		}

?>

Zoiets zou 't ongeveer moeten worden. Is al meer dan 'n half jaar geleden dat ik nog php gescript heb, zodus kan 'n fout in zitten... :)

dewoete

Legacy Member
tis http://sky.zattevrienden.be en dus NIET www.sky....

edit: mmm dan macheert het nog niet ...

maar ik vroeg me af; kan je niet gewoon één universeel php bestandje maken dat zoieso alle fotos onder elkaar weergeeft.
dus zonder elke keer in de php code steeds de link met de juiste map te moete aanpassen?

Smoerf

Legacy Member
GEwoon url vervangen door je url, en de dir vervangen door de naam van je prentendirectory (als dit de root is, dan zeg je $dir = ".")
PHP:
<?php 

$url = "http://jochen/php/img%20test/pics";
$dir = "pics";

if ($handle = opendir($dir)) {
    while (false !== ($file = readdir($handle))) { 
        if ($file != "." && $file != "..") { 
            echo "[img]" . $url . $file . "[/img]<br />\n"; 
        } 
    }
    closedir($handle); 
}
?>

Dat koste me nog geen minuut werk.
http://be.php.net/manual/en/function.readdir.php


En als je enkel de images wilt:

PHP:
<?php 

$url = "http://jochen/php/img%20test/pics";
$dir = "pics";
$allowed_extensions = array('jpg', 'gif', 'jpeg');


if ($handle = opendir($dir)) {
    while (false !== ($file = readdir($handle))) { 
        if ($file != "." && $file != "..") { 
           $path_parts = pathinfo($file);
           $ext = $path_parts['extension'];
           for ($n = 0;$n < count($allowed_extensions);$n++){
              if ($ext == $allowed_extensions[$n]){
                 echo "[img]" . $url . $file . "[/img]<br />\n"; 
              }
           }
        } 
    }
    closedir($handle); 
}
?>

Als er meer types zijn, gewoon toevoegen in de allowed_extensions array

Bonne chance

maT'

Legacy Member
Om te muggeziften (kan niet slapen :p ) :
1) in je eerste script moet er nog een "/" komen, in je $dir variabele.
Anders komt de filename net achter je dir: http://jochen/php/img test/picsFoto01.jpg

2.1) in het 2de script is er een veel eenvoudigere manier om een array te doorzoeken op een bepaald element, nl. in_array().
2.2) je kan je extensie van het bestand best omzetten naar ofwel lowercase ofwel uppercase (strtoupper(), strtolower()) en die waarden vergelijken, anders krijg je problemen met bestanden à la "foto.JPG", aangezien in de array enkel de lowercase waarden zitten.

niet dat je hier nu een performance-verschil zal merken, maar de functie maakt het wel eenvoudiger :)

dewoete

Legacy Member
maT' kunt ge dan ook diejn php is ff aanpasse en terug posten aub?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan