Yahreen
Yahreen

Reputation: 1669

PHP - Randomly grab a file from folder and echo

I have a folder on my server called /assets/includes/updates/ with .php files inside featuring static html content.

I'd like to randomly grab a file from this folder and echo it into a div. Here is what I have:

<?php
 function random_update($dir = $_SERVER['DOCUMENT_ROOT'].'/assets/includes/updates/')
{
    $files = glob($dir . '/*.*');
    $file = array_rand($files);
    return $files[$file];
}
?>

<div class="my-div">
 <?php echo random_update(); ?>
</div><!--end my-div-->

I am getting 500 errors? Also, my intention is to only echo 1 file at a time. Will the provided code accomplish that?

Upvotes: 0

Views: 847

Answers (3)

Aside from another answers spotted issues, for your code to do what you want, you have to replace your following code:

<?php echo random_update(); ?>

for this one:

<?php echo file_get_contents (random_update()); ?>

because your current code will print the filename inside the div, while I think you wanted the actual content of the file to be inserted in the div.

Upvotes: 2

Cyprian
Cyprian

Reputation: 11374

You can't use any expression as "default" function's argument value.

Upvotes: 1

Mikulas Dite
Mikulas Dite

Reputation: 7941

Php does not recognize the syntax you used. You have to bypass it like this:

<?php
function random_update($dir = NULL)
{
    if ($dir === NULL) {
        $dir = $_SERVER['DOCUMENT_ROOT'] . '/assets/includes/updates/';
    }

    $files = glob($dir . '/*.*');
    $file = array_rand($files);
    return $files[$file];
}

Also, you might want to enable error dumping in your development environment so you know what went wrong next time.

Upvotes: 5

Related Questions