PHP - opendir()
Sziasztok!
Kreáltam egy kis galériás srciptet, amivel van egy kis gond! Bár téma nyitás előtt végig olvastam a témakörhöz kapcsolódó bejegyzéseket, de sajna nem jöttem rá nálam mi a para...
Szóval íme a problémám:
A kód annyit csinál h kikeresi az index.php fájlal egy mappában lévő képeket, amikhez készít thumbnail-t majd azokat megjeleníti, es a th-ra kattintva meg lehet nyitni a képet eredeti méretében. A gond viszont az, hogy az opendir-t így használom: opendir('.') igy természetesen remekül fut, listázza az index.php-val egy mappában lévő képeket. Azonban mikor azt szeretném, hogy az index mellett lévő images mappát listázza nem tesz semmit.
Íme a kód:
Esetleg valaki tudna segíteni, hogy mi lehet a probléma?
■ Kreáltam egy kis galériás srciptet, amivel van egy kis gond! Bár téma nyitás előtt végig olvastam a témakörhöz kapcsolódó bejegyzéseket, de sajna nem jöttem rá nálam mi a para...
Szóval íme a problémám:
A kód annyit csinál h kikeresi az index.php fájlal egy mappában lévő képeket, amikhez készít thumbnail-t majd azokat megjeleníti, es a th-ra kattintva meg lehet nyitni a képet eredeti méretében. A gond viszont az, hogy az opendir-t így használom: opendir('.') igy természetesen remekül fut, listázza az index.php-val egy mappában lévő képeket. Azonban mikor azt szeretném, hogy az index mellett lévő images mappát listázza nem tesz semmit.
Íme a kód:
<?php
$columns = 5;
$thmb_width = 120;
$thmb_height = 80;
function resizeImage($originalImage,$toWidth,$toHeight){
list($width, $height) = getimagesize($originalImage);
$xscale=$width/$toWidth;
$yscale=$height/$toHeight;
if ($yscale>$xscale){
$new_width = round($width * (1/$yscale));
$new_height = round($height * (1/$yscale));
}
else {
$new_width = round($width * (1/$xscale));
$new_height = round($height * (1/$xscale));
}
$imageResized = imagecreatetruecolor($new_width, $new_height);
$imageTmp = imagecreatefromjpeg ($originalImage);
imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0,
$new_width, $new_height, $width, $height);
return $imageResized;
}
function generateThumbnails(){
global $thmb_width,$thmb_height;
if ($handle = @opendir('.')) {
while ($file = readdir($handle)) {
if (is_file($file)){
if (strpos($file,'_th.jpg')){
$isThumb = true;
} else {
$isThumb = false;
}
if (!$isThumb) {
$dirName = substr($file,0,strpos($file,basename($file)));
if (strlen($dirName) < 1) $dirName = '.';
$fileName = basename($file);
$fileMain = substr($fileName,0,strrpos($fileName,'.'));
$extName = substr($fileName,strrpos($fileName,'.'),
strlen($fileName)-strrpos($fileName,'.'));
if (($extName == '.jpg') || ($extName == '.jpeg')){
$thmbFile = $dirName.'/'.$fileMain.'_th.jpg';
if (!file_exists($thmbFile)){
imagejpeg(resizeImage($file,$thmb_width,$thmb_height)
,$thmbFile,80);
}
}
}
}
}
}
}
function getNormalImage($file){
$base = substr($file,0,strrpos($file,'_th.jpg'));
if (file_exists($base.'.jpg')) return $base.'.jpg';
elseif (file_exists($base.'.jpeg')) return $base.'.jpeg';
else return "";
}
function displayPhotos(){
global $columns;
generateThumbnails();
$act = 0;
if ($handle = @opendir('.')) {
while ($file = readdir($handle)) {
if (is_file($file)){
if (strpos($file,'_th.jpg')){
++$act;
if ($act > $columns) {
echo '</tr><tr>
<td class="photo"><a href="'.getNormalImage($file).'">
<img src="'.$file.'" alt="'.$file.'"/></a></td>';
$act = 1;
} else {
echo '<td class="photo"><a href="'.getNormalImage($file).'">
<img src="'.$file.'" alt="'.$file.'"/></a></td>';
}
}
}
}
}
}
?>
<html>
<head>
<title>Photo Gallery</title>
</head>
<body>
<center><h3>Photo Gallery</h3></center>
<table align="center"><tr>
<?php displayPhotos(); ?>
</table>
</body>
</html>
$columns = 5;
$thmb_width = 120;
$thmb_height = 80;
function resizeImage($originalImage,$toWidth,$toHeight){
list($width, $height) = getimagesize($originalImage);
$xscale=$width/$toWidth;
$yscale=$height/$toHeight;
if ($yscale>$xscale){
$new_width = round($width * (1/$yscale));
$new_height = round($height * (1/$yscale));
}
else {
$new_width = round($width * (1/$xscale));
$new_height = round($height * (1/$xscale));
}
$imageResized = imagecreatetruecolor($new_width, $new_height);
$imageTmp = imagecreatefromjpeg ($originalImage);
imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0,
$new_width, $new_height, $width, $height);
return $imageResized;
}
function generateThumbnails(){
global $thmb_width,$thmb_height;
if ($handle = @opendir('.')) {
while ($file = readdir($handle)) {
if (is_file($file)){
if (strpos($file,'_th.jpg')){
$isThumb = true;
} else {
$isThumb = false;
}
if (!$isThumb) {
$dirName = substr($file,0,strpos($file,basename($file)));
if (strlen($dirName) < 1) $dirName = '.';
$fileName = basename($file);
$fileMain = substr($fileName,0,strrpos($fileName,'.'));
$extName = substr($fileName,strrpos($fileName,'.'),
strlen($fileName)-strrpos($fileName,'.'));
if (($extName == '.jpg') || ($extName == '.jpeg')){
$thmbFile = $dirName.'/'.$fileMain.'_th.jpg';
if (!file_exists($thmbFile)){
imagejpeg(resizeImage($file,$thmb_width,$thmb_height)
,$thmbFile,80);
}
}
}
}
}
}
}
function getNormalImage($file){
$base = substr($file,0,strrpos($file,'_th.jpg'));
if (file_exists($base.'.jpg')) return $base.'.jpg';
elseif (file_exists($base.'.jpeg')) return $base.'.jpeg';
else return "";
}
function displayPhotos(){
global $columns;
generateThumbnails();
$act = 0;
if ($handle = @opendir('.')) {
while ($file = readdir($handle)) {
if (is_file($file)){
if (strpos($file,'_th.jpg')){
++$act;
if ($act > $columns) {
echo '</tr><tr>
<td class="photo"><a href="'.getNormalImage($file).'">
<img src="'.$file.'" alt="'.$file.'"/></a></td>';
$act = 1;
} else {
echo '<td class="photo"><a href="'.getNormalImage($file).'">
<img src="'.$file.'" alt="'.$file.'"/></a></td>';
}
}
}
}
}
}
?>
<html>
<head>
<title>Photo Gallery</title>
</head>
<body>
<center><h3>Photo Gallery</h3></center>
<table align="center"><tr>
<?php displayPhotos(); ?>
</table>
</body>
</html>
Esetleg valaki tudna segíteni, hogy mi lehet a probléma?
images mappa
Ha az images mappát akarod, akkor az "##kukac##opendir('.')" helyett használd a "@opendir('images')"-t.
üdv, Gábor
Szia! Próbáltam úgy is...de
Próbáltam úgy is...de valamiért nem jön össze :(
Azóta már kicsit módosítottam rajta, bevezettem egy $dir változót és igy ez lett:
$dir='../images';
@opendir($dir)
Valamit az egészet egy feltételbe tettem így:
if (is_dir($dir))
{....}
else
{echo "nem könyvtár";}
Ennek pedig az lett az eredménye, hogy "nem könyvtár"....
Próbáltam teljes elérési útvonal megadásával is, de az sem nyert...
Esetleg valami ötlet ehhez? :)
__FILE__
próbáld így:
Sziasztok! Végül csak
Végül csak sikerült megoldani a problémám. Köszi a segítséget.
Íme a teljes kód ha esetleg érdekel valakit:
Sziasztok! Nekem is ez a bajom...
Nekem is az a bajom, hogy ha az index.php-vel azonos könyvtárból nyitom meg a mappákat akkor működik a galéria. De ha változtatok, és létrehozok egy mappát ami tartalmazni fogja a többi, képeket tartalmazó mappát, nem működik. Próbáltam a $dir = "./gal"; így is teljes útvonallal is...
Köszönöm!
config.php:
Rövidebben?
Röviden...
Röviden:
Az index.php alapból kilistázza a vele azonos könyvtárban (config.php-ben akkor ez áll: $dir = ".";) lévő könyvtárakat és ki rakja linkként a nevüket. Ha rákattintok akkor pedig megjelennek a benne lévő képek.Én azt szeretném, hogy az index.php mellet legyen egy gal nevű mappa amiben a többi mappa van a képekkel (csak ezek a mappák jelenjenek meg)
Ezt próbáltam így: config.php-ben: $dir = "./gal";
(de próbáltam már ezer módon megadni, pl. teljes útvonallal...)
config.php-ben:
Elérési út
Köszi!