0

Hi,

I am new to PHP and need help with my code to create files and folders based on variable values. Here's the setup:

1. I have approximately 100 categories. I've assigned a variable to each category. E.g.

  • Variable 1 (as in $c1) contains category one's name.
  • Variable 2 (as in $c2) contains category two's name.
  • Variable 3 (as in $c3) contains category three's name.
  • Etc. for all 70 variables / categories.

2. My script needs to create a folder for each category and then add a content file into each category folder.

Here's my code so far:

<?php include '0vars.php'; ?> // The file containing the list of variables.

<?php
	$mypath="$c1"; // Set the path to create the first folder using variable $c1 for the folder name.
	mkdir($mypath,0755,TRUE);  // Create the folder / directory	
	chdir($mypath); // Change Directory to enter the folder just created	
	$filename = 'index.php'; // Name the file to be created
	$handle = fopen($filename,"x+");  // Not sure what this does??	
	$somecontent = "include"../content/c1.php";  // This has got me!!! Content must be an include from the content folder.
	fwrite($handle,$somecontent);  // Closing of the script - last 3 lines.
	echo "Success";
	fclose($handle);	
	chdir('../'); // Go back up one directory level
	
	//-----------------------------
// Now repeat the process for all +- 100 categories.
	
	$mypath="$c2";
	mkdir($mypath,0755,TRUE);
	
	chdir($mypath);
	
	$filename = 'index.php';
	$handle = fopen($filename,"x+");
	
	$somecontent = "xxxxxxxxxxxx";
	fwrite($handle,$somecontent);
	echo "Success";
	fclose($handle);	
	
	chdir('../');
	
	//----------------------------- Etc.	
?>

The code works except for the line:

$somecontent = "include"../content/c1.php";

which I clearly don't know how to format.

The included file name 'c1.php' must match the variable name '$c1.'
Likewise, the created folder must match the variable name '$c1.'

The resulting structure would be

Root:
Category1 (The first directory)
index.php with c1.php included

Category2 (The second directory)
index.php with c2.php included

Etc.

Repeating the above code 100 times for each category / folder would be tedious, but I am not sure how to loop it.

Thank you. I hope the above makes sense.

3
Contributors
2
Replies
5
Views
5 Years
Discussion Span
Last Post by diafol
1

OK just a little bit.

Yours 'variables' in the include file should be placed in an array so that you can loop over them, e.g.

$mynames = array("c1","c2","c3"...);

Then:

foreach($mynames as $name){
  mkdir($name,0755,TRUE);
  $existfile = "../content/" . $name . ".php";
  $newfile = "$name/index.php";
  if (!copy($existfile, $newfile)) {
    echo "copy $file failed...<br />";
  }
}

Not tested, but that's the sort of thing I'd do. If you simply want to MOVE the files, use rename() instead of copy().

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.