2014-10-12 3 views
0

Система LinuxОшибка при вызове

Ищет помощь с моей функцией. Я начинаю их изучать. Было упомянуто, чтобы создать функцию, позволяющую не писать один и тот же код слишком много раз.

Я нашел много страниц о них, и они помогли, но у меня все еще возникают проблемы с работой.

Это не дает никаких ошибок журнала и ничего не создается. Я всегда получаю ошибки, когда начинаю с чего-то, поэтому я знаю, что чего-то не хватает.

Вот что у меня есть.

Заранее спасибо.

Боб

<?php 

$dirPath = "Path to File Location"; 
$buildPath = "Path to File Location"; 

function createFiles() { 
    for ($i = 1; $i < 45; ++$i) { 
     $filename = $buildPath . '/$area'. sprintf("%02s", $i) . '.php'; 
     if (!file_exists($buildPath$filename)) { 
      $myfile = fopen($buildPath$filename, "w") or die("Unable to open item$i file!"); 
      fwrite($myfile, $txt1); 
      fwrite($myfile, $addtitle); 
      fwrite($myfile, $incltxt); 
      fclose($myfile); 
      chmod("$buildPath"."$area"."$i".".php", 0755); 
     } 
     // fopen, fwrite, fcloses... 
     // filename for delete page setup 
     if (!file_exists("$dirPath"."delete.page.php")) { 
      $myfile = fopen("$dirPath"."delete.page.php", "w") or die("Unable to open file!"); 
      $txt = "<option value=\"\">Select Page to Delete......</option>\n 
        <option value=\"generalinfo.tx\">General Information Page.</option>\n 
        <option value=\"$filename\">$area Pg. $i</option>\n"; 
      fwrite($myfile, $txt); 
      fclose($myfile); 
      chmod("$dirPath"."delete.page.php", 0755); 
     } 
     else 
      { 
       $myfile = fopen("$dirPath"."delete.page.php", "a") or die("Unable to open file!"); 
       $txt = "<option value=\"$filename\">$area Pg. $i</option>\n"; 
       fwrite($myfile, $txt); 
       fclose($myfile); 
       chmod("$dirPath"."delete.page.php", 0755); 
      } 
      break; 
    } 
    return true; 
} 


    if ($i == 1) { 
     createFiles(); 
    } 
    // Once we get more than 4 items written in each file we need a new file. 
    // This can happen maximum 11 times for each session 
    if ($i == 5) { 
     createFiles(); 
    } 
    if ($i == 9) { 
     createFiles(); 
    } 
    if ($i == 13) { 
     createFiles(); 
    } 
    if ($i == 17) { 
     createFiles(); 
    } 
    etc...... 
    if($i == 49) { 
     echo "<br />Maximum of 12 pages hit. Time to delete a few"; 
    } 

?> 
+2

Какие ошибки у вас возникают? –

+0

'$ buildPath $ filename' to' $ buildPath. $ Filename' –

+1

Какое указание у вас есть, что это не работает должным образом? Какую попытку вы попытались сузить проблему? – David

ответ

2

$i, если она равна, и эта часть работает.

Если эта часть работает, то вы не показываете весь свой код!

Возьмем такой пример, который в основном такой же, как то, что вы делаете:

function createFiles() 
{ 
    $i = 3; 
} 


if ($i == 3) 
{ 
    createFiles(); 
    echo "is 3"; 
} 
else 
{ 
    echo "is not 3"; 
} 

Это будет ВСЕГДА эхо «не 3». Параметр var не задан, так как тот, который задан в функции, является A) Не в пределах одной и той же глобальной области, и B) функция никогда не вызывалась.

Как можно манипулировать var внутри функции в коде вне функции, если эта функция должна быть вызвана, если параметр var внутри функции установлен на что-то?
это улов 22.

Ваш вызов функции createFiles() будет выполнять только если $i == 1, и код, который вы размещены не устанавливает, что вар, он всегда будет нулевым или отключенное (и т.д.).
Это означает, что ваш оператор if, который вызывает функцию, никогда не будет работать и всегда возвращает FALSE, и поэтому функция никогда не будет вызываться.

Вы также должны понимать глобальную сферу действия, в том, что в пределах функции функция остается внутри функции, а любая внешняя функция является отдельной.
По существу, у вас в настоящее время есть два vars, один внутри функции и один за его пределами, хотя оба они называются $i, их глобальная область не выходит замуж, поэтому они никогда не взаимодействуют друг с другом.

