проблема с PHP: читать имена файлов, генерировать JavaScript и HTML - PullRequest
0 голосов
/ 19 марта 2011

ОБНОВЛЕНИЕ

Привет еще раз.Я оказался с новой проблемой.Php-код отлично работал на моем ПК (wamp-сервер), но теперь я загрузил его на бесплатный сервер веб-хостинга, и хотя php-часть работает отлично (он создает массив), сама функция javascript не работает, потому что нет фотографийна сайте, когда он загружен.Я попытался проверить это, поместив в первой строке функции предупреждение, чтобы увидеть, работает ли оно, но так и не появилось.Я думаю, что сервер по какой-то причине не понимает, что это функция javascript, потому что в getphotos.php у меня также было следующее:

window.onload = photos();

, который начинается с запуска функции photos, показывает текст.Когда я переместил эту строку в файл js и поместил строку показа текста первым, он запустился, показывая текст, но все еще без фотографий.Как вы думаете ????

КОНЕЦ ОБНОВЛЕНИЯ


Привет всем.Я строю веб-сайт, который показывает несколько фотографий.Я хочу, чтобы сайт автоматически генерировал HTML-код, который показывает фотографии, читая имена файлов в папке с фотографиями, но мне также нужно использовать javascript.Таким образом, я нашел через Интернет решение с помощью php, генерирующего javascript, который генерирует HTML-код, который я хочу, и я думаю, что это то, что мне нужно.Но ... это не работает X_X.Поэтому мне нужна чья-то помощь!

Во-первых, вот php / javascript (в getPhotos.php):

<?
header("content-type: text/javascript");

//This function gets the file names of all images in the current directory
//and ouputs them as a JavaScript array
function returnImages() {
    $pattern="(*.jpg)|(*.png)|(*.jpeg)|(*.gif)"; //valid image extensions
    $files = array();
    $curimage=0;
    if($handle = opendir('/photos/')) {
        while(false !== ($file = readdir($handle))){
            if(eregi($pattern, $file)){ //if this file is a valid image
                //Output it as a JavaScript array element
                echo 'galleryArray['.$curimage.']="'.$file .'";';
                $curimage++;
            }
        }
        closedir($handle);
    }
    return($files);
}

//here starts the javascript function
echo 'window.onload = photos;
    function photos(){
    var i;
    var text1 = "";
    var text2 = "";
    var text3 = "";
    var galleryArray=new Array();'; //Define array in JavaScript
returnImages(); //Output the array elements containing the image file names

//short the images in three sets depending on their names and produce the code
echo 'for(i=0; i<galleryArray.length; i++){
    if(galleryArray[i].indexOf("set1_")!=-1){
        text1+= "<a rel=\"gallery\" title=\"\" href=\"photos/"+galleryArray[i]+"\">\n<img alt=\"\" src=\"photos/"+galleryArray[i]+"\" />\n</a>\n" ;
    }else if(galleryArray[i].indexOf("set2_")!=-1){
        text2+= "<a rel=\"gallery\" title=\"\" href=\"photos/"+galleryArray[i]+"\">\n<img alt=\"\" src=\"photos/"+galleryArray[i]+"\" />\n</a>\n" ;
    }else if(galleryArray[i].indexOf("set3_")!=-1){
        text3+= "<a rel=\"gallery\" title=\"\" href=\"photos/"+galleryArray[i]+"\">\n<img alt=\"\" src=\"photos/"+galleryArray[i]+"\" />\n</a>\n" ;
    }
}';

//create text nodes and put them in the correct div
echo 'var code1 = document.createTextNode(text1);
    var code2 = document.createTextNode(text2);
    var code3 = document.createTextNode(text3);
    document.getElementById("galleryBox1").appendChild(code1);
    document.getElementById("galleryBox2").appendChild(code2);
    document.getElementById("galleryBox3").appendChild(code3);
}';

?> 

А это код на странице гривы index.html:

<script type="text/javascript" src="getPhotos.php"></script><!--get photos from dir-->

Вот оно, и оно не работает!Я знаю, что многое спрашиваю, просто давая весь код и прося о помощи, но я даже не могу думать, что не так, не говоря уже о том, как это исправить ... Так что, пожалуйста, если у вас есть идея, это было бы здорово.

Ответы [ 2 ]

1 голос
/ 19 марта 2011

; после отсутствия returnImages().

Эта функция (readdir) может возвращать логическое значение FALSE, но также может возвращать не-логическое значение, которое оценивается как FALSE, например 0 или"".Пожалуйста, прочитайте раздел о логических значениях для получения дополнительной информации.Используйте оператор === для проверки возвращаемого значения этой функции.

http://php.net/manual/en/function.readdir.php

Поэтому попробуйте использовать while(false != ($file = readdir($handle))){ или while(FALSE !== ($file = readdir($handle))){

0 голосов
/ 19 марта 2011

Ваше регулярное выражение неверно, например. Вам нужно взглянуть на учебник по регулярным выражениям, например этот .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...