tags:

views:

83

answers:

6

hi guys,

echo $path; //working
function createList($retval) {
    echo $path; //not working
    print "<form method='POST' action='' enctype='multipart/form-data'>";
    foreach ($retval as $value) {
            print "<input type='checkbox' name='deletefiles[]' id='$value' value='$value'>$value<br>";
    }
    print "<input class='submit' name='deleteBtn' type='submit' value='Datei(en) löschen'>";
    print "</form>";    
}

what am I doing wrong? why is $path printed corretly outside of the createlist function, but it's not inside of the function?

A: 

Where is $path defined? Is it defined as global $path?

Marius Schulz
+7  A: 

If you want it to work, you should use global $path in the function, so it looks outside the function scope.

Please note that global variables are sent from hell :).

Alex Ciminian
+1  A: 

you must use the global modifier.

echo $path;
function createList($retval) {
    global path;
    echo $path; // works now :)
Aif
+2  A: 

Cause $path inside createList() and outside it (in global scope) are two different variables. Read more about variable scope in PHP.

Crozin
A: 

As an alternative to using a global variable, just pass $path in. Of course, if you don't need the variable inside the function, don't bother!

echo $path;
function createList($retval, $path) {
    echo $path;
    print "<form method='POST' action='' enctype='multipart/form-data'>";
    foreach ($retval as $value) {
            print "<input type='checkbox' name='deletefiles[]' id='$value' value='$value'>$value<br>";
    }
    print "<input class='submit' name='deleteBtn' type='submit' value='Datei(en) löschen'>";
    print "</form>";    
}
thetaiko
+6  A: 

Because it's not defined in the function.

1) Use what Alex said with using a global:

 function ....
   global $path

2) Define it as a constant ($path seems like a constant):

  define(PATH, "/my/test/path"); // You can put this in an include file

  echo PATH // working
  function createList($retval) {

    echo PATH // working

    ... rest of your function code ...

  }

3) Or, pass it into the function if it's specific to that function:

  function createList($retval, $path) {
    echo $path;

Based on how the function really works for you, one of those will do ya.

/ JP

Josh Pinter