Вы можете передать var в функцию, чтобы позволить vars и их данные вне функции, которая будет использоваться внутри функции, и возвращать одну из функции для использования данных вне функции.

Кроме того, каждый раз, когда пользователь использует ваш код, любые вары будут сброшены, то есть ваша группа if s, чтобы определить, будут ли они использовать X раз, не будет работать по желанию.
Вы не можете сделать эту клиентскую сторону.

Вы можете установить сеанс или файл cookie, но клиент может легко обойти это, если захочет (очистка данных браузера).
Если вы действительно хотите их ограничить, вам понадобится постоянный метод хранения данных, к которому у клиента нет доступа - либо файл, либо более твердый метод - это увеличение значения базы данных.
Затем, если они снова смогут использовать форму на следующий день, cron может пропустить стол и прояснить по мере необходимости.

EDIT
Чтобы получить ваш сценарий работает, попробуйте представляя несколько этапов, чтобы сделать его простым.

Stage1: Получить функцию, действующую самостоятельно, добавив файлы (или для чего-то еще).
Этап2: Управляйте функцией, которая вызывается, как вы хотите - то есть только функция вызова, если пользователь использовал функцию < 10 (и т. Д.).

Вы можете даже сломать stage1 на несколько подэтапов, в Stage1a, получить доступ к правильной директории; Stage1b, получить доступ к файлам функций; Stage1c, получить функцию записи в файлы и т. Д.

Старайтесь избегать написания сценария с множеством функциональных возможностей за один раз и разбить его на управляемые логические куски. Выполнение этого также поможет вам разобраться в разных проблемах.

+0

Кто-то удалил мой пост. Я нашел ошибку. Это было «вокруг«/$ area »и« .php »- я меняю его на кавычки», и все работает. Спасибо за всю помощь. – bpross

+0

Опять же, если он работает, то вы не показали нам всех код, так как ваш код в вашем вопросе просто ничего не сделает, ничего. Рад, что вы отсортированы, хотя :) – James

0

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

Глупая ошибка. Я не знаю, как вы, ребята, можете это делать все время. Это первый раз, когда я перепутал функцию в php и провел весь день на ней. Но он работает, поэтому я решил, что буду делиться изменениями для всех.

function createFiles() { 

extract($GLOBALS); 

    for ($n = 1; $n < 45; ++$n) { 
     $filename = $buildPath . $area . sprintf("%02s", $n) . '.php'; 
     $filenameb = $area . sprintf("%02s", $n) . '.php'; 
            //^ length of number you need, 2 in this case 
     if (!file_exists($filename)) { 
     $myfile = fopen($filename, "w") or die("Unable to open item$i file!"); 
     fwrite($myfile, $txt1); 
     fwrite($myfile, $addtitle); 
     fwrite($myfile, $incltxt); 
     fclose($myfile); 
     chmod("$filename", 0755); 
    } 
     break; 
    } 
if (!file_exists("$dirPath"."delete.page.php")) { 
    $myfile = fopen("$dirPath"."delete.page.php", "w") or die("Unable to open file!"); 
    $txt = "<option value=\"\">Select Page to Delete......</option>\n 
      <option value=\"generalinfo.php\">General Information Page.</option>\n 
      <option value=\"$filenameb\">$area Pg. $n</option>\n"; 
    fwrite($myfile, $txt); 
    fclose($myfile); 
    chmod("$dirPath"."delete.page.php", 0755); 
} 
else 
    { 
    $myfile = fopen("$dirPath"."delete.page.php", "a") or die("Unable to open file!"); 
    $txt = "<option value=\"$filenameb\">$area Pg. $n</option>\n"; 
    fwrite($myfile, $txt); 
    fclose($myfile); 
    chmod("$dirPath"."delete.page.php", 0755); 
    } 
return true; 

if ($i == 1) { 
    createFiles(); 
} 
// Once we get more than 4 items written in each file we need a new file. 
// This can happen maximum 11 times for each session 
if ($i == 5) { 
    createFiles(); 
} 
if ($i == 9) { 
    createFiles(); 
} 
if ($i == 13) { 
    createFiles(); 
} 
if ($i == 17) { 
    createFiles(); 
} 
etc...... 
if($i == 49) { 
    echo "<br />Maximum of 12 pages hit. Time to delete a few"; 
Смежные вопросы