2013-09-25 4 views
0

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

Я посмотрел здесь: PHP: how to avoid redeclaring functions?

После просмотра этого я изменил мой код:

  <?php 

      include_once('resource/buildtalentpage.php'); 

      while($row = mysqli_fetch_array($result2)) { 
      echo getTalentDetails($row); 
      } 

      ?> 




/////////// Loads of HTML /////////// 




      <?php 

      include_once('resource/buildtalentpage.php'); 

      while($row = mysqli_fetch_array($result2)) { 
      echo getTalent($row); 
      } 

      ?> 

Хорошая новость заключается в том, я не получаю ошибку больше. Плохая новость заключается в том, что функция getTalent больше не называется?

+7

Вам не нужно включать 'resource/buildtalentpage.php' дважды. –

+0

Какой код находится в ресурсе/buildtalentpage.php? –

+0

Вам нужно разделить файлы php-файлов (1), которые _declare_ clases, константы, функции (которые должны быть '* _once''d. (2) Файлы, которые _do_ stuff (что НЕ должно быть' * _once''d. Скорее всего, вы хотите перенести определение функции getTalent() 'в другой файл, используя' include_once' в _buildtalentpage.php_, чтобы включить туда определение (похоже, что это делает и другие вещи, которые должны запускаться на _every_ ' include'). – Wrikken

ответ

1

Результирующий набор из mysql не получает сброс, поэтому ваше второе условие цикла возвращает false в первый раз, поэтому код никогда не вызывается. Самое легкое, что нужно сделать здесь, - это выполнить всю вашу работу в одном цикле.

<?php 

    include_once('resource/buildtalentpage.php'); 
    $talentHtml = ""; 
    while($row = mysqli_fetch_array($result2)) { 
     echo getTalentDetails($row); 
     $talentHtml.= getTalent($row); 
    } 

    ?> 

/////////// Loads of HTML /////////// 

<?php 
    echo $talentHtml; 
+0

Ahhh, так что это петля с конца, т. Е. Ничего? Это имеет смысл. – Mcam435

0

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

+0

Это две разные функции с похожими именами. – Mcam435

+0

Я имел в виду include_once, что у вас есть два раза на странице. Предположительно обе функции определены во включенном файле? – PiX06

+0

Да, это правильно. Проблема в том, что если у меня нет 'include' или' include_once', функция, похоже, игнорируется? – Mcam435

Смежные вопросы